public async Task When_outstanding_in_outbox_sweep_clears_them_async() { //Arrange const int milliSecondsSinceSent = 500; var outbox = new InMemoryOutbox(); var commandProcessor = new FakeCommandProcessor(); var sweeper = new OutboxSweeper(milliSecondsSinceSent, commandProcessor); var messages = new Message[] { new MessageTestDataBuilder(), new MessageTestDataBuilder(), new MessageTestDataBuilder() }; foreach (var message in messages) { outbox.Add(message); commandProcessor.Post(message.ToStubRequest()); } //Act await Task.Delay(milliSecondsSinceSent * 2); // -- let the messages expire sweeper.SweepAsyncOutbox(); await Task.Delay(200); //Assert outbox.EntryCount.Should().Be(3); commandProcessor.Dispatched.Count.Should().Be(3); commandProcessor.Deposited.Count.Should().Be(3); }
public void When_too_new_to_sweep_leaves_them() { //Arrange const int milliSecondsSinceSent = 500; var outbox = new InMemoryOutbox(); var commandProcessor = new FakeCommandProcessor(); var sweeper = new OutboxSweeper(milliSecondsSinceSent, outbox, commandProcessor); var messages = new Message[] { new MessageTestDataBuilder(), new MessageTestDataBuilder(), new MessageTestDataBuilder() }; foreach (var message in messages) { outbox.Add(message); commandProcessor.Post(message.ToStubRequest()); } //Act sweeper.Sweep(); //Assert commandProcessor.Dispatched.Count.Should().Be(3); commandProcessor.Posted.Count.Should().Be(0); }