public void Then_DoesNotThrowWhenEventsAreTheSameAsStorage()
        {
            var events        = new IDomainEvent[] { new FakeDomainEvent() };
            var untypedEvents = events.Select(e =>
                                              new UntypedEventEnvelope(Guid.NewGuid()
                                                                       , new UntypedEventEnvelope.EventMetadata(Guid.NewGuid().ToString()
                                                                                                                , Guid.NewGuid().ToString())
                                                                       , e)
                                              ).ToArray();

            _storage.AppendEvents("", 0, untypedEvents);

            _sut.Then(events);
        }
        public void Then_ThrowsWhenEventsAreDifferentFromStorage()
        {
            var storedEvents = new IDomainEvent[] { new FakeDomainEvent() };

            _storage.AppendEvents(""
                                  , 0
                                  , storedEvents.Select(e =>
                                                        new UntypedEventEnvelope(Guid.NewGuid()
                                                                                 , new UntypedEventEnvelope.EventMetadata(Guid.NewGuid().ToString()
                                                                                                                          , Guid.NewGuid().ToString())
                                                                                 , e)
                                                        ).ToArray());

            var invalidEvents = new IDomainEvent[] { new FakeDomainEvent() };

            Assert.Throws <EventsDidNotHappenException>(
                () => _sut.Then(invalidEvents));
        }