public async Task AddEvents_ForeachMethod()
        {
            BsonMapRegistrationHelpers.AddBsonMapFor <TestEventAllOk>();

            var eventRepository = new EventRepositoryMongoDb(EventMongoDb, new VersionCache(EventMongoDb));
            var snapShotRepo    = new Mock <ISnapShotRepository>();

            snapShotRepo.Setup(re => re.LoadSnapShot <TestEntity>(It.IsAny <string>()))
            .ReturnsAsync(SnapShotResult <TestEntity> .Default());

            var eventStore = new EventStore(eventRepository, snapShotRepo.Object, new SnapShotConfig());

            var newGuid = Guid.NewGuid();

            await eventStore.AppendAsync(
                new List <IDomainEvent> {
                new TestEventAllOk(newGuid, "Simon")
            },
                0);

            var result = await eventRepository.LoadEvents();

            Assert.AreEqual(1, result.Value.Count());
            Assert.AreEqual(newGuid.ToString(), result.Value.Single().DomainEvent.EntityId);
            Assert.AreEqual("Simon", ((TestEventAllOk)result.Value.Single().DomainEvent).Name);
        }
        public async Task AddAndLoadEvents_AutoProperty()
        {
            var eventRepository = new EventRepositoryMongoDb(EventMongoDb, new VersionCache(EventMongoDb));
            var stringstring    = "TestId";

            BsonClassMap.RegisterClassMap <DomainEventWithAutoProperty>(cm =>
            {
                cm.MapCreator(ev => new DomainEventWithAutoProperty(ev.CreateId, ev.TestProperty));
                cm.MapProperty(nameof(DomainEventWithAutoProperty.CreateId));
                cm.MapProperty(nameof(DomainEventWithAutoProperty.TestProperty));
            });

            await eventRepository.AppendAsync(new List <IDomainEvent>
            {
                new DomainEventWithAutoProperty(stringstring, "TestProperty")
            }, 0);

            var loadEventsByEntity = await eventRepository.LoadEventsByEntity(stringstring);

            var loadedEvent = loadEventsByEntity.Value.Single().DomainEvent as DomainEventWithAutoProperty;

            Assert.AreEqual(loadedEvent.CreateId, stringstring);
            Assert.AreEqual(loadedEvent.EntityId, stringstring);
            Assert.AreEqual(loadedEvent.TestProperty, "TestProperty");
        }
Beispiel #3
0
        public async Task AddEvents_AutoProperty_NotNamedEntityId()
        {
            BsonMapRegistrationHelpers.AddBsonMapFor <TestEvent_BsonBug_AutoProperty_NotWithEntityIdName>();

            var eventRepository = new EventRepositoryMongoDb(EventMongoDb, new VersionCache(EventMongoDb));
            var snapShotRepo    = new Mock <ISnapShotRepository>();

            snapShotRepo.Setup(re => re.LoadSnapShot <TestEntity>(It.IsAny <string>()))
            .ReturnsAsync(SnapShotResult <TestEntity> .Default());

            var eventStore = new EventStore(eventRepository, snapShotRepo.Object, new SnapShotConfig());

            await eventStore.AppendAsync(new List <IDomainEvent> {
                new TestEvent_BsonBug_AutoProperty_NotWithEntityIdName("whatever", "Peter")
            },
                                         0);

            var result = await eventRepository.LoadEvents();

            Assert.AreEqual(1, result.Value.Count());
            var domainEvent = result.Value.Single().DomainEvent as TestEvent_BsonBug_AutoProperty_NotWithEntityIdName;

            Assert.AreEqual("whatever", domainEvent.EntityId);
            Assert.AreEqual("Peter", domainEvent.Name);
        }
Beispiel #4
0
        public async Task Entitystream_LoadEventsSince_IdNotDefault()
        {
            BsonMapRegistrationHelpers.AddBsonMapFor <TestEv3>();
            var entityStreamRepository = new EventRepositoryMongoDb(EventMongoDb, new VersionCache(EventMongoDb));

            var entityStreamTestEvent = new TestEv3(Guid.NewGuid());
            await entityStreamRepository.AppendAsync(new[] { entityStreamTestEvent }, 0);

            var eventsSince = await entityStreamRepository.LoadEvents();

            Assert.AreEqual(entityStreamTestEvent.EntityId, eventsSince.Value.Single().DomainEvent.EntityId);
            Assert.AreNotEqual(entityStreamTestEvent.EntityId, Guid.Empty.ToString());
        }
        public async Task AddAndLoadEvents_ParamCalledWrong()
        {
            var eventRepository = new EventRepositoryMongoDb(EventMongoDb, new VersionCache(EventMongoDb));

            var newGuid = Guid.NewGuid();
            var events  = new List <IDomainEvent> {
                new TestEvent_ParameterCalledWrong(newGuid.ToString())
            };
            await eventRepository.AppendAsync(events, 0);

            var loadEventsByEntity = await eventRepository.LoadEventsByEntity(newGuid.ToString());

            Assert.AreEqual(1, loadEventsByEntity.Value.Count());
            Assert.AreEqual(null, loadEventsByEntity.Value.ToList()[0].DomainEvent.EntityId);
        }
        public async Task LoadEntityId_VersionTooHIgh_NotFoundIsOk()
        {
            var eventRepository = new EventRepositoryMongoDb(EventMongoDb, new VersionCache(EventMongoDb));

            var newGuid = Guid.NewGuid();
            var events  = new List <IDomainEvent> {
                new TestEvent1(newGuid), new TestEvent2(newGuid)
            };
            await eventRepository.AppendAsync(events, 0);

            var result = await eventRepository.LoadEventsByEntity(newGuid.ToString(), 3);

            Assert.IsTrue(result.Is <Ok>());
            Assert.AreEqual(0, result.Value.Count());
        }
        public async Task AddAndLoadEventsConcurrent_CacheEmpty2()
        {
            var eventRepository  = new EventRepositoryMongoDb(EventMongoDb, new VersionCache(EventMongoDb));
            var eventRepository2 = new EventRepositoryMongoDb(EventMongoDb, new VersionCache(EventMongoDb));

            var newGuid = Guid.NewGuid();
            var events  = new List <IDomainEvent> {
                new TestEvent1(newGuid), new TestEvent2(newGuid)
            };
            var events2 = new List <IDomainEvent> {
                new TestEvent1(newGuid), new TestEvent2(newGuid)
            };

            await eventRepository.AppendAsync(events, 0);

            await eventRepository2.AppendAsync(events2, 2);

            var result = await eventRepository.LoadEvents();

            Assert.AreEqual(4, result.Value.Count());
        }