Completed
Pull Request — master (#20)
by Julien
03:19
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));
0 ignored issues
show
Bug introduced by
The variable $newEvent does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
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