public void CommittedEvent_MappedToDomainEvent_IsValid()
        {
            var domainEventReadAdapter  = new DomainEventReadAdapter();
            var aggregateSequenceNumber = 5;
            var aggregateId             = TestAggregateId.New;
            var aggregateEvent          = new TestCreatedEvent(aggregateId);
            var now           = DateTimeOffset.UtcNow;
            var eventId       = EventId.NewDeterministic(GuidFactories.Deterministic.Namespaces.Events, $"{aggregateId.Value}-v{3}");
            var eventMetadata = new EventMetadata
            {
                Timestamp = now,
                AggregateSequenceNumber = aggregateSequenceNumber,
                AggregateName           = typeof(TestAggregate).GetAggregateName().Value,
                AggregateId             = aggregateId.Value,
                EventId = eventId
            };
            var committedEvent = new CommittedEvent <TestAggregateId, TestCreatedEvent>(
                aggregateId,
                aggregateEvent,
                eventMetadata,
                now,
                aggregateSequenceNumber);

            var eventSequence = domainEventReadAdapter.FromJournal(committedEvent, String.Empty);
            var upcastedEvent = eventSequence.Events.Single();

            if (upcastedEvent is IDomainEvent <TestAggregateId, TestCreatedEvent> e)
            {
                e.AggregateEvent.GetType().Should().Be <TestCreatedEvent>();
            }
            else
            {
                false.Should().BeTrue();
            }
        }
        public void NonCommittedEvent_WhenRead_IsReturnedUnchanged()
        {
            var message = new CreateTestCommand(TestAggregateId.New, CommandId.New);
            var domainEventReadAdapter = new DomainEventReadAdapter();

            var unchanged = domainEventReadAdapter.FromJournal(message, String.Empty);

            unchanged.Events.Single().As <CreateTestCommand>().Metadata.SourceId.Should().Be(message.Metadata.SourceId);
            unchanged.Events.Single().As <CreateTestCommand>().AggregateId.Should().Be(message.AggregateId);
        }