public async Task Verify_Correct_save_of_aggregate_version() { var rm = new SampleReadModelTest(); rm.Id = new TestId(1); rm.Value = "test"; await sut.InsertAsync(new SampleAggregateCreated() { Version = 1, }, rm).ConfigureAwait(false); rm = sut.All.Single(); Assert.That(rm.AggregateVersion, Is.EqualTo(1)); Assert.That(rm.Version, Is.EqualTo(1)); //now generate another event in the very same commit var touchedEvent = new SampleAggregateTouched() { Version = 1, }; await sut.SaveAsync(touchedEvent, rm).ConfigureAwait(false); rm = sut.All.Single(); Assert.That(rm.AggregateVersion, Is.EqualTo(1)); Assert.That(rm.Version, Is.EqualTo(2)); }
protected Task <Changeset> GenerateTouchedEvent(String issuedBy = null) { var evt = new SampleAggregateTouched(); SetBasePropertiesToEvent(evt, issuedBy); return(ProcessEvent(evt)); }
public async Task Verify_update_idempotency() { var rm = new SampleReadModelTest { Id = new TestId(1), Value = "test", Counter = 10, }; await sut.InsertAsync(new SampleAggregateCreated(), rm).ConfigureAwait(false); //now try to update counter with an event SampleAggregateTouched e = new SampleAggregateTouched(); await sut.FindAndModifyAsync(e, rm.Id, _ => _.Counter++).ConfigureAwait(false); var reloaded = await sut.FindOneByIdAsync(rm.Id).ConfigureAwait(false); Assert.That(reloaded.Counter, Is.EqualTo(11)); //idempotency on the very same event await sut.FindAndModifyAsync(e, rm.Id, _ => _.Counter++).ConfigureAwait(false); reloaded = await sut.FindOneByIdAsync(rm.Id).ConfigureAwait(false); Assert.That(reloaded.Counter, Is.EqualTo(11)); //increment on different event SampleAggregateTouched anotherEvent = new SampleAggregateTouched(); await sut.FindAndModifyAsync(anotherEvent, rm.Id, _ => _.Counter++).ConfigureAwait(false); reloaded = await sut.FindOneByIdAsync(rm.Id).ConfigureAwait(false); Assert.That(reloaded.Counter, Is.EqualTo(12)); }
private void On(SampleAggregateTouched evt) { if (TouchCount >= TouchMax) { throw new Exception(); } TouchCount += FakeSignature; }
public async Task Verify_correctly_return_of_handled_event_even_if_a_single_Event_is_handled() { var cs = await GenerateCreatedEvent().ConfigureAwait(false); var rm = new SimpleTestAtomicReadModel(new SampleAggregateId(_aggregateIdSeed)); rm.ProcessChangeset(cs); var evta = new SampleAggregateDerived1(); var evtb = new SampleAggregateTouched(); var cs2 = await ProcessEvents(new DomainEvent[] { evta, evtb }, p => new AtomicAggregateId(p)).ConfigureAwait(false); Assert.IsTrue(rm.ProcessChangeset(cs2)); }
protected Changeset GenerateTouchedEvent(Boolean inSameCommitAsPrevious) { SampleAggregateTouched evt = new SampleAggregateTouched(); return(ProcessEvent(evt, inSameCommitAsPrevious)); }
protected void When(SampleAggregateTouched evt) { TouchCount++; }
public void On(SampleAggregateTouched e) { }
#pragma warning disable S1144 // Unused private types or members should be removed #pragma warning disable S1172 // Unused method parameters should be removed private void On(SampleAggregateTouched _) { TouchCount += 1; }
public void On(SampleAggregateTouched e) { // Method intentionally left empty. }