Passed
Push — master ( f02495...4136df )
by Alexander
01:44
created

NavBarTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 134
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 89
dl 0
loc 134
rs 10
c 1
b 0
f 0
wmc 5
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Yii\Bootstrap4\Tests;
6
7
use Yiisoft\Yii\Bootstrap4\Nav;
8
use Yiisoft\Yii\Bootstrap4\NavBar;
9
10
/**
11
 * Tests for NavBar widget.
12
 *
13
 * NavBarTest
14
 */
15
final class NavBarTest extends TestCase
16
{
17
    public function testRender(): void
18
    {
19
        NavBar::counter(0);
20
21
        $html = NavBar::begin()
22
            ->brandLabel('My Company')
23
            ->brandUrl('/')
24
            ->options([
25
                'class' => 'navbar-inverse navbar-static-top navbar-frontend',
26
            ])
27
            ->start();
28
29
        $html .= NavBar::end();
30
31
        $expected = <<<EXPECTED
32
<nav id="w0-navbar" class="navbar-inverse navbar-static-top navbar-frontend navbar">
33
<div class="container">
34
<a class="navbar-brand" href="/">My Company</a>
35
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#w0-collapse" aria-controls="w0-collapse" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
36
<div id="w0-collapse" class="collapse navbar-collapse">
37
</div>
38
</div>
39
</nav>
40
EXPECTED;
41
42
        $this->assertEqualsWithoutLE($expected, $html);
43
    }
44
45
    public function testBrandImage(): void
46
    {
47
        NavBar::counter(0);
48
49
        $html = NavBar::begin()
50
            ->brandImage('/images/test.jpg')
51
            ->brandUrl('/')
52
            ->start();
53
54
        $html .= NavBar::end();
55
56
        $this->assertStringContainsString(
57
            '<a class="navbar-brand" href="/"><img src="/images/test.jpg" alt=""></a>',
58
            $html
59
        );
60
    }
61
62
    public function testBrandLink(): void
63
    {
64
        NavBar::counter(0);
65
66
        $html = NavBar::begin()
67
            ->brandLabel('Yii Framework')
68
            ->brandUrl('/index.php')
69
            ->start();
70
71
        $html .= NavBar::end();
72
73
        $this->assertStringContainsString(
74
            '<a class="navbar-brand" href="/index.php">Yii Framework</a>',
75
            $html
76
        );
77
    }
78
79
    public function testBrandSpan(): void
80
    {
81
        NavBar::counter(0);
82
83
        $html = NavBar::begin()
84
            ->brandLabel('Yii Framework')
85
            ->brandUrl('')
86
            ->start();
87
88
        $html .= NavBar::end();
89
90
        $this->assertStringContainsString(
91
            '<span class="navbar-brand">Yii Framework</span>',
92
            $html
93
        );
94
    }
95
96
    public function testNavAndForm(): void
97
    {
98
        NavBar::counter(0);
99
100
        $html = NavBar::begin()
101
            ->brandLabel('My Company')
102
            ->brandUrl('/')
103
            ->start();
104
105
        $html .= Nav::widget()
106
            ->items([
107
                ['label' => 'Home', 'url' => '#'],
108
                ['label' => 'Link', 'url' => '#'],
109
                ['label' => 'Dropdown', 'items' => [
110
                        ['label' => 'Action', 'url' => '#'],
111
                        ['label' => 'Another action', 'url' => '#'],
112
                        '-',
113
                        ['label' => 'Something else here', 'url' => '#'],
114
                    ]
115
                ]
116
            ])
117
            ->options(['class' => ['mr-auto']])
118
            ->render();
119
120
        $html .= <<<HTML
121
<form class="form-inline my-2 my-lg-0">
122
<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
123
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
124
</form>
125
HTML;
126
127
        $html .= NavBar::end();
128
129
        $expected = <<<EXPECTED
130
<nav id="w0-navbar" class="navbar navbar-expand-lg navbar-light bg-light">
131
<div class="container">
132
<a class="navbar-brand" href="/">My Company</a>
133
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#w0-collapse" aria-controls="w0-collapse" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
134
<div id="w0-collapse" class="collapse navbar-collapse">
135
<ul id="w1-nav" class="mr-auto nav"><li class="nav-item"><a class="nav-link" href="#">Home</a></li>
136
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
137
<li class="dropdown nav-item"><a class="dropdown-toggle nav-link" href="#" data-toggle="dropdown">Dropdown</a><div id="w2-dropdown" class="dropdown-menu"><a class="dropdown-item" href="#">Action</a>
138
<a class="dropdown-item" href="#">Another action</a>
139
<div class="dropdown-divider"></div>
140
<a class="dropdown-item" href="#">Something else here</a></div></li></ul><form class="form-inline my-2 my-lg-0">
141
<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
142
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
143
</form></div>
144
</div>
145
</nav>
146
EXPECTED;
147
148
        $this->assertEqualsWithoutLE($expected, $html);
149
    }
150
}
151