@@ -68,18 +68,123 @@ public function testCheckPageNavigation()
68
68
$ this ->assertEquals (1 , $ pagerData ->getFirstPage ());
69
69
}
70
70
71
- public function testGetPages ()
71
+ /**
72
+ * @dataProvider getPagesDataProvider
73
+ * @param int $totalItems
74
+ * @param int $currentPage
75
+ * @param int $itemsPerPage
76
+ * @param int $maxPages
77
+ * @param array $resultRange
78
+ */
79
+ public function testGetPages ($ totalItems , $ itemsPerPage , $ currentPage , $ maxPages , $ resultRange )
72
80
{
73
81
$ pagerData = new PagerAwareViewData ();
74
82
$ pagerData ->setState ($ this ->createMock ('ONGR\FilterManagerBundle\Filter\FilterState ' ));
75
- $ pagerData ->setData (100 , 1 , 12 , 5 );
76
83
77
- $ this -> assertEquals ( range ( 2 , 5 , 1 ) , $ pagerData -> getPages () );
84
+ $ pagerData -> setData ( $ totalItems , $ currentPage , $ itemsPerPage , $ maxPages );
78
85
79
- $ pagerData -> setData ( 100 , 5 , 12 , 5 );
80
- $ this -> assertEquals ( range ( 4 , 7 , 1 ), $ pagerData -> getPages ());
86
+ $ this -> assertEquals ( array_values ( $ resultRange ), array_values ( $ pagerData -> getPages ()) );
87
+ }
81
88
82
- $ pagerData ->setData (100 , 9 , 12 , 5 );
83
- $ this ->assertEquals (range (6 , 9 , 1 ), $ pagerData ->getPages ());
89
+ public function getPagesDataProvider ()
90
+ {
91
+ return [
92
+ // [1]
93
+ [
94
+ 'totalItems ' => 1 ,
95
+ 'itemsPerPage ' => 10 ,
96
+ 'currentPage ' => 1 ,
97
+ 'maxPages ' => 5 ,
98
+ 'resultRange ' => [1 ]
99
+ ],
100
+ // 1 [2]
101
+ [
102
+ 'totalItems ' => 10 ,
103
+ 'itemsPerPage ' => 5 ,
104
+ 'currentPage ' => 2 ,
105
+ 'maxPages ' => 5 ,
106
+ 'resultRange ' => [1 , 2 ]
107
+ ],
108
+ // [1] 2 ... 5
109
+ [
110
+ 'totalItems ' => 25 ,
111
+ 'itemsPerPage ' => 5 ,
112
+ 'currentPage ' => 1 ,
113
+ 'maxPages ' => 3 ,
114
+ 'resultRange ' => [1 , 2 , 5 ]
115
+ ],
116
+ // 1 ... 4 [5]
117
+ [
118
+ 'totalItems ' => 25 ,
119
+ 'itemsPerPage ' => 5 ,
120
+ 'currentPage ' => 5 ,
121
+ 'maxPages ' => 3 ,
122
+ 'resultRange ' => [1 , 4 , 5 ]
123
+ ],
124
+ // [1] 2 3 4 5 6 7 8 ... 30
125
+ [
126
+ 'totalItems ' => 300 ,
127
+ 'itemsPerPage ' => 10 ,
128
+ 'currentPage ' => 1 ,
129
+ 'maxPages ' => 9 ,
130
+ 'resultRange ' => array_merge (range (1 , 8 , 1 ), [30 ])
131
+ ],
132
+ // 1 ... 3 4 5 [6] 7 8 9 ... 30
133
+ [
134
+ 'totalItems ' => 300 ,
135
+ 'itemsPerPage ' => 10 ,
136
+ 'currentPage ' => 6 ,
137
+ 'maxPages ' => 9 ,
138
+ 'resultRange ' => array_merge ([1 ], range (3 , 9 , 1 ), [30 ])
139
+ ],
140
+ // 1 ... 12 13 14 [15] 16 17 18 ... 30
141
+ [
142
+ 'totalItems ' => 300 ,
143
+ 'itemsPerPage ' => 10 ,
144
+ 'currentPage ' => 15 ,
145
+ 'maxPages ' => 9 ,
146
+ 'resultRange ' => array_merge ([1 ], range (12 , 18 , 1 ), [30 ])
147
+ ],
148
+ // 1 ... 23 24 25 26 27 [28] 29 30
149
+ [
150
+ 'totalItems ' => 300 ,
151
+ 'itemsPerPage ' => 10 ,
152
+ 'currentPage ' => 28 ,
153
+ 'maxPages ' => 9 ,
154
+ 'resultRange ' => array_merge ([1 ], range (23 , 30 , 1 ))
155
+ ],
156
+ // [1] 2 3 4 5 6 7 ... 30
157
+ [
158
+ 'totalItems ' => 300 ,
159
+ 'itemsPerPage ' => 10 ,
160
+ 'currentPage ' => 1 ,
161
+ 'maxPages ' => 8 ,
162
+ 'resultRange ' => array_merge (range (1 , 7 , 1 ), [30 ])
163
+ ],
164
+ // 1 ... 4 5 [6] 7 8 9 ... 30
165
+ [
166
+ 'totalItems ' => 300 ,
167
+ 'itemsPerPage ' => 10 ,
168
+ 'currentPage ' => 6 ,
169
+ 'maxPages ' => 8 ,
170
+ 'resultRange ' => array_merge ([1 ], range (4 , 9 , 1 ), [30 ])
171
+ ],
172
+ // 1 ... 13 14 [15] 16 17 18 ... 30
173
+ [
174
+ 'totalItems ' => 300 ,
175
+ 'itemsPerPage ' => 10 ,
176
+ 'currentPage ' => 15 ,
177
+ 'maxPages ' => 8 ,
178
+ 'resultRange ' => array_merge ([1 ], range (13 , 18 , 1 ), [30 ])
179
+ ],
180
+ // 1 ... 24 25 26 27 [28] 29 30
181
+ [
182
+ 'totalItems ' => 300 ,
183
+ 'itemsPerPage ' => 10 ,
184
+ 'currentPage ' => 28 ,
185
+ 'maxPages ' => 8 ,
186
+ 'resultRange ' => array_merge ([1 ], range (24 , 30 , 1 ))
187
+ ],
188
+ ];
84
189
}
85
190
}
0 commit comments