Example #1
0
        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?
        }
Example #2
0
        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));
        }