public async Task TestAddEvent()
        {
            // Arrange
            var          eventStore            = new EventStore.EventStore(_context, _provider, _provider.GetService <IEventDataFactory <EventData, Guid, Guid> >());
            var          aggregateId           = Guid.NewGuid();
            const int    version               = 0;
            const int    secondVersion         = 1;
            const int    expectedVersion       = 2;
            var          expectedEventId       = Guid.NewGuid();
            var          secondExpectedEventId = Guid.NewGuid();
            const string updatedValue          = "test";
            var          creationEvent         = new TestCreatedEvent(expectedEventId, aggregateId, version);
            var          updatedEvent          = new UpdatedTestEvent(secondExpectedEventId, aggregateId, secondVersion, updatedValue);

            // Act
            await eventStore.AddEventAsync(creationEvent);

            await eventStore.AddEventAsync(updatedEvent);

            var aggregate = await eventStore.GetAggregateAsync <TestAggregate>(aggregateId);

            // Assert
            Assert.NotNull(eventStore);
            Assert.NotNull(aggregate);
            Assert.IsType <TestAggregate>(aggregate);
            Assert.Equal(updatedValue, aggregate.TestProperty);
            Assert.Equal(expectedVersion, aggregate.Version);
        }
        public async Task TestGetVersion()
        {
            // Arrange
            var          eventStore            = new EventStore.EventStore(_context, _provider, _provider.GetService <IEventDataFactory <EventData, Guid, Guid> >());
            var          aggregateId           = Guid.NewGuid();
            const int    version               = 0;
            const int    secondVersion         = 1;
            const int    expectedVersion       = 2;
            var          expectedEventId       = Guid.NewGuid();
            var          secondExpectedEventId = Guid.NewGuid();
            const string updatedValue          = "test";
            var          creationEvent         = new TestCreatedEvent(expectedEventId, aggregateId, version);
            var          updatedEvent          = new UpdatedTestEvent(secondExpectedEventId, aggregateId, secondVersion, updatedValue);

            // Act
            await eventStore.AddEventAsync(creationEvent);

            await eventStore.AddEventAsync(updatedEvent);

            int resultingVersion = await eventStore.GetAggregateVersionAsync(aggregateId);

            // Assert
            Assert.Equal(expectedVersion, resultingVersion);
        }
 public void Apply(UpdatedTestEvent @event)
 {
     TestProperty = @event.UpdatedValue;
 }