public function testSubscription_withFilter() { /* konflikt: soll der filter TRUE oder FALSE zurückgeben um zu filtern? ich entscheide mich für: TRUE wenn das Event getriggered werden soll FALSE wenn das Event verworfen werden soll Eselsbrücke: FALSE ist was negatives und unterbricht damit den flow */ $callback = new CallbackSubscriber($this, 'eventListener'); $callback->setEventFilter(function ($event) { return $event->getData()->filterReturn; }); $myEventName = 'PscCodeEventCallbackSubscriberTest.Happening'; // wir binden uns an das event $this->manager->bind($callback, $myEventName); // test mit filterValue, sodass das event nicht weitergegeben wird mit call() $this->listenedEvent = NULL; $expectedEvent = $this->manager->dispatchEvent($myEventName, array('filterReturn' => FALSE), $this); $this->assertEmpty($this->listenedEvent, 'Event ist gesetzt worden'); // test mit filterValue die nicht gefiltert wird $this->listenedEvent = NULL; $expectedEvent = $this->manager->dispatchEvent($myEventName, array('filterReturn' => TRUE), $this); $this->assertSame($expectedEvent, $this->listenedEvent); // dispatch mit filter zurückgesetzt $callback->setEventFilter(NULL); $expectedEvent = $this->manager->dispatchEvent($myEventName, array('filterReturn' => FALSE), $this); $this->assertSame($expectedEvent, $this->listenedEvent); }
public function subscribe(ComponentsCreaterListener $listener) { $this->getManager()->bind(CallbackSubscriber::create($listener, 'onComponentCreated')->setArgumentsMapper(function ($event) { $d = $event->getData(); return array($d->component, $d->creater, $event); }), self::EVENT_COMPONENT_CREATED); }