Пример #1
0
        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);
        }