public async Task SaveChangesAsync_PushedEventsHaveMetadata() { var entity = new MyEntity(entityId, 5); sut.Add(entity); var event1 = new SetFooEvent() { AggregateId = entityId }; entity.UncommittedEvents = new List <DomainAggregateEvent>() { event1 }; List <IEventMessage> eventMessages = new List <IEventMessage>(); publishEventBuffer.WhenForAnyArgs(x => x.PushEvent(null)).Do(ci => { eventMessages.Add(ci.ArgAt <IEventMessage>(0)); }); await sut.SaveChangesAsync(); eventMessages.Should().HaveCount(1); eventMessages[0].Metadata.Should().Contain(x => x.Key == "TestKey" && x.Value == "TestValue"); eventMessages[0].Metadata.Should().Contain(x => x.Key == BasicEventMetadataNames.AggregateClassId && x.Value == entityClassId.ToString()); // TODO test also other metadata values? }
public async Task SaveChangesAsync_PushesEventsForPublishing() { var entity = new MyEntity(entityId, 5); sut.Add(entity); var event1 = new SetFooEvent() { AggregateId = entityId }; entity.UncommittedEvents = new List <DomainAggregateEvent>() { event1 }; await sut.SaveChangesAsync(); publishEventBuffer.Received(1).PushEvent(Arg.Is <IEventMessage>(x => x.Event == event1)); }