public void When_there_are_multiple_items_and_some_are_dispatched() { //Arrange var outbox = new InMemoryOutbox(); var messageIds = new Guid[] { Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), }; for (int i = 0; i <= 4; i++) { outbox.Add(new MessageTestDataBuilder().WithId(messageIds[i])); } //Act var now = DateTime.UtcNow; outbox.MarkDispatched(messageIds[0], now); outbox.MarkDispatched(messageIds[4], now); Task.Delay(500).Wait(); var sentMessages = outbox.DispatchedMessages(5000); var outstandingMessages = outbox.OutstandingMessages(0); //Assert sentMessages.Count().Should().Be(2); outstandingMessages.Count().Should().Be(3); sentMessages.Any(msg => msg.Id == messageIds[0]).Should().BeTrue(); sentMessages.Any(msg => msg.Id == messageIds[4]).Should().BeTrue(); outstandingMessages.Any(msg => msg.Id == messageIds[1]).Should().BeTrue(); outstandingMessages.Any(msg => msg.Id == messageIds[2]).Should().BeTrue(); outstandingMessages.Any(msg => msg.Id == messageIds[3]).Should().BeTrue(); }
public void When_outstanding_in_outbox_they_are_retrieved_correctly() { var minimumAgeInMs = 500; var outbox = new InMemoryOutbox(); outbox.Add(new MessageTestDataBuilder()); outbox.Add(new MessageTestDataBuilder()); Thread.Sleep(minimumAgeInMs); outbox.Add(new MessageTestDataBuilder()); outbox.Add(new MessageTestDataBuilder()); var messagesToDispatch = outbox.OutstandingMessages(minimumAgeInMs); var allMessages = outbox.OutstandingMessages(0); foreach (var message in messagesToDispatch) { outbox.MarkDispatched(message.Id); } var messagesAfterDispatch = outbox.OutstandingMessages(minimumAgeInMs); Assert.Equal(2, messagesToDispatch.Count()); Assert.Equal(4, allMessages.Count()); Assert.Empty(messagesAfterDispatch); }
public void When_marking_dispatched_in_outbox() { //Arrange var outbox = new InMemoryOutbox(); var messageId = Guid.NewGuid(); var messageToAdd = new Message( new MessageHeader(messageId, "test_topic", MessageType.MT_DOCUMENT), new MessageBody("message body")); //Act outbox.Add(messageToAdd); var dispatchedAt = DateTime.Now; outbox.MarkDispatched(messageId, dispatchedAt); var dispatchedMessages = outbox.DispatchedMessages(500); //Assert dispatchedMessages.Count().Should().Be(1); dispatchedMessages.First().Id.Should().Be(messageId); }