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); }
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); }
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); }