Completed
Push — master ( c5c436...b453a3 )
by Ruud
15:58
created

MenuBundle/Tests/unit/Entity/MenuItemTest.php (1 issue)

Severity

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\MenuBundle\Tests\Entity;
4
5
use Doctrine\Common\Collections\ArrayCollection;
6
use Kunstmaan\MenuBundle\Entity\BaseMenuItem;
7
use Kunstmaan\MenuBundle\Entity\Menu;
8
use Kunstmaan\MenuBundle\Entity\MenuItem;
9
use Kunstmaan\NodeBundle\Entity\Node;
10
use Kunstmaan\NodeBundle\Entity\NodeTranslation;
11
use PHPUnit\Framework\TestCase;
12
use Symfony\Component\Validator\Context\ExecutionContext;
13
use Symfony\Component\Validator\Violation\ConstraintViolationBuilder;
14
15
class MenuItemTest extends TestCase
16
{
17
    public function testGetSetParent()
18
    {
19
        $son = new MenuItem();
20
        $daddy = new MenuItem();
21
22
        $son->setParent($daddy);
23
        $this->assertInstanceOf(MenuItem::class, $son->getParent());
24
    }
25
26
    public function testGetSetChildren()
27
    {
28
        $daddy = new MenuItem();
29
        $son = new MenuItem();
30
        $daughter = new MenuItem();
31
32
        $daddy->setChildren(new ArrayCollection([$son, $daughter]));
33
        $this->assertInstanceOf(ArrayCollection::class, $son->getChildren());
34
    }
35
36
    public function testBaseClassMethods()
37
    {
38
        $item = new MenuItem();
39
        $menu = new Menu();
40
        $nodeTranslation = new NodeTranslation();
41
42
        $item->setMenu($menu);
43
        $item->setType('Rubber Chicken');
44
        $item->setNodeTranslation($nodeTranslation);
45
        $item->setTitle('Buy Bitcoin Cash!');
46
        $item->setUrl('https://nasa.gov');
47
        $item->setNewWindow(true);
48
        $item->setLft(5);
49
        $item->setLvl(6);
50
        $item->setRgt(7);
51
52
        $this->assertInstanceOf(Menu::class, $item->getMenu());
53
        $this->assertEquals('Rubber Chicken', $item->getType());
54
        $this->assertInstanceOf(NodeTranslation::class, $item->getNodeTranslation());
55
        $this->assertEquals('Buy Bitcoin Cash!', $item->getTitle());
56
        $this->assertEquals('https://nasa.gov', $item->getUrl());
57
        $this->assertTrue($item->isNewWindow());
58
        $this->assertEquals(5, $item->getLft());
59
        $this->assertEquals(6, $item->getLvl());
60
        $this->assertEquals(7, $item->getRgt());
61
    }
62
63 View Code Duplication
    public function testGetDisplayUrl()
64
    {
65
        $item = new MenuItem();
66
        $nodeTranslation = new NodeTranslation();
67
68
        $nodeTranslation->setUrl('https://nasa.gov');
69
        $item->setType(BaseMenuItem::TYPE_PAGE_LINK);
70
        $item->setUrl('https://bitcoinwisdom.com');
71
        $item->setNodeTranslation($nodeTranslation);
72
73
        $this->assertEquals('https://nasa.gov', $item->getDisplayUrl());
74
75
        $item->setType(BaseMenuItem::TYPE_URL_LINK);
76
        $this->assertEquals('https://bitcoinwisdom.com', $item->getDisplayUrl());
77
    }
78
79 View Code Duplication
    public function testGetDisplayTitle()
80
    {
81
        $item = new MenuItem();
82
        $nodeTranslation = new NodeTranslation();
83
84
        $nodeTranslation->setTitle('Node');
85
        $item->setType(BaseMenuItem::TYPE_PAGE_LINK);
86
        $item->setNodeTranslation($nodeTranslation);
87
        $this->assertEquals('Node', $item->getDisplayTitle());
88
89
        $item->setTitle('Hello');
90
        $this->assertEquals('Hello', $item->getDisplayTitle());
91
92
        $item->setType(BaseMenuItem::TYPE_URL_LINK);
93
        $this->assertEquals('Hello', $item->getDisplayTitle());
94
    }
95
96
    public function testIsOnline()
97
    {
98
        $item = new MenuItem();
99
        $nodeTranslation = new NodeTranslation();
100
        $node = new Node();
101
        $node->setDeleted(false);
102
        $nodeTranslation->setOnline(false);
103
        $nodeTranslation->setNode($node);
104
        $item->setNodeTranslation($nodeTranslation);
105
106
        $this->assertFalse($item->isOnline());
107
108
        $item->setType(BaseMenuItem::TYPE_URL_LINK);
109
        $this->assertTrue($item->isOnline());
110
111
        $item->setType(BaseMenuItem::TYPE_PAGE_LINK);
112
        $this->assertFalse($item->isOnline());
113
114
        $nodeTranslation->setOnline(true);
115
        $this->assertTrue($item->isOnline());
116
    }
117
118
    public function testValidateEntity()
119
    {
120
        $nodeTranslation = $this->createMock(NodeTranslation::class);
121
        $item = new MenuItem();
122
        $item->setType(MenuItem::TYPE_PAGE_LINK);
123
        $item->setNodeTranslation($nodeTranslation);
0 ignored issues
show
$nodeTranslation is of type object<PHPUnit\Framework\MockObject\MockObject>, but the function expects a object<Kunstmaan\NodeBun...Entity\NodeTranslation>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
124
        $item->setTitle('Title');
125
        $item->setUrl('Url');
126
127
        $violationBuilder = $this->getMockBuilder(ConstraintViolationBuilder::class)
128
            ->disableOriginalConstructor()
129
            ->getMock();
130
131
        $violationBuilder->expects($this->never())
132
            ->method('atPath')
133
            ->will($this->returnValue($violationBuilder));
134
135
        $violationBuilder->expects($this->never())
136
            ->method('addViolation')
137
            ->will($this->returnValue(true));
138
139
        $context = $this->getMockBuilder(ExecutionContext::class)
140
            ->disableOriginalConstructor()
141
            ->getMock();
142
143
        $context->expects($this->never())
144
        ->method('buildViolation')
145
        ->will($this->returnValue($violationBuilder));
146
147
        $item->validateEntity($context);
148
        $item->setType(MenuItem::TYPE_URL_LINK);
149
        $item->validateEntity($context);
150
    }
151
}
152