/** @test */
 function it_should_update_last_published_message_when_publisher_fails_before_last_one()
 {
     $nonEmptyExchangeName = 'non_empty_exchange_name';
     $severalMessages = [A::storedEvent()->withId(12000)->build(), A::storedEvent()->withId(11000)->build(), A::storedEvent()->build()];
     $store = $this->givenAStoreWith($severalMessages);
     $tracker = $this->givenANonEmptyExchange($nonEmptyExchangeName);
     $message = A::publishedMessage()->withExchangeName($nonEmptyExchangeName)->build();
     $this->givenMostRecentPublishedMessageIs($tracker, $message, $nonEmptyExchangeName);
     $this->expectToTrackUpdatedMessage($tracker, $message);
     $producer = new MessageProducerThatThrowsException();
     $publisher = new MessagePublisher($store, $tracker, $producer);
     $messages = $publisher->publishTo($nonEmptyExchangeName);
     $this->assertEquals(1, $messages, 'Should have processed only 1 message');
     $this->assertEquals(12000, $message->mostRecentMessageId(), 'Most recent message ID should be 12000');
 }