public async Task When_classes_not_implementing_IEvent_are_used_to_query_the_event_store_then_only_the_corresponding_events_are_queried()
        {
            var eventsQueried         = 0;
            var expectedEventsQueried = 0;

            Events.Write(20, _ =>
            {
                Event e = null;
                switch (Any.Int(1, 3))
                {
                case 1:
                    e = (Event)Events.Any();
                    break;

                case 2:
                    e = new Order.ItemAdded();
                    break;

                case 3:
                    e = new Order.ItemRemoved();
                    break;
                }

                if (e is Order.ItemAdded || e is Order.ItemRemoved)
                {
                    expectedEventsQueried++;
                }

                e.AggregateId = Guid.NewGuid();

                return(e);
            });

            var projector1 = Projector.CreateFor <ItemAdded>(e =>
            {
                eventsQueried++;
            });
            var projector2 = Projector.CreateFor <ItemRemoved>(e =>
            {
                eventsQueried++;
            });

            using (var catchup = CreateReadModelCatchup(projector1, projector2))
            {
                await catchup.Run();
            }

            eventsQueried.Should().Be(expectedEventsQueried);
        }
        public async Task A_dynamic_projector_can_specify_which_events_to_query()
        {
            var eventsQueried         = 0;
            var expectedEventsQueried = 0;

            Events.Write(20, _ =>
            {
                Event e = null;
                switch (Any.Int(1, 3))
                {
                case 1:
                    e = (Event)Events.Any();
                    break;

                case 2:
                    e = new Order.ItemAdded();
                    break;

                case 3:
                    e = new Order.ItemRemoved();
                    break;
                }

                if (e is Order.ItemAdded || e is Order.ItemRemoved)
                {
                    expectedEventsQueried++;
                }

                e.AggregateId = Guid.NewGuid();

                return(e);
            });

            using (var catchup = CreateReadModelCatchup(Projector.CreateDynamic(e =>
            {
                eventsQueried++;
            },
                                                                                "Order.ItemAdded",
                                                                                "Order.ItemRemoved")))
            {
                await catchup.Run();
            }

            eventsQueried.Should().Be(expectedEventsQueried);
        }
예제 #3
0
 public void UpdateProjection(Order.ItemRemoved @event)
 {
 }