Completed
Push — master ( 27ccf0...ab918a )
by Pablo
7s
created

testWithoutFirstPageParam()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 17
rs 9.4285
cc 1
eloc 4
nc 1
nop 0
1
<?php
2
3
namespace Pablodip\ModuleTestBundle\Tests\Module;
4
5
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
6
7
class PagerfantaControllerTest extends WebTestCase
8
{
9
10
    public function testDefaultView()
11
    {
12
        $this->assertView('default-view', <<<EOF
13
<nav>
14
    <span class="disabled">Previous</span>
15
    <span class="current">1</span>
16
    <a href="/pagerfanta/default-view?page=2">2</a>
17
    <a href="/pagerfanta/default-view?page=3">3</a>
18
    <a href="/pagerfanta/default-view?page=4">4</a>
19
    <a href="/pagerfanta/default-view?page=5">5</a>
20
    <span class="dots">...</span>
21
    <a href="/pagerfanta/default-view?page=10">10</a>
22
    <a href="/pagerfanta/default-view?page=2">Next</a>
23
</nav>
24
EOF
25
        );
26
    }
27
28
    public function testTwitterBootstrapView()
29
    {
30
        $this->assertView('twitter-bootstrap-view', <<<EOF
31
<div class="pagination">
32
    <ul>
33
        <li class="prev disabled"><span>&larr; Previous</span></li>
34
        <li class="active"><span>1</span></li>
35
        <li><a href="/pagerfanta/twitter-bootstrap-view?page=2">2</a></li>
36
        <li><a href="/pagerfanta/twitter-bootstrap-view?page=3">3</a></li>
37
        <li><a href="/pagerfanta/twitter-bootstrap-view?page=4">4</a></li>
38
        <li><a href="/pagerfanta/twitter-bootstrap-view?page=5">5</a></li>
39
        <li><a href="/pagerfanta/twitter-bootstrap-view?page=6">6</a></li>
40
        <li><a href="/pagerfanta/twitter-bootstrap-view?page=7">7</a></li>
41
        <li class="disabled"><span>&hellip;</span></li>
42
        <li><a href="/pagerfanta/twitter-bootstrap-view?page=10">10</a></li>
43
        <li class="next"><a href="/pagerfanta/twitter-bootstrap-view?page=2">Next &rarr;</a></li>
44
    </ul>
45
</div>
46
EOF
47
        );
48
    }
49
50
    public function testTwitterBootstrap3View()
51
    {
52
        $this->assertView('twitter-bootstrap3-view', <<<EOF
53
<ul class="pagination">
54
    <li class="prev disabled"><span>&larr; Previous</span></li>
55
    <li class="active"><span>1 <span class="sr-only">(current)</span></span></li>
56
    <li><a href="/pagerfanta/twitter-bootstrap3-view?page=2">2</a></li>
57
    <li><a href="/pagerfanta/twitter-bootstrap3-view?page=3">3</a></li>
58
    <li><a href="/pagerfanta/twitter-bootstrap3-view?page=4">4</a></li>
59
    <li><a href="/pagerfanta/twitter-bootstrap3-view?page=5">5</a></li>
60
    <li><a href="/pagerfanta/twitter-bootstrap3-view?page=6">6</a></li>
61
    <li><a href="/pagerfanta/twitter-bootstrap3-view?page=7">7</a></li>
62
    <li class="disabled"><span>&hellip;</span></li>
63
    <li><a href="/pagerfanta/twitter-bootstrap3-view?page=10">10</a></li>
64
    <li class="next"><a href="/pagerfanta/twitter-bootstrap3-view?page=2">Next &rarr;</a></li>
65
</ul>
66
EOF
67
        );
68
    }
69
70
    public function testViewWithOptions()
71
    {
72
        $this->assertView('view-with-options', <<<EOF
73
<nav>
74
    <span class="disabled">Previous</span>
75
    <span class="current">1</span>
76
    <a href="/pagerfanta/view-with-options?page=2">2</a>
77
    <a href="/pagerfanta/view-with-options?page=3">3</a>
78
    <span class="dots">...</span>
79
    <a href="/pagerfanta/view-with-options?page=10">10</a>
80
    <a href="/pagerfanta/view-with-options?page=2">Next</a>
81
</nav>
82
EOF
83
        );
84
    }
85
86
    public function testDefaultTranslatedView()
87
    {
88
        $this->assertView('default-translated-view', <<<EOF
89
<nav>
90
    <span class="disabled">&#171; Anterior</span>
91
    <span class="current">1</span>
92
    <a href="/pagerfanta/default-translated-view?page=2">2</a>
93
    <a href="/pagerfanta/default-translated-view?page=3">3</a>
94
    <a href="/pagerfanta/default-translated-view?page=4">4</a>
95
    <a href="/pagerfanta/default-translated-view?page=5">5</a>
96
    <span class="dots">...</span>
97
    <a href="/pagerfanta/default-translated-view?page=10">10</a>
98
    <a href="/pagerfanta/default-translated-view?page=2">Siguiente &#187;</a>
99
</nav>
100
EOF
101
        );
102
    }
103
104
    public function testTwitterBootstrapTranslatedView()
105
    {
106
        $this->assertView('twitter-bootstrap-translated-view', <<<EOF
107
<div class="pagination">
108
    <ul>
109
        <li class="prev disabled"><span>&larr; Anterior</span></li>
110
        <li class="active"><span>1</span></li>
111
        <li><a href="/pagerfanta/twitter-bootstrap-translated-view?page=2">2</a></li>
112
        <li><a href="/pagerfanta/twitter-bootstrap-translated-view?page=3">3</a></li>
113
        <li><a href="/pagerfanta/twitter-bootstrap-translated-view?page=4">4</a></li>
114
        <li><a href="/pagerfanta/twitter-bootstrap-translated-view?page=5">5</a></li>
115
        <li><a href="/pagerfanta/twitter-bootstrap-translated-view?page=6">6</a></li>
116
        <li><a href="/pagerfanta/twitter-bootstrap-translated-view?page=7">7</a></li>
117
        <li class="disabled"><span>&hellip;</span></li>
118
        <li><a href="/pagerfanta/twitter-bootstrap-translated-view?page=10">10</a></li>
119
        <li class="next"><a href="/pagerfanta/twitter-bootstrap-translated-view?page=2">Siguiente &rarr;</a></li>
120
    </ul>
121
</div>
122
EOF
123
        );
124
    }
125
126
    public function testTwitterBootstrap3TranslatedView()
127
    {
128
        $this->assertView('twitter-bootstrap3-translated-view', <<<EOF
129
<ul class="pagination">
130
    <li class="prev disabled"><span>&larr; Anterior</span></li>
131
    <li class="active"><span>1 <span class="sr-only">(current)</span></span></li>
132
    <li><a href="/pagerfanta/twitter-bootstrap3-translated-view?page=2">2</a></li>
133
    <li><a href="/pagerfanta/twitter-bootstrap3-translated-view?page=3">3</a></li>
134
    <li><a href="/pagerfanta/twitter-bootstrap3-translated-view?page=4">4</a></li>
135
    <li><a href="/pagerfanta/twitter-bootstrap3-translated-view?page=5">5</a></li>
136
    <li><a href="/pagerfanta/twitter-bootstrap3-translated-view?page=6">6</a></li>
137
    <li><a href="/pagerfanta/twitter-bootstrap3-translated-view?page=7">7</a></li>
138
    <li class="disabled"><span>&hellip;</span></li>
139
    <li><a href="/pagerfanta/twitter-bootstrap3-translated-view?page=10">10</a></li>
140
    <li class="next"><a href="/pagerfanta/twitter-bootstrap3-translated-view?page=2">Siguiente &rarr;</a></li>
141
</ul>
142
EOF
143
        );
144
    }
145
146
    public function testMyView1()
147
    {
148
        $this->assertView('my-view-1', <<<EOF
149
<nav>
150
    <span class="disabled">Anterior</span>
151
    <span class="current">1</span>
152
    <a href="/pagerfanta/my-view-1?page=2">2</a>
153
    <a href="/pagerfanta/my-view-1?page=3">3</a>
154
    <a href="/pagerfanta/my-view-1?page=4">4</a>
155
    <a href="/pagerfanta/my-view-1?page=5">5</a>
156
    <span class="dots">...</span>
157
    <a href="/pagerfanta/my-view-1?page=10">10</a>
158
    <a href="/pagerfanta/my-view-1?page=2">Siguiente</a>
159
</nav>
160
EOF
161
        );
162
    }
163
164
    public function testViewWithRouteParams()
165
    {
166
        $this->assertView('view-with-route-params', <<<EOF
167
<nav>
168
    <span class="disabled">Previous</span>
169
    <span class="current">1</span>
170
    <a href="/pagerfanta/view-with-route-params?test=im-a-test&page=2">2</a>
171
    <a href="/pagerfanta/view-with-route-params?test=im-a-test&page=3">3</a>
172
    <a href="/pagerfanta/view-with-route-params?test=im-a-test&page=4">4</a>
173
    <a href="/pagerfanta/view-with-route-params?test=im-a-test&page=5">5</a>
174
    <span class="dots">...</span><a href="/pagerfanta/view-with-route-params?test=im-a-test&page=10">10</a>
175
    <a href="/pagerfanta/view-with-route-params?test=im-a-test&page=2">Next</a>
176
</nav>
177
EOF
178
);
179
180
    }
181
182
    /**
183
     * @test
184
     */
185
    public function testOutOfRangeExceptionWithNoneStrategy()
186
    {
187
        $client = static::createClient();
188
        $client->request('GET', $this->buildViewUrl('custom-page?currentPage=51'));
189
190
        $response = $client->getResponse();
191
        $this->assertSame(404, $response->getStatusCode());
192
    }
193
194
    /**
195
     * @test
196
     */
197
    public function testFirstPageLinkDoesHaveParam()
198
    {
199
        $this->assertView('custom-page?currentPage=2', <<<EOF
200
<nav>
201
    <a href="/pagerfanta/custom-page?currentPage=2&page=1">Previous</a>
202
    <a href="/pagerfanta/custom-page?currentPage=2&page=1">1</a>
203
    <span class="current">2</span>
204
    <a href="/pagerfanta/custom-page?currentPage=2&page=3">3</a>
205
    <a href="/pagerfanta/custom-page?currentPage=2&page=4">4</a>
206
    <a href="/pagerfanta/custom-page?currentPage=2&page=5">5</a>
207
    <span class="dots">...</span>
208
    <a href="/pagerfanta/custom-page?currentPage=2&page=10">10</a>
209
    <a href="/pagerfanta/custom-page?currentPage=2&page=3">Next</a>
210
</nav>
211
EOF
212
        );
213
    }
214
215
    /**
216
     * @test
217
     */
218
    public function testWithoutFirstPageParam()
219
    {
220
        $this->assertView('view-without-first-page-param?currentPage=2', <<<EOF
221
<nav>
222
    <a href="/pagerfanta/view-without-first-page-param?currentPage=2">Previous</a>
223
    <a href="/pagerfanta/view-without-first-page-param?currentPage=2">1</a>
224
    <span class="current">2</span>
225
    <a href="/pagerfanta/view-without-first-page-param?currentPage=2&page=3">3</a>
226
    <a href="/pagerfanta/view-without-first-page-param?currentPage=2&page=4">4</a>
227
    <a href="/pagerfanta/view-without-first-page-param?currentPage=2&page=5">5</a>
228
    <span class="dots">...</span>
229
    <a href="/pagerfanta/view-without-first-page-param?currentPage=2&page=10">10</a>
230
    <a href="/pagerfanta/view-without-first-page-param?currentPage=2&page=3">Next</a>
231
</nav>
232
EOF
233
        );
234
    }
235
236
    /**
237
     * @test
238
     */
239
    public function testWrongMaxPerPageExceptionWithNoneStrategy()
240
    {
241
        $client = static::createClient();
242
        $client->request('GET', $this->buildViewUrl('custom-page?maxPerPage=invalid'));
243
244
        $response = $client->getResponse();
245
        $this->assertSame(404, $response->getStatusCode());
246
    }
247
248
    /**
249
     * @test
250
     */
251
    public function testOutOfRangeExceptionWithToHttpNotFoundStrategy()
252
    {
253
        $client = static::createClient(array('environment' => 'test_convert_exceptions'));
254
255
        $client->request('GET', $this->buildViewUrl('custom-page?currentPage=51'));
256
257
        $response = $client->getResponse();
258
        $this->assertSame(404, $response->getStatusCode());
259
    }
260
261
    /**
262
     * @test
263
     */
264
    public function testWrongMaxPerPageExceptionWithToHttpNotFoundStrategy()
265
    {
266
        $client = static::createClient(array('environment' => 'test_convert_exceptions'));
267
        $client->request('GET', $this->buildViewUrl('custom-page?maxPerPage=invalid'));
268
269
        $response = $client->getResponse();
270
        $this->assertSame(404, $response->getStatusCode());
271
    }
272
273
    /**
274
     * @test
275
     */
276
    public function testCorrectMaxPerPageAndCurrentPageWithNoneStrategy()
277
    {
278
        $client = static::createClient();
279
        $client->request('GET', $this->buildViewUrl('custom-page?maxPerPage=10&currentPage=1'));
280
281
        $response = $client->getResponse();
282
        $this->assertSame(200, $response->getStatusCode());
283
    }
284
285
    private function assertView($view, $html)
286
    {
287
        $client = static::createClient();
288
289
        $crawler = $client->request('GET', $this->buildViewUrl($view));
0 ignored issues
show
Unused Code introduced by
$crawler is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
290
291
        $response = $client->getResponse();
292
        $this->assertSame(200, $response->getStatusCode());
293
        $this->assertSame($this->removeWhitespacesBetweenTags($html), $response->getContent());
294
    }
295
296
    private function buildViewUrl($view)
297
    {
298
        return sprintf('/pagerfanta/%s', $view);
299
    }
300
301
    private function removeWhitespacesBetweenTags($string)
302
    {
303
        return preg_replace('/>\s+</', '><', $string);
304
    }
305
}
306