Пример #1
0
        public void should_restore_events_and_headers()
        {
            var changeset = new Changeset
                            (
                aggregateVersion: 1,
                events: new object[] { "a", "b" },
                headers: new Dictionary <string, object>()
            {
                { "key", "value" }
            }
                            );

            Assert.Equal(1, changeset.AggregateVersion);
            Assert.Collection(changeset.Events,
                              evt => { Assert.Equal("a", evt); },
                              evt => { Assert.Equal("b", evt); }
                              );

            Assert.False(changeset.IsEmpty());
            Assert.Collection(changeset.Headers, kv =>
            {
                Assert.Equal("key", kv.Key);
                Assert.Equal("value", kv.Value);
            });
        }
Пример #2
0
        public void should_create_with_version_and_events()
        {
            var changeset = new Changeset
                            (
                aggregateVersion: 1,
                events: new object[] { "a", "b" }
                            );

            Assert.Equal(1, changeset.AggregateVersion);
            Assert.Collection(changeset.Events,
                              evt => { Assert.Equal("a", evt); },
                              evt => { Assert.Equal("b", evt); }
                              );

            Assert.False(changeset.IsEmpty());

            Assert.False(changeset.Headers.Keys.Any());
        }
Пример #3
0
        public void persister_should_create_changeset_only_with_new_events()
        {
            var ticket    = TicketTestFactory.ForTest();
            var persister = (IEventSourcedAggregate)ticket;

            var changeSet = new Changeset(1, new TicketSold());

            persister.ApplyChanges(changeSet);

            ticket.Refund();

            changeSet = persister.GetChangeSet();

            Assert.NotNull(changeSet);
            Assert.False(changeSet.IsEmpty());
            Assert.Equal(2, changeSet.AggregateVersion);
            Assert.True(1 == changeSet.Events.Length);
            Assert.IsType <TicketRefunded>(changeSet.Events[0]);
        }
        private async Task ConsumeWaitPublish() {
            _log.WatcherConsumeChangesStarted();

            try {
                var changeset = new Changeset();
                while (!_queue.IsEmpty) {
                    Consume(changeset);
                    await Task.Delay(_delayMilliseconds);
                }

                if (!changeset.IsEmpty()) {
                    _broadcastBlock.Post(changeset);
                    _log.WatcherChangesetSent(changeset);
                }
            } finally {
                _consumerIsWorking = 0;
                _log.WatcherConsumeChangesFinished();
                if (!_queue.IsEmpty) {
                    StartConsumer();
                }
            }
        }
Пример #5
0
        public void should_be_empty_when_has_no_events()
        {
            var changeset = new Changeset(1, new object[0]);

            Assert.True(changeset.IsEmpty());
        }