@@ -70,11 +70,6 @@ class GetImageListTest extends TestCase
7070 */
7171 private $ config ;
7272
73- /**
74- * @var bool $isAppliedGalleryFilter
75- */
76- private $ isAppliedGalleryFilter = false ;
77-
7873 /**
7974 * @inheritdoc
8075 */
@@ -107,24 +102,78 @@ protected function setUp(): void
107102 */
108103 public function testWithDefaultFilters (array $ appliedFilterNames ): void
109104 {
110-
111105 /** @var MockObject|SearchCriteriaInterface $searchCriteria */
112106 $ searchCriteria = $ this ->createMock (SearchCriteriaInterface::class);
113107 $ appliedFilterGroup = $ this ->getAppliedFilterGroup ($ appliedFilterNames );
114108 $ this ->config ->expects ($ this ->once ())->method ('getDefaultGalleryId ' )->willReturn ('galleryidvalue ' );
109+ $ searchCriteriaSetFilterGroupsWith = [];
110+ $ filterBuilderMockSetFieldWith = [];
111+ $ filterBuilderMockSetConditionTypeWith = [];
112+ $ filterBuilderMockSetValueWith = [];
113+ $ filterBuilderMockCreateReturn = [];
114+ $ filterGroupBuilderMockSetFiltersWith = [];
115+ $ filterGroupBuilderMockCreateReturn = [];
115116
116117 foreach ($ appliedFilterNames as $ appliedFilter ) {
117118 if ($ appliedFilter !== 'words ' ) {
118- $ this ->applyDefaultGalleryFilter ($ searchCriteria , $ appliedFilterGroup );
119+ $ this ->applyDefaultGalleryFilter (
120+ $ searchCriteriaSetFilterGroupsWith ,
121+ $ filterBuilderMockSetFieldWith ,
122+ $ filterBuilderMockSetConditionTypeWith ,
123+ $ filterBuilderMockSetValueWith ,
124+ $ filterBuilderMockCreateReturn ,
125+ $ filterGroupBuilderMockSetFiltersWith ,
126+ $ filterGroupBuilderMockCreateReturn ,
127+ $ appliedFilterGroup
128+ );
119129 }
120130 }
121131
122132 $ searchCriteria ->expects ($ this ->any ())
123133 ->method ('getFilterGroups ' )
124134 ->willReturn ([$ appliedFilterGroup ]);
125- $ searchCriteria ->expects ($ this ->at ($ this ->isAppliedGalleryFilter ? 1 : 2 ))
135+
136+ $ searchCriteriaSetFilterGroupsWith [] = [
137+ [
138+ $ appliedFilterGroup ,
139+ $ this ->getDefaultFilterGroup (
140+ $ appliedFilterNames ,
141+ $ filterBuilderMockSetFieldWith ,
142+ $ filterBuilderMockSetConditionTypeWith ,
143+ $ filterBuilderMockSetValueWith ,
144+ $ filterBuilderMockCreateReturn ,
145+ $ filterGroupBuilderMockSetFiltersWith ,
146+ $ filterGroupBuilderMockCreateReturn
147+ )
148+ ]
149+ ];
150+ $ this ->filterBuilderMock
151+ ->method ('setField ' )
152+ ->withConsecutive (...$ filterBuilderMockSetFieldWith )
153+ ->willReturnSelf ();
154+ $ this ->filterBuilderMock
155+ ->method ('setConditionType ' )
156+ ->withConsecutive (...$ filterBuilderMockSetConditionTypeWith )
157+ ->willReturnSelf ();
158+ $ this ->filterBuilderMock
159+ ->method ('setValue ' )
160+ ->withConsecutive (...$ filterBuilderMockSetValueWith )
161+ ->willReturnSelf ();
162+ $ this ->filterBuilderMock
163+ ->method ('create ' )
164+ ->willReturnOnConsecutiveCalls (...$ filterBuilderMockCreateReturn );
165+
166+ $ this ->filterGroupBuilderMock
167+ ->method ('setFilters ' )
168+ ->withConsecutive (...$ filterGroupBuilderMockSetFiltersWith )
169+ ->willReturnSelf ();
170+ $ this ->filterGroupBuilderMock
171+ ->method ('create ' )
172+ ->willReturnOnConsecutiveCalls (...$ filterGroupBuilderMockCreateReturn );
173+
174+ $ searchCriteria
126175 ->method ('setFilterGroups ' )
127- ->with ([ $ appliedFilterGroup , $ this -> getDefaultFilterGroup ( $ appliedFilterNames )] );
176+ ->withConsecutive (... $ searchCriteriaSetFilterGroupsWith );
128177
129178 $ searchResult = $ this ->createMock (SearchResultInterface::class);
130179
@@ -188,95 +237,90 @@ private function getAppliedFilterGroup(array $appliedFilterNames): FilterGroup
188237 }
189238
190239 /**
191- * Get filter group with default filters that should be applied
240+ * Get filter group with default filters that should be applied.
192241 *
193242 * @param array $appliedFilterNames
243+ * @param array $filterBuilderMockSetFieldWith
244+ * @param array $filterBuilderMockSetConditionTypeWith
245+ * @param array $filterBuilderMockSetValueWith
246+ * @param array $filterBuilderMockCreateReturn
247+ * @param array $filterGroupBuilderMockSetFiltersWith
248+ * @param array $filterGroupBuilderMockCreateReturn
249+ *
194250 * @return FilterGroup
195251 */
196- private function getDefaultFilterGroup (array $ appliedFilterNames ): FilterGroup
197- {
252+ private function getDefaultFilterGroup (
253+ array $ appliedFilterNames ,
254+ array &$ filterBuilderMockSetFieldWith ,
255+ array &$ filterBuilderMockSetConditionTypeWith ,
256+ array &$ filterBuilderMockSetValueWith ,
257+ array &$ filterBuilderMockCreateReturn ,
258+ array &$ filterGroupBuilderMockSetFiltersWith ,
259+ array &$ filterGroupBuilderMockCreateReturn
260+ ): FilterGroup {
198261 $ filters = [];
199- $ filterBuilderCallIndex = $ this ->isAppliedGalleryFilter ? 4 : 0 ;
200262
201263 foreach (self ::DEFAULT_FILTERS as $ defaultFilter ) {
202264 if (!in_array ($ defaultFilter ['type ' ], $ appliedFilterNames )) {
203- $ this ->filterBuilderMock ->expects ($ this ->at ($ filterBuilderCallIndex ++))
204- ->method ('setField ' )
205- ->with ($ defaultFilter ['type ' ])
206- ->willReturnSelf ();
207- $ this ->filterBuilderMock ->expects ($ this ->at ($ filterBuilderCallIndex ++))
208- ->method ('setConditionType ' )
209- ->with ($ defaultFilter ['condition ' ])
210- ->willReturnSelf ();
211- $ this ->filterBuilderMock ->expects ($ this ->at ($ filterBuilderCallIndex ++))
212- ->method ('setValue ' )
213- ->with ($ defaultFilter ['field ' ])
214- ->willReturnSelf ();
265+ $ filterBuilderMockSetFieldWith [] = [$ defaultFilter ['type ' ]];
266+ $ filterBuilderMockSetConditionTypeWith [] = [$ defaultFilter ['condition ' ]];
267+ $ filterBuilderMockSetValueWith [] = [$ defaultFilter ['field ' ]];
215268
216269 $ filter = $ this ->createMock (Filter::class);
217-
218- $ this ->filterBuilderMock ->expects ($ this ->at ($ filterBuilderCallIndex ++))
219- ->method ('create ' )
220- ->willReturn ($ filter );
221-
270+ $ filterBuilderMockCreateReturn [] = $ filter ;
222271 $ filters [] = $ filter ;
223272 }
224273 }
225274
226275 /** @var FilterGroup|MockObject $filterGroup */
227276 $ filterGroup = $ this ->createMock (FilterGroup::class);
228-
229- $ this ->filterGroupBuilderMock ->expects ($ this ->at ($ this ->isAppliedGalleryFilter ? 2 : 0 ))
230- ->method ('setFilters ' )
231- ->with ($ filters )
232- ->willReturnSelf ();
233- $ this ->filterGroupBuilderMock ->expects ($ this ->at ($ this ->isAppliedGalleryFilter ? 3 : 1 ))
234- ->method ('create ' )
235- ->willReturn ($ filterGroup );
277+ $ filterGroupBuilderMockSetFiltersWith [] = [$ filters ];
278+ $ filterGroupBuilderMockCreateReturn [] = $ filterGroup ;
236279
237280 return $ filterGroup ;
238281 }
239282
240283 /**
241- * Set's filter group with 'gallery_id' filter
284+ * Set's filter group with 'gallery_id' filter.
242285 *
243- * @param MockObject $searchCriteria
286+ * @param array $searchCriteriaSetFilterGroupsWith
287+ * @param array $filterBuilderMockSetFieldWith
288+ * @param array $filterBuilderMockSetConditionTypeWith
289+ * @param array $filterBuilderMockSetValueWith
290+ * @param array $filterBuilderMockCreateReturn
291+ * @param array $filterGroupBuilderMockSetFiltersWith
292+ * @param array $filterGroupBuilderMockCreateReturn
244293 * @param FilterGroup $appliedFilters
294+ *
245295 * @return void
246296 */
247297 private function applyDefaultGalleryFilter (
248- MockObject $ searchCriteria ,
298+ array &$ searchCriteriaSetFilterGroupsWith ,
299+ array &$ filterBuilderMockSetFieldWith ,
300+ array &$ filterBuilderMockSetConditionTypeWith ,
301+ array &$ filterBuilderMockSetValueWith ,
302+ array &$ filterBuilderMockCreateReturn ,
303+ array &$ filterGroupBuilderMockSetFiltersWith ,
304+ array &$ filterGroupBuilderMockCreateReturn ,
249305 FilterGroup $ appliedFilters
250306 ): void {
251- $ this ->filterBuilderMock ->expects ($ this ->at (0 ))
252- ->method ('setField ' )
253- ->willReturnSelf ();
254- $ this ->filterBuilderMock ->expects ($ this ->at (1 ))
255- ->method ('setConditionType ' )
256- ->willReturnSelf ();
257- $ this ->filterBuilderMock ->expects ($ this ->at (2 ))
258- ->method ('setValue ' )
259- ->willReturnSelf ();
307+ $ filterBuilderMockSetFieldWith [] = [];
308+ $ filterBuilderMockSetConditionTypeWith [] = [];
309+ $ filterBuilderMockSetValueWith [] = [];
260310
261311 $ filter = $ this ->createMock (Filter::class);
262-
263- $ this ->filterBuilderMock ->expects ($ this ->at (3 ))
264- ->method ('create ' )
265- ->willReturn ($ filter );
312+ $ filterBuilderMockCreateReturn [] = $ filter ;
266313
267314 $ filterGroup = $ this ->createMock (FilterGroup::class);
268315
269- $ this ->filterGroupBuilderMock ->expects ($ this ->at (0 ))
270- ->method ('setFilters ' )
271- ->with ([$ filter ])
272- ->willReturnSelf ();
273- $ this ->filterGroupBuilderMock ->expects ($ this ->at (1 ))
274- ->method ('create ' )
275- ->willReturn ($ filterGroup );
276- $ searchCriteria ->expects ($ this ->at (1 ))
277- ->method ('setFilterGroups ' )
278- ->with ([$ filterGroup , $ appliedFilters ]);
316+ $ filterGroupBuilderMockSetFiltersWith [] = [[$ filter ]];
317+ $ filterGroupBuilderMockCreateReturn [] = $ filterGroup ;
279318
280- $ this ->isAppliedGalleryFilter = true ;
319+ $ searchCriteriaSetFilterGroupsWith [] = [
320+ [
321+ $ filterGroup ,
322+ $ appliedFilters
323+ ]
324+ ];
281325 }
282326}
0 commit comments