public void Given_only_aggregate_events_persisted_it_can_be_loaded(IRepository <DomainEvent> eventRepo, AggregateRepository aggrRepo)
        {
            try
            {
                _sourceId     = Guid.NewGuid();
                _createdEvent = new SampleAggregateCreatedEvent("initial value", _sourceId);
                _changedEvent = new SampleAggregateChangedEvent("changed value", _sourceId);

                string persistenceId = AggregateActorName.New <SampleAggregate>(_sourceId).ToString();
                eventRepo.Save(persistenceId, _createdEvent, _changedEvent);
                _aggregate = aggrRepo.LoadAggregate <SampleAggregate>(_sourceId);

                Assert.AreEqual(_sourceId, _aggregate.Id);
                Assert.AreEqual(_changedEvent.Value, _aggregate.Value);
            }
            finally
            {
                eventRepo.Dispose();
                aggrRepo.Dispose();
            }
        }
        public async Task Given_only_aggregate_events_persisted_it_can_be_loaded(IRepository <DomainEvent> eventRepo,
                                                                                 AggregateRepository aggrRepo)
        {
            try
            {
                _sourceId = Guid.NewGuid().ToString();
                _created  = new BalloonCreated("initial value", _sourceId);
                _changed  = new BalloonTitleChanged("changed value", _sourceId);

                var persistenceId = EntityActorName.New <Balloon>(_sourceId).ToString();
                await eventRepo.Save(persistenceId, _created, _changed);

                _aggregate = await aggrRepo.LoadAggregate <Balloon>(_sourceId);

                Assert.Equal(_sourceId, _aggregate.Id);
                Assert.Equal(_changed.Value, _aggregate.Title);
            }
            finally
            {
                eventRepo.Dispose();
                aggrRepo.Dispose();
            }
        }