HeaderTest::setUp()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 6
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 10
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\PropellerAdmin\Navigation;
6
7
use AbterPhp\Framework\Html\Component;
8
use AbterPhp\Framework\Html\Component\Button;
9
use PHPUnit\Framework\MockObject\MockObject;
10
use PHPUnit\Framework\TestCase;
11
12
class HeaderTest extends TestCase
13
{
14
    /** @var Header - System Under Test */
15
    protected $sut;
16
17
    /** @var Button|MockObject */
18
    protected $brandBtnMock;
19
20
    public function setUp(): void
21
    {
22
        $this->brandBtnMock = $this->getMockBuilder(Button::class)
23
            ->disableOriginalConstructor()
24
            ->onlyMethods(['__toString'])
25
            ->getMock();
26
27
        $this->sut = new Header($this->brandBtnMock);
28
29
        parent::setUp();
30
    }
31
32
    public function testRenderContainsBrandButton()
33
    {
34
        $brandBtnRendered = 'foo';
35
36
        $this->brandBtnMock->expects($this->atLeastOnce())->method('__toString')->willReturn($brandBtnRendered);
37
38
        $this->assertStringContainsString($brandBtnRendered, (string)$this->sut);
39
    }
40
41
    public function testRenderContainsHamburgerButton()
42
    {
43
        $brandBtnRendered     = 'foo';
44
        $hamburgerBtnRendered = 'bar';
45
46
        /** @var Button|MockObject $hamburgerBtnMock */
47
        $hamburgerBtnMock = $this->getMockBuilder(Button::class)
48
            ->disableOriginalConstructor()
49
            ->onlyMethods(['__toString'])
50
            ->getMock();
51
52
        $this->sut = new Header($this->brandBtnMock, $hamburgerBtnMock);
53
54
        $this->brandBtnMock->expects($this->atLeastOnce())->method('__toString')->willReturn($brandBtnRendered);
55
        $hamburgerBtnMock->expects($this->atLeastOnce())->method('__toString')->willReturn($brandBtnRendered);
56
57
        $this->assertStringContainsString($hamburgerBtnRendered, (string)$this->sut);
58
    }
59
60
    public function testGetExtended()
61
    {
62
        /** @var Button|MockObject $hamburgerBtnMock */
63
        $hamburgerBtnMock = $this->getMockBuilder(Button::class)
64
            ->disableOriginalConstructor()
65
            ->onlyMethods(['__toString'])
66
            ->getMock();
67
68
        $extraComponent = $this->getMockBuilder(Component::class)
69
            ->disableOriginalConstructor()
70
            ->onlyMethods(['__toString'])
71
            ->getMock();
72
73
        $this->sut = new Header($this->brandBtnMock, $hamburgerBtnMock);
74
75
        $this->sut[] = $extraComponent;
76
77
        $actualResult = $this->sut->getExtendedNodes();
78
79
        $this->assertContains($this->brandBtnMock, $actualResult);
80
        $this->assertContains($hamburgerBtnMock, $actualResult);
81
        $this->assertContains($extraComponent, $actualResult);
82
    }
83
}
84