public void SendEventsToConsumerGetsSentToRepositoryAndPublisher() { _repository = new Mock <IEventRepository>(); _repository.Setup(c => c.WriteEvents(It.IsAny <List <EventTransaction> >())) .Returns(() => true); _publisher = new Mock <IEventPublisher>(); _publisher.Setup(c => c.Publish(It.IsAny <EventTransaction>())) .Returns(() => true); var eventStore = new EventStore(_repository.Object, _publisher.Object); var eventTransaction = new EventTransaction { Events = new[] { new Event { AggregateId = _aggregateId, SerializedEvent = Encoding.UTF8.GetBytes("some data"), EventType = "Event type" } } }; eventStore.Process(eventTransaction).Wait(); _repository.Verify(c => c.WriteEvents(It.IsAny <List <EventTransaction> >()), Times.AtLeastOnce()); _publisher.Verify(c => c.Publish(It.IsAny <EventTransaction>()), Times.AtLeastOnce()); eventStore.Dispose(); }
public void Dispose_ShouldDisposeUnderlyingConnection() { // Arrange var eventStoreConnectionMock = new Mock <IEventStoreConnection>(); var eventStore = new EventStore(eventStoreConnectionMock.Object); // Act eventStore.Dispose(); // Assert eventStoreConnectionMock.Verify(x => x.Dispose(), Times.Once); }
public async Task EventStore_get_version_returns_correct_value() { var loggerFactory = new LoggerFactory(); loggerFactory.AddProvider(new XunitLoggerProvider(_testOutputHelper)); var aggregateId = Guid.NewGuid().ToString(); var eventStream = new EventStream(aggregateId, 1, new[] { new Event1(), new Event1() }); var persistence = new EventPersistence(new[] { eventStream }); var eventStore = new EventStore(persistence, new SimpleEventPublisher(), loggerFactory.CreateLogger <EventStore>()); var version = await eventStore.GetVersion(aggregateId, default); eventStore.Dispose(); Assert.Equal(2, version); }
public async Task EventStore_save_and_publish_handles_all_events() { var loggerFactory = new LoggerFactory(); loggerFactory.AddProvider(new XunitLoggerProvider(_testOutputHelper)); var publisher = new SimpleEventPublisher(); var persistence = new EventPersistence(); var eventStore = new EventStore(persistence, publisher, loggerFactory.CreateLogger <EventStore>()); var aggregateId = Guid.NewGuid().ToString(); var eventStream = new EventStream(aggregateId, 0, new[] { new Event1(), new Event1() }); await eventStore.SaveAndPublish(eventStream, 0, () => { }, default); eventStore.Dispose(); Assert.Equal(eventStream.Events.Count(), publisher.PublishedEvents.Count); Assert.Equal(eventStream.Events.Count(), persistence.GetPersistedEvents(aggregateId).Events.Count()); }
public void BuildLMDBEventStoreDoesNotThrow() { IEventStoreBuilder builder = new EventStoreBuilder(); EventStore es = null; es = builder.UseLMDBRepository() .Configuration(@"c:\lmdb", 2, 10485760, new ProtobufEventsSerializer()) .UseCustom(new DummyEventPublisher()) .Build(); Assert.NotNull(es); //Clean up database es.Dispose(); //Cleaning up disk GC.Collect(); GC.WaitForPendingFinalizers(); var datafile = Path.Combine(@"c:\lmdb", "data.mdb"); if (File.Exists(datafile)) { File.Delete(datafile); } var lockfile = Path.Combine(@"c:\lmdb", "lock.mdb"); if (File.Exists(lockfile)) { File.Delete(lockfile); } }