コード例 #1
0
        public void MetaDataProvider_resolves_valid_meta_data()
        {
            SetupDependencies();

            var myTestEntity = new MyTestEntity();
            var expectedDate = new DateTime(2017, 01, 01, 12, 30, 00);

            _metaDataProvider = new MetaDataProvider(_clockProviderMock.Object);
            _clockProviderMock.Setup(clockProvider => clockProvider.DateTime).Returns(expectedDate);

            _metaDataProvider.ResolveMetaData(myTestEntity, true);

            Assert.AreEqual(expectedDate, myTestEntity.Created);
            Assert.AreEqual(expectedDate, myTestEntity.Modified);
            Assert.AreEqual(true, myTestEntity.IsActive);

            var expectedNewDate = new DateTime(2017, 01, 01, 13, 30, 00);

            _clockProviderMock.Setup(clockProvider => clockProvider.DateTime).Returns(expectedNewDate);

            myTestEntity.IsActive = false;

            _metaDataProvider.ResolveMetaData(myTestEntity, false);

            Assert.AreEqual(expectedDate, myTestEntity.Created);
            Assert.AreEqual(expectedNewDate, myTestEntity.Modified);
            Assert.AreEqual(false, myTestEntity.IsActive);
        }
コード例 #2
0
        public void Run_throws_Exception()
        {
            var expectedDate = new DateTime(2018, 01, 01);

            var myEntity = new MyTestEntity();

            var systemUnderTest =
                ConditionalException <MyTestEntity> .Create(
                    async(myTestEntity) => await Task.FromResult(myTestEntity.Created.Equals(expectedDate)),
                    typeof(InvalidTimeZoneException));

            Assert.ThrowsAsync <InvalidTimeZoneException>(async() => await systemUnderTest.Run(myEntity));
        }
コード例 #3
0
        public void Update_fails()
        {
            SetupDependencies(new List <MyTestEntity>());

            var myAddedTestEntity = new MyTestEntity {
                Id = 1
            };

            Assert.Throws <ArgumentException>(() =>
            {
                _systemUnderTest.Update(myAddedTestEntity);
                _systemUnderTest.Update(myAddedTestEntity);
            });
        }
コード例 #4
0
        public void MetaDataProvider_throws()
        {
            SetupDependencies();

            var myTestEntity = new MyTestEntity();

            _metaDataProvider = new MetaDataProvider(_clockProviderMock.Object);

            Assert.Throws <ArgumentNullException>(() => { _metaDataProvider.ResolveMetaData(default(MyTestEntity), false); });
            Assert.Throws <ArgumentNullException>(() => { _metaDataProvider.ResolveMetaData(myTestEntity, false); });

            _clockProviderMock.Setup(clockProvider => clockProvider.DateTime).Returns(new DateTime(2017, 01, 01, 12, 30, 0));

            Assert.Throws <InvalidOperationException>(() => { _metaDataProvider.ResolveMetaData(myTestEntity, false); });
        }
コード例 #5
0
        public void Update_success()
        {
            SetupDependencies(new List <MyTestEntity>());

            var myAddedTestEntity = new MyTestEntity {
                Id = 1
            };

            _systemUnderTest.Update(myAddedTestEntity);

            var addedInMemoryListItem = _systemUnderTest["MyTestEntity::1"];

            Assert.IsNotNull(
                addedInMemoryListItem);

            Assert.AreEqual(ItemState.Updated, addedInMemoryListItem.ItemState);
        }
コード例 #6
0
        public void RunConditionalPattern_when_entity_is_null_throws_exception()
        {
            var expectedDate = new DateTime(2018, 01, 01);
            var myTestEntity = new MyTestEntity();

            Assert.ThrowsAsync <ArgumentNullException>(async() => {
                await ConditionalPattern <MyTestEntity> .RunConditionalPattern(null,
                                                                               async(testEntity) => await Task.FromResult(testEntity.Created.Equals(expectedDate)),
                                                                               async(testEntity) =>
                {
                    await Task.Delay(1);
                    return(myTestEntity);
                },
                                                                               async(testEntity) =>
                {
                    await Task.Delay(1);
                });
            });
        }
コード例 #7
0
        public async Task RunConditionalPattern_with_one_patternConditionalDelegates_calls_run()
        {
            _conditionalExceptionMock = new Mock <IConditionalException <MyTestEntity> >();
            _conditionalExceptionMock.Setup(a => a.Run(It.IsAny <MyTestEntity>())).Returns(Task.FromResult(true)).Verifiable();

            var myTestEntity = new MyTestEntity();
            await ConditionalPattern <MyTestEntity> .RunConditionalPattern(myTestEntity, async (testEntity) =>
            {
                await Task.Delay(1);
                return(testEntity);
            },
                                                                           async (testEntity) =>
            {
                await Task.Delay(1);
            },
                                                                           _conditionalExceptionMock.Object);

            _conditionalExceptionMock.Verify(a => a.Run(It.IsAny <MyTestEntity>()), Times.Exactly(1));
        }
コード例 #8
0
        public async Task RunConditionalPattern_when_patternConditionalDelegates_invokes_passDelegate()
        {
            _conditionalExceptionMock = new Mock <IConditionalException <MyTestEntity> >();
            _conditionalExceptionMock.Setup(a => a.Run(It.IsAny <MyTestEntity>())).Returns(Task.FromResult(true));
            var myTestEntity = new MyTestEntity();

            await ConditionalPattern <MyTestEntity> .RunConditionalPattern(myTestEntity,
                                                                           async (testEntity) =>
            {
                await Task.Delay(1);
                Assert.Pass();
                return(testEntity);
            },
                                                                           async (testEntity) =>
            {
                await Task.Delay(1);
                Assert.Fail();
            },
                                                                           _conditionalExceptionMock.Object);
        }
コード例 #9
0
        public async Task RunConditionalPattern_when_entity_is_not_null_calls_fail()
        {
            var expectedDate = new DateTime(2018, 01, 01);
            var myTestEntity = new MyTestEntity();

            var failCalled = false;

            await ConditionalPattern <MyTestEntity> .RunConditionalPattern(myTestEntity,
                                                                           async (testEntity) => await Task.FromResult(testEntity.Created.Equals(expectedDate)),
                                                                           async (testEntity) =>
            {
                await Task.Delay(1);
                return(myTestEntity);
            },
                                                                           async (testEntity) =>
            {
                failCalled = true;
                await Task.Delay(1);
            });

            Assert.True(failCalled);
        }
コード例 #10
0
        public void RunConditionalPattern_when_patternConditionalDelegates_throws_exception()
        {
            _conditionalExceptionMock = new Mock <IConditionalException <MyTestEntity> >();
            _conditionalExceptionMock.Setup(a => a.Run(It.IsAny <MyTestEntity>())).Throws <InvalidOperationException>();
            var myTestEntity = new MyTestEntity();

            Assert.ThrowsAsync <InvalidOperationException>(async() =>
            {
                await ConditionalPattern <MyTestEntity> .RunConditionalPattern(myTestEntity,
                                                                               async(testEntity) =>
                {
                    await Task.Delay(1);
                    Assert.Fail();
                    return(testEntity);
                },
                                                                               async(testEntity) =>
                {
                    await Task.Delay(1);
                    Assert.Pass();
                },
                                                                               _conditionalExceptionMock.Object);
            });
        }