public async Task Can_Modify_Aggregate()
        {
            // PREPARE
            var @event = new TestAggregateCreated
            {
                TestAggregateId = 332,
                Name            = "ddsd"
            };

            var aggregate = new TestAggregate();
            await aggregate.Initialize(GetEvents(@event), Task.FromResult(3333));

            // RUN
            aggregate.ChangeName("changed name");

            // ASSERT
            Assert.True(aggregate.HasChanges());
            Assert.Equal("332", aggregate.AggregateId);
            Assert.Equal(3333, aggregate.AggregateVersion);
            var changes = aggregate.GetChanges();

            Assert.Single(changes);
            var nameChanged = (TestAggregateNameChanged)changes.Single();

            Assert.Equal(332, nameChanged.TestAggregateId);
            Assert.Equal("ddsd", nameChanged.PreviousName);
            Assert.Equal("changed name", nameChanged.CurrentName);
        }
        public async Task Can_Initialize_Aggregate_From_Events()
        {
            // PREPARE
            var @event = new TestAggregateCreated
            {
                TestAggregateId = 332,
                Name            = "ddsd"
            };

            // RUN
            var aggregate = new TestAggregate();
            await aggregate.Initialize(GetEvents(@event), Task.FromResult(3333));

            // ASSERT
            Assert.False(aggregate.HasChanges());
            Assert.Equal("332", aggregate.AggregateId);
            Assert.Equal(3333, aggregate.AggregateVersion);
            var changes = aggregate.GetChanges();

            Assert.Empty(changes);
        }