public void WhenEntityExposesEvent_ThenRepositoryPublishesIt()
        {
            var busMock = new Mock <IEventBus>();
            var events  = new List <IEvent>();

            busMock.Setup(x => x.Publish(It.IsAny <IEnumerable <Envelope <IEvent> > >()))
            .Callback <IEnumerable <Envelope <IEvent> > >(x => events.AddRange(x.Select(e => e.Body)));

            var @event = new TestEvent();

            using (var context = new SqlDataContext <TestEventPublishingAggregateRoot>(() => new TestDbContext(), busMock.Object)) {
                var aggregate = new TestEventPublishingAggregateRoot(Guid.NewGuid());
                aggregate.AddEvent(@event);

                context.Save(aggregate);
            }

            Assert.AreEqual(1, events.Count);
            Assert.IsTrue(events.Contains(@event));
        }
Пример #2
0
        public void WhenEntityExposesEvent_ThenRepositoryPublishesIt()
        {
            var busMock = new Mock<IEventBus>();
            var events = new List<IEvent>();

            busMock
                .Setup(x => x.Publish(It.IsAny<IEnumerable<Envelope<IEvent>>>()))
                .Callback<IEnumerable<Envelope<IEvent>>>(x => events.AddRange(x.Select(e => e.Body)));

            var @event = new TestEvent();

            using (var context = new SqlDataContext<TestEventPublishingAggregateRoot>(() => new TestDbContext(), busMock.Object))
            {
                var aggregate = new TestEventPublishingAggregateRoot(Guid.NewGuid());
                aggregate.AddEvent(@event);
                context.Save(aggregate);
            }

            Assert.Equal(1, events.Count);
            Assert.True(events.Contains(@event));
        }