public void AppendsAuditEntryWithExpectedTimeOfExecution()
        {
            // Arrange
            var context      = new SpyCommerceContext();
            var timeProvider = new StubTimeProvider {
                Now = DateTime.Parse("2018-12-17")
            };

            AuditingCommandServiceDecorator <object> sut =
                CreateAuditingDecorator <object>(timeProvider: timeProvider, context: context);

            // Act
            sut.Execute(command: new object());

            // Assert
            Assert.Equal(
                expected: timeProvider.Now,
                actual: GetAppendedAuditEntry(context).TimeOfExecution);
        }
        public void AppendsAuditEntryWithExpectedUserId()
        {
            // Arrange
            var context     = new SpyCommerceContext();
            var userContext = new StubUserContext {
                CurrentUserId = Guid.NewGuid()
            };

            AuditingCommandServiceDecorator <object> sut =
                CreateAuditingDecorator <object>(userContext: userContext, context: context);

            // Act
            sut.Execute(command: new object());

            // Assert
            Assert.Equal(
                expected: userContext.CurrentUserId,
                actual: GetAppendedAuditEntry(context).UserId);
        }
예제 #3
0
        public void ExecuteWillSaveChangesAfterInvokingTheDecoratee()
        {
            // Arrange
            var context   = new SpyCommerceContext();
            var decoratee = new SpyCommandService <object>();

            var sut = new SaveChangesCommandServiceDecorator <object>(context, decoratee);

            decoratee.Executed += () =>
            {
                // Decoratee should be invoked before changes are saved
                Assert.False(context.HasChangedSaved);
            };

            // Act
            sut.Execute(command: new object());

            // Assert
            Assert.True(context.HasChangedSaved);
            Assert.True(decoratee.ExecutedOnce);
        }