public void BeginsLifetimeScope_WhenCurrentLifetimeScope_IsNull()
 {
     var command = new FakeCommandWithValidator();
     var decorated = new Mock<IHandleCommand<FakeCommandWithValidator>>(MockBehavior.Strict);
     decorated.Setup(x => x.Handle(command)).Returns(Task.FromResult(0));
     var decorator = new CommandLifetimeScopeDecorator<FakeCommandWithValidator>(Container, () => decorated.Object);
     Container.GetCurrentLifetimeScope().ShouldEqual(null);
     decorator.Handle(command);
     Container.GetCurrentLifetimeScope().ShouldEqual(null);
     decorated.Verify(x => x.Handle(command), Times.Once);
 }
        public void BeginsLifetimeScope_WhenCurrentLifetimeScope_IsNull()
        {
            var command = new FakeCommandWithValidator();
            var decorated = new Mock<IHandleCommand<FakeCommandWithValidator>>(MockBehavior.Strict);
            decorated.Setup(x => x.Handle(command));

            var decorator = new CommandLifetimeScopeDecorator<FakeCommandWithValidator>(_fixture.Container, () => decorated.Object);
            Assert.Equal(null, _fixture.Container.GetCurrentLifetimeScope());
            decorator.Handle(command);

            Assert.Equal(null, _fixture.Container.GetCurrentLifetimeScope());
            decorated.Verify(x => x.Handle(command), Times.Once);
        }
        public void BeginsLifetimeScope_WhenCurrentLifetimeScope_IsNull()
        {
            var command   = new FakeCommandWithValidator();
            var decorated = new Mock <IHandleCommand <FakeCommandWithValidator> >(MockBehavior.Strict);

            decorated.Setup(x => x.Handle(command)).Returns(Task.FromResult(0));

            var decorator = new CommandLifetimeScopeDecorator <FakeCommandWithValidator>(_fixture.Container, () => decorated.Object);

            Assert.Equal(null, _fixture.Container.GetCurrentLifetimeScope());
            decorator.Handle(command);

            Assert.Equal(null, _fixture.Container.GetCurrentLifetimeScope());
            decorated.Verify(x => x.Handle(command), Times.Once);
        }
        public void Handle_InvokesDecoratedHandle_WhenValidationPasses()
        {
            var command = new FakeCommandWithValidator();
            var decorated = new Mock<IHandleCommand<FakeCommandWithValidator>>(MockBehavior.Strict);
            var validator = new Mock<IValidator<FakeCommandWithValidator>>(MockBehavior.Strict);
            Expression<Func<FakeCommandWithValidator, bool>> expectedCommand = x => ReferenceEquals(x, command);
            var expectedResult = new ValidationResult();
            validator.Setup(x => x.Validate(It.Is(expectedCommand))).Returns(expectedResult);
            decorated.Setup(x => x.Handle(It.Is(expectedCommand))).Returns(Task.FromResult(0));
            var decorator = new ValidateCommandDecorator<FakeCommandWithValidator>(decorated.Object, validator.Object);

            decorator.Handle(command).Wait();

            validator.Verify(x => x.Validate(It.Is(expectedCommand)), Times.Once);
            decorated.Verify(x => x.Handle(It.Is(expectedCommand)), Times.Once);
        }
        public void Handle_ThrowsValidationException_AndDoesNotInvokeDecoratedHandle_WhenValidationFails()
        {
            var command = new FakeCommandWithValidator();
            var decorated = new Mock<IHandleCommand<FakeCommandWithValidator>>(MockBehavior.Strict);
            var validator = new Mock<IValidator<FakeCommandWithValidator>>(MockBehavior.Strict);
            Expression<Func<FakeCommandWithValidator, bool>> expectedCommand = x => ReferenceEquals(x, command);
            var expectedResult = new ValidationResult(new[] { new ValidationFailure("Name", "Invalid.", command.ReturnValue), });
            validator.Setup(x => x.Validate(It.Is(expectedCommand))).Returns(expectedResult);
            var decorator = new ValidateCommandDecorator<FakeCommandWithValidator>(decorated.Object, validator.Object);

            var exception = Assert.Throws<ValidationException>(() => decorator.Handle(command));

            exception.ShouldNotBeNull();
            validator.Verify(x => x.Validate(It.Is(expectedCommand)), Times.Once);
            decorated.Verify(x => x.Handle(It.IsAny<FakeCommandWithValidator>()), Times.Never);
        }
Exemplo n.º 6
0
        public void Handle_ThrowsValidationException_AndDoesNotInvokeDecoratedHandle_WhenValidationFails()
        {
            var command   = new FakeCommandWithValidator();
            var decorated = new Mock <IHandleCommand <FakeCommandWithValidator> >(MockBehavior.Strict);
            var validator = new Mock <IValidator <FakeCommandWithValidator> >(MockBehavior.Strict);
            Expression <Func <FakeCommandWithValidator, bool> > expectedCommand = x => ReferenceEquals(x, command);

            var expectedResult = new ValidationResult(new[] { new ValidationFailure("Name", "Invalid.", command.ReturnValue), });

            validator.Setup(x => x.Validate(It.Is(expectedCommand))).Returns(expectedResult);
            var decorator = new ValidateCommandDecorator <FakeCommandWithValidator>(decorated.Object, validator.Object);
            var exception = Assert.Throws <ValidationException>(() => decorator.Handle(command));

            Assert.NotNull(exception);
            validator.Verify(x => x.Validate(It.Is(expectedCommand)), Times.Once);
            decorated.Verify(x => x.Handle(It.IsAny <FakeCommandWithValidator>()), Times.Never);
        }
Exemplo n.º 7
0
        public void Handle_InvokesDecoratedHandle_WhenValidationPasses()
        {
            var command   = new FakeCommandWithValidator();
            var decorated = new Mock <IHandleCommand <FakeCommandWithValidator> >(MockBehavior.Strict);
            var validator = new Mock <IValidator <FakeCommandWithValidator> >(MockBehavior.Strict);
            Expression <Func <FakeCommandWithValidator, bool> > expectedCommand = x => ReferenceEquals(x, command);
            var expectedResult = new ValidationResult();

            validator.Setup(x => x.Validate(It.Is(expectedCommand))).Returns(expectedResult);
            decorated.Setup(x => x.Handle(It.Is(expectedCommand))).Returns(Task.FromResult(0));
            var decorator = new ValidateCommandDecorator <FakeCommandWithValidator>(decorated.Object, validator.Object);

            decorator.Handle(command).Wait();

            validator.Verify(x => x.Validate(It.Is(expectedCommand)), Times.Once);
            decorated.Verify(x => x.Handle(It.Is(expectedCommand)), Times.Once);
        }