public void DoNotRaiseEvent_AfterQueryIsExecuted_WhenQueryHasRaiseEventAttributeAndEnabledFalse()
        {
            var query = new FakeQueryWithoutValidator();

            Assert.IsAssignableFrom <IQuery <string> >(query);

            var eventProcessor = new Mock <IProcessEvents>(MockBehavior.Strict);

            eventProcessor.Setup(x => x.Raise(query));

            var attribute = new RaiseEventAttribute
            {
                Enabled = false
            };

            var decorated = new Mock <IHandleQuery <FakeQueryWithoutValidator, string> >(MockBehavior.Strict);
            var provider  = TypeDescriptor.AddAttributes(decorated.Object.GetType(), attribute);

            decorated.Setup(x => x.Handle(query)).Returns("faked");

            var decorator = new QueryEventProcessingDecorator <FakeQueryWithoutValidator, string>(eventProcessor.Object, () => decorated.Object);

            decorator.Handle(query);

            decorated.Verify(x => x.Handle(query), Times.Once);
            eventProcessor.Verify(x => x.Raise(It.IsAny <IEvent>()), Times.Never);

            // Clean up runtime added attributes
            TypeDescriptor.RemoveProvider(provider, decorated.Object.GetType());
        }
        public void BeginsLifetimeScope_WhenCurrentLifetimeScope_IsNull()
        {
            var query = new FakeQueryWithoutValidator();
            var decorated = new Mock<IHandleQuery<FakeQueryWithoutValidator, string>>(MockBehavior.Strict);
            decorated.Setup(x => x.Handle(query)).Returns("faked");
            var decorator = new QueryLifetimeScopeDecorator<FakeQueryWithoutValidator, string>(Container, () => decorated.Object);
            Container.GetCurrentLifetimeScope().ShouldEqual(null);

            var result = decorator.Handle(query);

            result.ShouldEqual("faked");
            decorated.Verify(x => x.Handle(query), Times.Once);
        }
        public void BeginsLifetimeScope_WhenCurrentLifetimeScope_IsNull()
        {
            var query     = new FakeQueryWithoutValidator();
            var decorated = new Mock <IHandleQuery <FakeQueryWithoutValidator, string> >(MockBehavior.Strict);

            decorated.Setup(x => x.Handle(query)).Returns("faked");
            var decorator = new QueryLifetimeScopeDecorator <FakeQueryWithoutValidator, string>(Container, () => decorated.Object);

            Container.GetCurrentLifetimeScope().ShouldEqual(null);

            var result = decorator.Handle(query);

            result.ShouldEqual("faked");
            decorated.Verify(x => x.Handle(query), Times.Once);
        }
        public void Handle_InvokesDecoratedHandle_WhenValidationPasses()
        {
            var query = new FakeQueryWithoutValidator();
            var decorated = new Mock<IHandleQuery<FakeQueryWithoutValidator, string>>(MockBehavior.Strict);
            var validator = new Mock<IValidator<FakeQueryWithoutValidator>>(MockBehavior.Strict);
            var expectedResult = new ValidationResult();
            validator.Setup(x => x.Validate(query)).Returns(expectedResult);
            decorated.Setup(x => x.Handle(query)).Returns("faked");

            var decorator = new ValidateQueryDecorator<FakeQueryWithoutValidator, string>(decorated.Object, validator.Object);
            var result = decorator.Handle(query);

            Assert.Equal("faked", result);
            validator.Verify(x => x.Validate(query), Times.Once);
            decorated.Verify(x => x.Handle(query), Times.Once);
        }
        public void Handle_ThrowsValidationException_AndDoesNotInvokeDecoratedHandle_WhenValidationFails()
        {
            var query = new FakeQueryWithoutValidator();
            var decorated = new Mock<IHandleQuery<FakeQueryWithoutValidator, string>>(MockBehavior.Strict);
            var validator = new Mock<IValidator<FakeQueryWithoutValidator>>(MockBehavior.Strict);
            Expression<Func<FakeQueryWithoutValidator, bool>> expectedQuery = x => ReferenceEquals(x, query);
            var expectedResult = new ValidationResult(new[] { new ValidationFailure("Name", "Invalid."), });
            validator.Setup(x => x.Validate(It.Is(expectedQuery))).Returns(expectedResult);
            var decorator = new ValidateQueryDecorator<FakeQueryWithoutValidator, string>(decorated.Object, validator.Object);

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

            exception.ShouldNotBeNull();
            validator.Verify(x => x.Validate(It.Is(expectedQuery)), Times.Once);
            decorated.Verify(x => x.Handle(It.IsAny<FakeQueryWithoutValidator>()), Times.Never);
        }
Exemplo n.º 6
0
        public void Handle_InvokesDecoratedHandle_WhenValidationPasses()
        {
            var query          = new FakeQueryWithoutValidator();
            var decorated      = new Mock <IHandleQuery <FakeQueryWithoutValidator, string> >(MockBehavior.Strict);
            var validator      = new Mock <IValidator <FakeQueryWithoutValidator> >(MockBehavior.Strict);
            var expectedResult = new ValidationResult();

            validator.Setup(x => x.Validate(query)).Returns(expectedResult);
            decorated.Setup(x => x.Handle(query)).Returns("faked");
            var decorator = new ValidateQueryDecorator <FakeQueryWithoutValidator, string>(decorated.Object, validator.Object);

            var result = decorator.Handle(query);

            result.ShouldEqual("faked");
            validator.Verify(x => x.Validate(query), Times.Once);
            decorated.Verify(x => x.Handle(query), Times.Once);
        }
Exemplo n.º 7
0
        public void Handle_ThrowsValidationException_AndDoesNotInvokeDecoratedHandle_WhenValidationFails()
        {
            var query     = new FakeQueryWithoutValidator();
            var decorated = new Mock <IHandleQuery <FakeQueryWithoutValidator, string> >(MockBehavior.Strict);
            var validator = new Mock <IValidator <FakeQueryWithoutValidator> >(MockBehavior.Strict);
            Expression <Func <FakeQueryWithoutValidator, bool> > expectedQuery = x => ReferenceEquals(x, query);
            var expectedResult = new ValidationResult(new[] { new ValidationFailure("Name", "Invalid."), });

            validator.Setup(x => x.Validate(It.Is(expectedQuery))).Returns(expectedResult);
            var decorator = new ValidateQueryDecorator <FakeQueryWithoutValidator, string>(decorated.Object, validator.Object);

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

            exception.ShouldNotBeNull();
            validator.Verify(x => x.Validate(It.Is(expectedQuery)), Times.Once);
            decorated.Verify(x => x.Handle(It.IsAny <FakeQueryWithoutValidator>()), Times.Never);
        }
        public void UsesCurrentLifetimeScope_WhenCurrentLifetimeScope_IsNotNull()
        {
            var query = new FakeQueryWithoutValidator();
            var decorated = new Mock<IHandleQuery<FakeQueryWithoutValidator, string>>(MockBehavior.Strict);
            decorated.Setup(x => x.Handle(query)).Returns("faked");

            var decorator = new QueryLifetimeScopeDecorator<FakeQueryWithoutValidator, string>(_fixture.Container, () => decorated.Object);
            Assert.Equal(null, _fixture.Container.GetCurrentLifetimeScope());

            string result;
            using (_fixture.Container.BeginLifetimeScope())
            {
                result = decorator.Handle(query);
            }

            Assert.Equal("faked", result);

            decorated.Verify(x => x.Handle(query), Times.Once);
        }
        public void DoNotRaiseEvent_AfterQueryIsExecuted_WhenQueryDoesNotHaveRaiseEventAttribute()
        {
            var query = new FakeQueryWithoutValidator();

            Assert.IsAssignableFrom <IQuery <string> >(query);

            var eventProcessor = new Mock <IProcessEvents>(MockBehavior.Strict);

            eventProcessor.Setup(x => x.Raise(query));

            var decorated = new Mock <IHandleQuery <FakeQueryWithoutValidator, string> >(MockBehavior.Strict);

            decorated.Setup(x => x.Handle(query)).Returns("faked");

            var decorator = new QueryEventProcessingDecorator <FakeQueryWithoutValidator, string>(eventProcessor.Object, () => decorated.Object);

            decorator.Handle(query);

            decorated.Verify(x => x.Handle(query), Times.Once);
            eventProcessor.Verify(x => x.Raise(It.IsAny <IEvent>()), Times.Never);
        }
        public void UsesCurrentLifetimeScope_WhenCurrentLifetimeScope_IsNotNull()
        {
            var query     = new FakeQueryWithoutValidator();
            var decorated = new Mock <IHandleQuery <FakeQueryWithoutValidator, string> >(MockBehavior.Strict);

            decorated.Setup(x => x.Handle(query)).Returns("faked");

            var decorator = new QueryLifetimeScopeDecorator <FakeQueryWithoutValidator, string>(_fixture.Container, () => decorated.Object);

            Assert.Equal(null, _fixture.Container.GetCurrentLifetimeScope());

            string result;

            using (_fixture.Container.BeginLifetimeScope())
            {
                result = decorator.Handle(query);
            }

            Assert.Equal("faked", result);

            decorated.Verify(x => x.Handle(query), Times.Once);
        }