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"); }
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); }
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()); }