1 | <?php |
||
11 | class DelayEventDispatcherTest extends \PHPUnit_Framework_TestCase |
||
12 | { |
||
13 | /** |
||
14 | * @var DelayEventDispatcher |
||
15 | */ |
||
16 | private $dispatcher; |
||
17 | |||
18 | private $decoratedDispatcher; |
||
19 | |||
20 | protected function setUp() |
||
21 | { |
||
22 | $this->decoratedDispatcher = Phake::mock('Symfony\Component\EventDispatcher\EventDispatcherInterface'); |
||
23 | $this->dispatcher = new DelayEventDispatcher($this->decoratedDispatcher, array('delayable.event')); |
||
24 | } |
||
25 | |||
26 | public function testDispatch() |
||
27 | { |
||
28 | $eventName = 'foo'; |
||
29 | $event = Phake::mock('Symfony\Component\EventDispatcher\Event'); |
||
30 | $this->dispatcher->dispatch($eventName, $event); |
||
31 | Phake::verify($this->decoratedDispatcher)->dispatch($eventName, $event); |
||
32 | |||
33 | $delayEvent = Phake::mock('Itkg\DelayEventBundle\Model\Event'); |
||
34 | $this->dispatcher->dispatch($eventName, $delayEvent); |
||
35 | Phake::verify($this->decoratedDispatcher)->dispatch($eventName, $delayEvent); |
||
36 | |||
37 | $eventName = 'delayable.event'; |
||
38 | $this->dispatcher->dispatch($eventName, $event); |
||
39 | Phake::verify($this->decoratedDispatcher)->dispatch($eventName, $event); |
||
40 | |||
41 | Phake::when($delayEvent)->isDelayed()->thenReturn(true); |
||
42 | $this->dispatcher->dispatch($eventName, $delayEvent); |
||
43 | Phake::verify($this->decoratedDispatcher)->dispatch(DelayableEvents::DELAY, Phake::capture($newEvent)); |
||
44 | $this->assertInstanceOf('Itkg\DelayEventBundle\Event\DelayableEvent', $newEvent); |
||
45 | Phake::verify($delayEvent)->setOriginalName($eventName); |
||
46 | /** @var \Itkg\DelayEventBundle\Event\DelayableEvent $newEvent */ |
||
47 | $this->assertEquals($delayEvent, $newEvent->getDelayedEvent()); |
||
48 | } |
||
49 | } |
||
50 |