/** * @param Event $event * @return Projection[] */ private function projectionsForEvent(Event $event) : array { if (!isset($this->projectionsForEvent[$event->getName()])) { return []; } return $this->projectionsForEvent[$event->getName()]; }
/** * @param Event $event * @return EventSubscriber[] */ private function subscribersForEvent(Event $event) : array { if (!isset($this->subscribersByEvent[$event->getName()])) { return []; } return $this->subscribersByEvent[$event->getName()]; }
function it_allows_to_reload_all_registered_projections(Projection $projection1, Projection $projection2, EventSubscribers $subscribers, Event $event, Event $secondEvent) { $subscribers->registerSubscriber(Argument::cetera())->willReturn(); $this->registerProjection('EventNameOccurred', $projection1); $this->registerProjection('EventNameOccurred', $projection2); $event->getName()->willReturn('EventNameOccurred'); $secondEvent->getName()->willReturn('OtherEventOccurred'); $this->clear(); $this->notify(new EventStream(new EventStream\Name('test'), [$event->getWrappedObject(), $secondEvent->getWrappedObject()])); $projection1->clear()->shouldHaveBeenCalled(); $projection2->clear()->shouldHaveBeenCalled(); $projection1->notify($event)->shouldHaveBeenCalled(); $projection2->notify($event)->shouldHaveBeenCalled(); }
private function insertEvent(EventStream\Name $streamName, Event $event) { $this->connection->insert(SchemaManager::normalizeToTableName($streamName), ['aggregate_id' => (string) $event->getAggreagateRootId(), 'name' => $event->getName(), 'occurred_on' => $event->occurredOn(), 'event' => $this->serializer->serialize($event), 'event_class' => get_class($event)], [\PDO::PARAM_STR, \PDO::PARAM_STR, 'datetime', 'text', \PDO::PARAM_STR]); }
function it_working_with_not_registered_event_as_well(Event $event) { $event->getName()->willReturn('OtherEventOccured'); $this->notify($event); }
function it_notify_subcribers_registered_for_given_event(Event $event, EventSubscriber $someEventOccuredSubcriber) { $event->getName()->willReturn('SomeEventOccured'); $this->notify(new EventStream(new EventStream\Name('test'), [$event->getWrappedObject()])); $someEventOccuredSubcriber->notify($event)->shouldHaveBeenCalled(); }