private async Task StoreTestEventAsync(Guid aggId, Guid id, DateTime date)
 {
     var store = new MongoDbEventStore();
     await store.StoreDomainEventAsync(new SampleEvent(aggId, id, date)
     {
         Data = "testData"
     }).ConfigureAwait(false);
 }
        public async Task NonAggregateEvent_Shouldnt_Be_Persisted_If_User_Configure_It()
        {
            EventStoreManager.Options.ShouldPersistNonAggregateEvent = false;
            DeleteAll();
            var store = new MongoDbEventStore();
            await store.StoreDomainEventAsync(new NonAggEvent());

            (await GetEventCollection().CountDocumentsAsync(FilterDefinition <IDomainEvent> .Empty).ConfigureAwait(false)).Should().Be(0);
        }
        private void StoreNDomainEvents(ISnapshotBehaviorProvider provider = null)
        {
            EventStoreManager.Client = new MongoClient(GetMongoDbUrl());
            var store = new MongoDbEventStore(provider);

            for (int i = 0; i < N; i++)
            {
                store.StoreDomainEventAsync(new TestEvent(Guid.NewGuid(), AggregateId)
                {
                    AggregateStringValue = "test", AggregateIntValue = N
                }).GetAwaiter().GetResult();
            }
        }
        public async Task MongoDbEventStoreStoreDomainEventAsync_NotPersisted()
        {
            try
            {
                var store = new MongoDbEventStore();
                await store.StoreDomainEventAsync(new NotPersistedEvent()).ConfigureAwait(false);

                (await GetEventCollection().CountDocumentsAsync(FilterDefinition <IDomainEvent> .Empty).ConfigureAwait(false)).Should().Be(0);
            }
            finally
            {
                DeleteAll();
            }
        }
        public async Task NonAggregateEvent_Should_Be_Persisted_If_User_Configure_It()
        {
            try
            {
                EventStoreManager.Options.ShouldPersistNonAggregateEvent = true;
                DeleteAll();
                var store = new MongoDbEventStore();
                await store.StoreDomainEventAsync(new NonAggEvent());

                (await GetEventCollection().CountDocumentsAsync(FilterDefinition <IDomainEvent> .Empty).ConfigureAwait(false)).Should().Be(1);
                var evt = await(await GetEventCollection().FindAsync(FilterDefinition <IDomainEvent> .Empty)).FirstOrDefaultAsync();
                evt.Should().NotBeNull();

                evt.AggregateType.Should().BeNull();
                evt.AggregateId.Should().BeNull();
            }
            finally
            {
                DeleteAll();
            }
        }