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); }); }
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()); }
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(); } } }
public void should_be_empty_when_has_no_events() { var changeset = new Changeset(1, new object[0]); Assert.True(changeset.IsEmpty()); }