public void when_publishing_message_without_context_it_should_fail() { var publisher = new VentureMessagePublisher(new FakeMessageRouter()); // ReSharper disable once AssignNullToNotNullAttribute - it's a test against null. Func <Task> sut = () => publisher.Publish(new object(), context: null); sut.Should().Throw <ArgumentNullException>().Where(exception => exception.ParamName.Equals("context"), "context is required"); }
public void when_publishing_null_as_inception_message_it_should_fail() { var publisher = new VentureMessagePublisher(new FakeMessageRouter()); // ReSharper disable once AssignNullToNotNullAttribute - it's a test against null. Func <Task> sut = () => publisher.PublishInceptionMessage <object>(message: null, DateTimeOffset.UtcNow); sut.Should().Throw <ArgumentNullException>().Where(exception => exception.ParamName.Equals("message"), "message should be specified"); }
public async Task when_publishing_inception_message_it_should_assign_proper_message_ids() { var messageRouter = new FakeMessageRouter(); var sut = new VentureMessagePublisher(messageRouter); var message = new object(); await sut.PublishInceptionMessage(message, DateTimeOffset.UtcNow); messageRouter.Message.Should().BeSameAs(message, "it should pass message without changes"); messageRouter.MessageId.Should().NotBeNullOrWhiteSpace("it should generate message ID"); messageRouter.CorrelationId.Should().Be(messageRouter.MessageId, "correlation ID and message ID should be the same"); messageRouter.CausationId.Should().Be(messageRouter.MessageId, "causation ID and message ID should be the same"); }
public void when_publishing_null_as_message_it_should_fail() { var publisher = new VentureMessagePublisher(new FakeMessageRouter()); Func <Task> sut = () => publisher.Publish <object>( // ReSharper disable once AssignNullToNotNullAttribute - it's a test against null. message: null, new VentureOutgoingMessageHandlingContext( new object(), DateTimeOffset.UtcNow, _stringCreator.Get(length: 10), _stringCreator.Get(length: 10), _stringCreator.Get(length: 10))); sut.Should().Throw <ArgumentNullException>().Where(exception => exception.ParamName.Equals("message"), "message is required"); }
public async Task when_publishing_subsequent_message_it_should_assign_proper_message_ids() { var messageRouter = new FakeMessageRouter(); var sut = new VentureMessagePublisher(messageRouter); var message = new object(); var correlationId = _stringCreator.Get(length: 10); var precedingMessageId = _stringCreator.Get(length: 10); await sut.PublishSubsequentMessage( message, DateTimeOffset.UtcNow, correlationId, precedingMessageId); messageRouter.Message.Should().BeSameAs(message, "it should pass message without changes"); messageRouter.MessageId.Should().NotBeNullOrWhiteSpace("it should generate message ID"); messageRouter.CorrelationId.Should().Be(correlationId, "it should pass correlation ID without changes"); messageRouter.CausationId.Should().Be(precedingMessageId, "it should use preceding message ID as causation ID"); }
public async Task when_message_id_is_not_specified_it_should_generate_it() { var messageRouter = new FakeMessageRouter(); var sut = new VentureMessagePublisher(messageRouter); var message = new object(); var correlationId = _stringCreator.Get(length: 10); var causationId = _stringCreator.Get(length: 10); var messageId = _stringCreator.Get(length: 10); await sut.Publish( message, new VentureOutgoingMessageHandlingContext( message, DateTimeOffset.UtcNow, correlationId, causationId, messageId)); messageRouter.Message.Should().BeSameAs(message, "it should pass message without changes"); messageRouter.CorrelationId.Should().BeSameAs(correlationId, "it should pass correlation ID without changes"); messageRouter.CausationId.Should().BeSameAs(causationId, "it should pass causation ID without changes"); messageRouter.MessageId.Should().NotBeNullOrWhiteSpace("message ID should be generated"); }
public async Task when_publishing_message_it_should_route_it_using_message_router_with_parameters_unchanged() { var messageRouter = new FakeMessageRouter(); var sut = new VentureMessagePublisher(messageRouter); var message = new object(); var correlationId = _stringCreator.Get(length: 10); var causationId = _stringCreator.Get(length: 10); var messageId = _stringCreator.Get(length: 10); await sut.Publish( message, new VentureOutgoingMessageHandlingContext( message, DateTimeOffset.UtcNow, correlationId, causationId, messageId)); messageRouter.Message.Should().BeSameAs(message, "it should pass message without changes"); messageRouter.CorrelationId.Should().BeSameAs(correlationId, "it should pass correlation ID without changes"); messageRouter.CausationId.Should().BeSameAs(causationId, "it should pass causation ID without changes"); messageRouter.MessageId.Should().BeSameAs(messageId, "it should pass message ID without changes"); }
public void when_publishing_subsequent_message_with_some_attribute_not_specified_it_should_fail() { var messageRouter = new FakeMessageRouter(); var publisher = new VentureMessagePublisher(messageRouter); var message = new object(); var correlationId = _stringCreator.Get(length: 10); var precedingMessageId = _stringCreator.Get(length: 10); var generatedOnUtc = DateTimeOffset.UtcNow; Func <Task> sut = () => publisher.PublishSubsequentMessage <object>( message: null, generatedOnUtc, correlationId, precedingMessageId); sut.Should().Throw <ArgumentNullException>().Where(exception => exception.ParamName.Equals("message")); sut = () => publisher.PublishSubsequentMessage( message, generatedOnUtc, correlationId: null, precedingMessageId); sut.Should().Throw <ArgumentNullException>().Where( exception => exception.ParamName.Equals("correlationId"), "null is not valid correlation ID"); sut = () => publisher.PublishSubsequentMessage( message, generatedOnUtc, string.Empty, precedingMessageId); sut.Should().Throw <ArgumentNullException>().Where( exception => exception.ParamName.Equals("correlationId"), "an empty string is not valid correlation ID"); sut = () => publisher.PublishSubsequentMessage( message, generatedOnUtc, WhitespaceString, precedingMessageId); sut.Should().Throw <ArgumentNullException>().Where( exception => exception.ParamName.Equals("correlationId"), "a whitespace string is not valid correlation ID"); sut = () => publisher.PublishSubsequentMessage( message, generatedOnUtc, correlationId, precedingMessageId: null); sut.Should().Throw <ArgumentNullException>().Where( exception => exception.ParamName.Equals("precedingMessageId"), "null is not valid preceding message ID"); sut = () => publisher.PublishSubsequentMessage( message, generatedOnUtc, correlationId, string.Empty); sut.Should().Throw <ArgumentNullException>().Where( exception => exception.ParamName.Equals("precedingMessageId"), "an empty string is not valid preceding message ID"); sut = () => publisher.PublishSubsequentMessage( message, generatedOnUtc, correlationId, WhitespaceString); sut.Should().Throw <ArgumentNullException>().Where( exception => exception.ParamName.Equals("precedingMessageId"), "a whitespace string is not valid preceding message ID"); }