public function testEventCanBeStopped() { $mediator = new Mediator(); $mediator->attach('foo.bar', function ($event) { $event->foo = 'bar'; $event->stop(); }); $mediator->attach('foo.bar', function ($event) { $event->bar = 'foo'; }); $event = $mediator->trigger('foo.bar', new Event()); $this->assertEquals('bar', $event->foo); $this->assertFalse(isset($event->bar)); }
public function testMediatorCanUseWildcardsForBindingToEvents() { $mediator = new Mediator(); $mediator->attach('*', function ($event) { $event->triggered[] = '*'; }); $mediator->attach('foo.*', function ($event) { $event->triggered[] = 'foo.*'; }, 100); $mediator->attach('foo.barz', function ($event) { $event->triggered[] = 'foo.barz'; }, 99); $mediator->attach('*.bar*', function ($event) { $event->triggered[] = '*.bar*'; }, 101); $event = $mediator->trigger('foo.barz', new Event()); $this->assertEquals(['*.bar*', 'foo.*', 'foo.barz', '*'], $event->triggered); $underscored = $mediator->trigger('foo.bar_baz', new Event()); $this->assertEquals(['*.bar*', 'foo.*', '*'], $underscored->triggered); }