public async Task ParsesThroughGlobalDataTransformer()
            {
                var rdr = new Mock <DbDataReader>();

                rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(int));
                rdr.Setup(r => r.GetValue(0)).Returns(99);
                rdr.SetupSequence(r => r.ReadAsync(It.IsAny <CancellationToken>()))
                .ReturnsAsync(true)
                .ReturnsAsync(false);

                var xformer = new Mock <IDataTransformer>();

                xformer.Setup(x => x.CanTransform(99, typeof(int), false, It.Is <IEnumerable <Attribute> >(attrs => attrs != null)))
                .Returns(true);
                xformer.Setup(x => x.Transform(99, typeof(int), false, It.Is <IEnumerable <Attribute> >(attrs => attrs != null)))
                .Returns(42);

                using (GlobalSettings.UseTestInstance())
                {
                    StoredProcedure.AddGlobalTransformer(xformer.Object);
                    var toTest = new SimpleTypeRowFactory <int>();

                    var res = await toTest.ParseRowsAsync(rdr.Object, new IDataTransformer[0], CancellationToken.None);

                    res.Single().Should().Be(42);
                }
            }
Exemplo n.º 2
0
            public void ReturnsNullableEnumValuesViaNameTransformsBeforeParsing_WithGlobalTransformer()
            {
                using (GlobalSettings.UseTestInstance())
                {
                    var rdr = new Mock <IDataReader>();
                    rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(string));
                    rdr.SetupSequence(r => r.IsDBNull(0))
                    .Returns(false)
                    .Returns(true)
                    .Returns(false)
                    .Returns(false);
                    rdr.SetupSequence(r => r.GetString(0))
                    .Returns("Blah")
                    .Returns("Two")
                    .Returns("Zero");
                    rdr.SetupSequence(r => r.Read())
                    .Returns(true)
                    .Returns(true)
                    .Returns(true)
                    .Returns(true)
                    .Returns(false);

                    var toTest = RowFactory <IntEnum?> .Create();

                    var xf = new Mock <IDataTransformer>();
                    xf.Setup(x => x.CanTransform("Blah", typeof(IntEnum), true, It.Is <IEnumerable <Attribute> >(attrs => attrs != null)))
                    .Returns(true);
                    xf.Setup(x => x.Transform("Blah", typeof(IntEnum), true, It.Is <IEnumerable <Attribute> >(attrs => attrs != null)))
                    .Returns("One");

                    StoredProcedure.AddGlobalTransformer(xf.Object);
                    toTest.ParseRows(rdr.Object, new IDataTransformer[0], CancellationToken.None)
                    .Should().ContainInOrder(IntEnum.One, null, IntEnum.Two, IntEnum.Zero);
                }
            }
            public void GlobalIDataTransformer_TransformsData()
            {
                var rdr = new Mock <IDataReader>();

                rdr.Setup(r => r.FieldCount).Returns(1);
                rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(string));
                rdr.Setup(r => r.GetName(0)).Returns("Name");
                rdr.Setup(r => r.GetValues(It.IsAny <object[]>()))
                .Callback <object[]>(os => os[0] = "Blah");
                rdr.SetupSequence(r => r.Read())
                .Returns(true)
                .Returns(false);

                var xf = new Mock <IDataTransformer>();

                xf.Setup(x => x.CanTransform("Blah", typeof(string), true, It.IsAny <IEnumerable <Attribute> >()))
                .Returns(true);
                xf.Setup(x => x.Transform("Blah", typeof(string), true, It.IsAny <IEnumerable <Attribute> >()))
                .Returns("foobar");

                using (GlobalSettings.UseTestInstance())
                {
                    StoredProcedure.AddGlobalTransformer(xf.Object);

                    var toTest = new ExpandoObjectRowFactory <dynamic>();
                    var res    = toTest.ParseRows(rdr.Object, new IDataTransformer[0], CancellationToken.None);

                    var item = res.Should().ContainSingle("because only 1 row should have been returned").Which;
                    ((string)item.Name).Should().Be("foobar", "because it should have been transformed");
                }
            }
Exemplo n.º 4
0
            public void ReturnsEnumViaNameTransformsStringBeforeParsing_WithGlobalTransformer()
            {
                using (GlobalSettings.UseTestInstance())
                {
                    var rdr = new Mock <IDataReader>();
                    rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(string));
                    rdr.Setup(r => r.GetString(0)).Returns("One");
                    rdr.SetupSequence(r => r.Read())
                    .Returns(true)
                    .Returns(false);

                    var toTest = new EnumRowFactory <IntEnum>();
                    var xf     = new Mock <IDataTransformer>();
                    xf.Setup(x => x.CanTransform("One", typeof(IntEnum), false, It.Is <IEnumerable <Attribute> >(attrs => attrs != null)))
                    .Returns(true);
                    xf.Setup(x => x.Transform("One", typeof(IntEnum), false, It.Is <IEnumerable <Attribute> >(attrs => attrs != null)))
                    .Returns("Two");

                    StoredProcedure.AddGlobalTransformer(xf.Object);

                    toTest.ParseRows(rdr.Object, new IDataTransformer[0], CancellationToken.None)
                    .Single().Should().Be(IntEnum.Two);
                }
            }