예제 #1
0
        public void TestThatGetTargetValueWithMapperGetsTargetValueFromMapper()
        {
            var fieldMock = MockRepository.GenerateMock <IField>();

            fieldMock.Expect(m => m.DatatypeOfSource)
            .Return(typeof(string))
            .Repeat.Any();
            fieldMock.Expect(m => m.Map)
            .Return(null)
            .Repeat.Any();
            Assert.That(fieldMock, Is.Not.Null);

            var mapperMock = MockRepository.GenerateMock <IMap>();

            mapperMock.Expect(m => m.MapValue <string, string>(Arg <string> .Is.NotNull))
            .Return(null)
            .Repeat.Any();

            var dataObject = new MyDataObject(fieldMock, new Fixture());

            Assert.That(dataObject, Is.Not.Null);

            var targetValue = dataObject.GetTargetValue <string>(mapperMock);

            Assert.That(targetValue, Is.Null);

            fieldMock.AssertWasCalled(m => m.DatatypeOfSource);
            fieldMock.AssertWasCalled(m => m.Map);
            mapperMock.AssertWasCalled(m => m.MapValue <string, string>(Arg <string> .Is.NotNull));
        }
예제 #2
0
        public void TestThatGetTargetValueWithMapperGetsOriginalTargetValueIfAnDeliveryEngineMappingExceptionOccurs()
        {
            var fixture = new Fixture();

            fixture.Customize <IDeliveryEngineMappingExceptionInfo>(e => e.FromFactory(() => MockRepository.GenerateMock <IDeliveryEngineMappingExceptionInfo>()));

            var fieldMock = MockRepository.GenerateMock <IField>();

            fieldMock.Expect(m => m.DatatypeOfSource)
            .Return(typeof(string))
            .Repeat.Any();
            fieldMock.Expect(m => m.Map)
            .Return(null)
            .Repeat.Any();
            Assert.That(fieldMock, Is.Not.Null);

            var mapperMock = MockRepository.GenerateMock <IMap>();

            mapperMock.Expect(m => m.MapValue <string, string>(Arg <string> .Is.NotNull))
            .Throw(fixture.CreateAnonymous <DeliveryEngineMappingException>())
            .Repeat.Any();

            var dataObject = new MyDataObject(fieldMock, new Fixture());

            Assert.That(dataObject, Is.Not.Null);

            var targetValue = dataObject.GetTargetValue <string>(mapperMock);

            Assert.That(targetValue, Is.Not.Null);
            Assert.That(targetValue, Is.Not.Empty);

            fieldMock.AssertWasCalled(m => m.DatatypeOfSource);
            fieldMock.AssertWasCalled(m => m.Map);
            mapperMock.AssertWasCalled(m => m.MapValue <string, string>(Arg <string> .Is.NotNull));
        }
예제 #3
0
        public void TestThatGetTargetValueGetsUnmappedTargetValueWhereSourceValueIsNotNullAndTypeOfTargetIsNullable()
        {
            var fieldMock = MockRepository.GenerateMock <IField>();

            fieldMock.Expect(m => m.DatatypeOfSource)
            .Return(typeof(string))
            .Repeat.Any();
            fieldMock.Expect(m => m.Map)
            .Return(null)
            .Repeat.Any();
            Assert.That(fieldMock, Is.Not.Null);

            var fixture = new Fixture();

            fixture.Customize <string>(e => e.FromFactory(() => fixture.CreateAnonymous <int>().ToString(CultureInfo.InvariantCulture)));
            var dataObject = new MyDataObject(fieldMock, fixture);

            Assert.That(dataObject, Is.Not.Null);

            var targetValue = dataObject.GetTargetValue <int?>();

            Assert.That(targetValue, Is.Not.Null);

            fieldMock.AssertWasCalled(m => m.DatatypeOfSource);
            fieldMock.AssertWasCalled(m => m.Map);
        }
예제 #4
0
        public void TestThatGetTargetValueGetsUnmappedTargetValueWhereSourceValueIsNullAndTypeOfTargetIsNullable()
        {
            var fieldMock = MockRepository.GenerateMock <IField>();

            fieldMock.Expect(m => m.DatatypeOfSource)
            .Return(typeof(DateTime?))
            .Repeat.Any();
            fieldMock.Expect(m => m.Map)
            .Return(null)
            .Repeat.Any();
            Assert.That(fieldMock, Is.Not.Null);

            var fixture = new Fixture();

            fixture.Inject <DateTime?>(null);
            var dataObject = new MyDataObject(fieldMock, fixture);

            Assert.That(dataObject, Is.Not.Null);

            var targetValue = dataObject.GetTargetValue <DateTime?>();

            Assert.That(targetValue, Is.Null);

            fieldMock.AssertWasCalled(m => m.DatatypeOfSource);
            fieldMock.AssertWasCalled(m => m.Map);
        }
예제 #5
0
        public void TestThatGetTargetValueThrowsDeliveryEngineMappingExceptionWithInnerExceptionIfDeliveryEngineMappingExceptionOccursInMapper()
        {
            var fixture = new Fixture();

            fixture.Customize <IDeliveryEngineMappingExceptionInfo>(e => e.FromFactory(() => MockRepository.GenerateMock <IDeliveryEngineMappingExceptionInfo>()));

            var mapException = fixture.CreateAnonymous <DeliveryEngineMappingException>();
            var mapMock      = MockRepository.GenerateMock <IMap>();

            mapMock.Expect(m => m.MapValue <string, string>(Arg <string> .Is.NotNull))
            .Throw(mapException)
            .Repeat.Any();

            var tableMock = MockRepository.GenerateMock <ITable>();

            tableMock.Expect(m => m.NameTarget)
            .Return(fixture.CreateAnonymous <string>())
            .Repeat.Any();

            var fieldMock = MockRepository.GenerateMock <IField>();

            fieldMock.Expect(m => m.Table)
            .Return(tableMock)
            .Repeat.Any();
            fieldMock.Expect(m => m.NameTarget)
            .Return(fixture.CreateAnonymous <string>())
            .Repeat.Any();
            fieldMock.Expect(m => m.DatatypeOfSource)
            .Return(typeof(string))
            .Repeat.Any();
            fieldMock.Expect(m => m.Map)
            .Return(mapMock)
            .Repeat.Any();
            Assert.That(fieldMock, Is.Not.Null);

            var dataObject = new MyDataObject(fieldMock, new Fixture());

            Assert.That(dataObject, Is.Not.Null);

            var exception = Assert.Throws <DeliveryEngineMappingException>(() => dataObject.GetTargetValue <string>());

            Assert.That(exception, Is.Not.Null);
            Assert.That(exception.Message, Is.Not.Null);
            Assert.That(exception.Message, Is.Not.Empty);
            Assert.That(exception.Message, Is.StringStarting(Resource.GetExceptionMessage(ExceptionMessage.UnableToMapValueForField, dataObject.GetSourceValue <string>(), fieldMock.NameTarget, tableMock.NameTarget, string.Empty)));

            var innerException = exception.InnerException;

            Assert.That(innerException, Is.Not.Null);
            Assert.That(innerException, Is.TypeOf <DeliveryEngineMappingException>());
            Assert.That(innerException.Message, Is.Not.Null);
            Assert.That(innerException.Message, Is.Not.Empty);

            fieldMock.AssertWasCalled(m => m.NameTarget);
            tableMock.AssertWasCalled(m => m.NameTarget);
        }
예제 #6
0
        public void TestThatGetTargetValueForUnmappedValueThrowsDeliveryEngineSystemExceptionIfParseFails()
        {
            var fixture = new Fixture();

            var tableMock = MockRepository.GenerateMock <ITable>();

            tableMock.Expect(m => m.NameTarget)
            .Return(fixture.CreateAnonymous <string>())
            .Repeat.Any();

            var fieldMock = MockRepository.GenerateMock <IField>();

            fieldMock.Expect(m => m.NameTarget)
            .Return(fixture.CreateAnonymous <string>())
            .Repeat.Any();
            fieldMock.Expect(m => m.Table)
            .Return(tableMock)
            .Repeat.Any();
            fieldMock.Expect(m => m.DatatypeOfSource)
            .Return(typeof(string))
            .Repeat.Any();
            fieldMock.Expect(m => m.Map)
            .Return(null)
            .Repeat.Any();
            Assert.That(fieldMock, Is.Not.Null);

            var dataObject = new MyDataObject(fieldMock, fixture);

            Assert.That(dataObject, Is.Not.Null);

            var exception = Assert.Throws <DeliveryEngineSystemException>(() => dataObject.GetTargetValue <int?>());

            Assert.That(exception, Is.Not.Null);
            Assert.That(exception.Message, Is.Not.Null);
            Assert.That(exception.Message, Is.Not.Empty);
            Assert.That(exception.InnerException, Is.Not.Null);

            fieldMock.AssertWasCalled(m => m.DatatypeOfSource);
            fieldMock.AssertWasCalled(m => m.Map);
            fieldMock.AssertWasCalled(m => m.NameTarget);

            tableMock.AssertWasCalled(m => m.NameTarget);
        }
예제 #7
0
        public void TestThatGetTargetValueGetsUnmappedTargetValueWhereDatatypeOfSourceIsNotEqualToTypeOfTargetValueAndTypeOfTargetValueIsNotString()
        {
            var fieldMock = MockRepository.GenerateMock <IField>();

            fieldMock.Expect(m => m.DatatypeOfSource)
            .Return(typeof(int))
            .Repeat.Any();
            fieldMock.Expect(m => m.Map)
            .Return(null)
            .Repeat.Any();
            Assert.That(fieldMock, Is.Not.Null);

            var dataObject = new MyDataObject(fieldMock, new Fixture());

            Assert.That(dataObject, Is.Not.Null);

            var targetValue = dataObject.GetTargetValue <decimal>();

            Assert.That(targetValue, Is.GreaterThan(0M));

            fieldMock.AssertWasCalled(m => m.DatatypeOfSource);
            fieldMock.AssertWasCalled(m => m.Map);
        }