Completed
Push — master ( 91fdab...75a7b9 )
by
unknown
13:37
created

Security/MaxNumberByIpEventListenerTest.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Kunstmaan\VotingBundle\Tests\EventListener\Security;
4
5
use Kunstmaan\VotingBundle\Event\Facebook\FacebookLikeEvent;
6
use Kunstmaan\VotingBundle\EventListener\Security\MaxNumberByIpEventListener;
7
use Symfony\Component\HttpFoundation\Request;
8
use Symfony\Component\HttpFoundation\Response;
9
10
/**
11
* Test Max Number by Ip event listener
12
*/
13
class MaxNumberByIpEventListenerTest extends \PHPUnit_Framework_TestCase
14
{
15
    /**
16
     * @param $returnNull
17
     * @param int $voteNumber
18
     * @return \Kunstmaan\VotingBundle\Services\RepositoryResolver
19
     */
20
    protected function mockRepositoryResolver($returnNull, $voteNumber = 0)
21
    {
22
        $mockedRepository = null ;
23
24
        if (!$returnNull) {
25
            $mockedRepository = $this->createMock('Kunstmaan\VotingBundle\Repository\AbstractVoteRepository');//, array('countByReferenceAndByIp'), array() , 'MockedRepository', false);
26
27
            $mockedRepository->expects($this->any())
28
             ->method('countByReferenceAndByIp')
29
             ->will($this->returnValue($voteNumber));
30
        }
31
32
        $mockedResolver = $this->createMock('Kunstmaan\VotingBundle\Services\RepositoryResolver');//, array('getRepositoryForEvent'), array() , 'MockedResolver', false);
33
34
        $mockedResolver->expects($this->any())
35
             ->method('getRepositoryForEvent')
36
             ->will($this->returnValue($mockedRepository));
37
38
        /** @var \Kunstmaan\VotingBundle\Services\RepositoryResolver $mockedResolver */
39
        return $mockedResolver;
40
41
    }
42
43
    /**
44
    * @dataProvider dataTestOnVote
45
    */
46
    public function testOnVote($maxNumber, $number, $stopPropagation)
47
    {
48
49
        $mockedEvent = $this->createMock('Kunstmaan\VotingBundle\Event\UpDown\UpVoteEvent');//, array('stopPropagation'), array(new Request(), null, null));
50
51
        if ($stopPropagation) {
52
            $mockedEvent->expects($this->once())
53
                ->method('stopPropagation');
54
55
        } else {
56
            $mockedEvent->expects($this->never())
57
                ->method('stopPropagation');
58
        }
59
60
        $mockedEvent->expects($this->any())
61
            ->method('getRequest')
62
            ->willReturn(new Request());
63
64
        $resolver = $this->mockRepositoryResolver(false, $number);
65
66
        $listener = new MaxNumberByIpEventListener($resolver, $maxNumber);
67
68
        $listener->onVote($mockedEvent);
69
70
    }
71
72
    /**
73
     * @dataProvider dataTestOnVote
74
     */
75
    public function testOnVoteReturnsNothing($maxNumber, $number, $stopPropagation)
76
    {
77
78
        $event = new FacebookLikeEvent(new Request, new Response(), 2);
79
80
        $resolver = $this->mockRepositoryResolver(false, $number);
81
82
        $listener = new MaxNumberByIpEventListener($resolver, $maxNumber);
83
84
        $this->assertNull($listener->onVote($event));
85
86
    }
87
88
    /**
89
    * Data for test on vote
90
    *
91
    * @return array
0 ignored issues
show
Consider making the return type a bit more specific; maybe use array<integer|boolean>[].

This check looks for the generic type array as a return type and suggests a more specific type. This type is inferred from the actual code.

Loading history...
92
    */
93
    public function dataTestOnVote()
94
    {
95
        return array(
96
            array(2, 2, true),
97
            array(2, 1, false),
98
            array(2, 3, true)
99
        );
100
    }
101
102
}
103