Completed
Push — master ( f37f32...4d2e3a )
by Clément
01:17
created

DelayEventDispatcherTest::testDispatch()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
c 1
b 1
f 0
dl 0
loc 23
rs 9.0856
cc 1
eloc 17
nc 1
nop 0
1
<?php
2
namespace Itkg\DelayEventBundle\Tests\EventDispatcher;
3
4
use Itkg\DelayEventBundle\Event\DelayableEvents;
5
use Itkg\DelayEventBundle\EventDispatcher\DelayEventDispatcher;
6
use Phake;
7
8
/**
9
 * Class DelayEventDispatcherTest
10
 */
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