Пример #1
0
        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();
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
            }
        }