<?php
namespace Wingu\OctopusCore\EventDispatcher\Tests\Unit;
class EventDispatcherTraitTest extends TestCase {
protected function getMockForEventDispatcherTrait() {
return $this->getObjectForTrait('Wingu\OctopusCore\EventDispatcher\EventDispatcherTrait', [], '', false);
}
public function testSetGetEventDispatcher() {
$trait = $this->getMockForEventDispatcherTrait();
$this->assertInstanceOf('\Wingu\OctopusCore\EventDispatcher\EventDispatcherInterface', $trait->getEventDispatcher());
$EventDispatcher = $this->getMock('\Wingu\OctopusCore\EventDispatcher\EventDispatcherInterface');
$trait->setEventDispatcher($EventDispatcher);
$this->assertSame($EventDispatcher, $trait->getEventDispatcher());
}
public function testProxyMethods() {
$trait = $this->getMockForEventDispatcherTrait();
$EventDispatcher = $this->getMock('\Wingu\OctopusCore\EventDispatcher\EventDispatcherInterface');
// Raise event.
$eventName = 'testEvent';
$event = $this->getMock('\Wingu\OctopusCore\EventDispatcher\EventInterface');
$EventDispatcher->expects($this->once())->method('raiseEvent')->with($eventName, $event)->will($this->returnSelf());
// Raise event until.
$callback = function() {};
$EventDispatcher->expects($this->once())->method('raiseEventUntil')->with($eventName, $event, $callback)->will($this->returnSelf());
// Add subscription.
$subscription = $this->getMock('\Wingu\OctopusCore\EventDispatcher\SubscriptionInterface');
$EventDispatcher->expects($this->once())->method('addSubscription')->with($subscription)->will($this->returnSelf());
// Subscribe.
$eventNameMatcher = $this->getMock('\Wingu\OctopusCore\EventDispatcher\EventNameMatcher\EventNameMatcherInterface');
$EventDispatcher->expects($this->once())->method('subscribe')->with($eventNameMatcher, $callback, 27)->will($this->returnSelf());
// On.
$EventDispatcher->expects($this->once())->method('on')->with($eventName, $callback, 27)->will($this->returnSelf());
// Add subscriber.
$subscriber = $this->getMock('\Wingu\OctopusCore\EventDispatcher\EventSubscriberInterface');
$EventDispatcher->expects($this->once())->method('addSubscriber')->with($subscriber)->will($this->returnSelf());
// Unsubscribe.
$EventDispatcher->expects($this->once())->method('unsubscribe')->with($eventNameMatcher, $callback)->will($this->returnSelf());
// Off.
$EventDispatcher->expects($this->once())->method('off')->with($eventName, $callback)->will($this->returnSelf());
// Remove subscriber.
$EventDispatcher->expects($this->once())->method('removeSubscriber')->with($subscriber)->will($this->returnSelf());
// Get subscriptions.
$EventDispatcher->expects($this->once())->method('getSubscriptions')->will($this->returnValue('getSubscriptions'));
// Get event subscriptions.
$EventDispatcher->expects($this->once())->method('getEventSubscriptions')->with($eventName)->will($this->returnValue('getEventSubscriptions'));
// Has subscriptions.
$EventDispatcher->expects($this->once())->method('hasSubscriptions')->will($this->returnValue(false));
// Has event subscriptions.
$EventDispatcher->expects($this->once())->method('hasEventSubscriptions')->with($eventName)->will($this->returnValue(false));
$this->assertSame($trait, $trait->setEventDispatcher($EventDispatcher));
$this->assertSame($EventDispatcher, $trait->raiseEvent($eventName, $event));
$this->assertSame($EventDispatcher, $trait->raiseEventUntil($eventName, $event, $callback));
$this->assertSame($EventDispatcher, $trait->addSubscription($subscription));
$this->assertSame($EventDispatcher, $trait->subscribe($eventNameMatcher, $callback, 27));
$this->assertSame($EventDispatcher, $trait->on($eventName, $callback, 27));
$this->assertSame($EventDispatcher, $trait->addSubscriber($subscriber));
$this->assertSame($EventDispatcher, $trait->unsubscribe($eventNameMatcher, $callback));
$this->assertSame($EventDispatcher, $trait->off($eventName, $callback));
$this->assertSame($EventDispatcher, $trait->removeSubscriber($subscriber));
$this->assertSame('getSubscriptions', $trait->getSubscriptions());
$this->assertSame('getEventSubscriptions', $trait->getEventSubscriptions($eventName));
$this->assertFalse($trait->hasSubscriptions());
$this->assertFalse($trait->hasEventSubscriptions($eventName));
}
}
|