@@ -40,16 +40,14 @@ class ItemTest extends \PHPUnit_Framework_TestCase
40
40
*/
41
41
protected $ _moduleManager ;
42
42
43
- /**
44
- * @var \PHPUnit_Framework_MockObject_MockObject
45
- */
46
- protected $ _validatorMock ;
47
-
48
43
/**
49
44
* @var \PHPUnit_Framework_MockObject_MockObject
50
45
*/
51
46
protected $ _moduleListMock ;
52
47
48
+ /** @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager */
49
+ private $ objectManager ;
50
+
53
51
/**
54
52
* @var array
55
53
*/
@@ -58,8 +56,8 @@ class ItemTest extends \PHPUnit_Framework_TestCase
58
56
'title ' => 'Item Title ' ,
59
57
'action ' => '/system/config ' ,
60
58
'resource ' => 'Magento_Config::config ' ,
61
- 'dependsOnModule ' => 'Magento_Backend ' ,
62
- 'dependsOnConfig ' => 'system/config/isEnabled ' ,
59
+ 'depends_on_module ' => 'Magento_Backend ' ,
60
+ 'depends_on_config ' => 'system/config/isEnabled ' ,
63
61
'tooltip ' => 'Item tooltip ' ,
64
62
];
65
63
@@ -76,15 +74,15 @@ protected function setUp()
76
74
);
77
75
$ this ->_urlModelMock = $ this ->getMock (\Magento \Backend \Model \Url::class, [], [], '' , false );
78
76
$ this ->_moduleManager = $ this ->getMock (\Magento \Framework \Module \Manager::class, [], [], '' , false );
79
- $ this -> _validatorMock = $ this ->getMock (\Magento \Backend \Model \Menu \Item \Validator::class);
80
- $ this -> _validatorMock ->expects ($ this ->any ())->method ('validate ' );
77
+ $ validatorMock = $ this ->getMock (\Magento \Backend \Model \Menu \Item \Validator::class);
78
+ $ validatorMock ->expects ($ this ->any ())->method ('validate ' );
81
79
$ this ->_moduleListMock = $ this ->getMock (\Magento \Framework \Module \ModuleListInterface::class);
82
80
83
- $ helper = new \Magento \Framework \TestFramework \Unit \Helper \ObjectManager ($ this );
84
- $ this ->_model = $ helper ->getObject (
81
+ $ this -> objectManager = new \Magento \Framework \TestFramework \Unit \Helper \ObjectManager ($ this );
82
+ $ this ->_model = $ this -> objectManager ->getObject (
85
83
\Magento \Backend \Model \Menu \Item::class,
86
84
[
87
- 'validator ' => $ this -> _validatorMock ,
85
+ 'validator ' => $ validatorMock ,
88
86
'authorization ' => $ this ->_aclMock ,
89
87
'scopeConfig ' => $ this ->_scopeConfigMock ,
90
88
'menuFactory ' => $ this ->_menuFactoryMock ,
@@ -99,8 +97,7 @@ protected function setUp()
99
97
public function testGetUrlWithEmptyActionReturnsHashSign ()
100
98
{
101
99
$ this ->_params ['action ' ] = '' ;
102
- $ helper = new \Magento \Framework \TestFramework \Unit \Helper \ObjectManager ($ this );
103
- $ item = $ helper ->getObject (
100
+ $ item = $ this ->objectManager ->getObject (
104
101
\Magento \Backend \Model \Menu \Item::class,
105
102
['menuFactory ' => $ this ->_menuFactoryMock , 'data ' => $ this ->_params ]
106
103
);
@@ -129,8 +126,7 @@ public function testHasClickCallbackReturnsFalseIfItemHasAction()
129
126
public function testHasClickCallbackReturnsTrueIfItemHasNoAction ()
130
127
{
131
128
$ this ->_params ['action ' ] = '' ;
132
- $ helper = new \Magento \Framework \TestFramework \Unit \Helper \ObjectManager ($ this );
133
- $ item = $ helper ->getObject (
129
+ $ item = $ this ->objectManager ->getObject (
134
130
\Magento \Backend \Model \Menu \Item::class,
135
131
['menuFactory ' => $ this ->_menuFactoryMock , 'data ' => $ this ->_params ]
136
132
);
@@ -140,8 +136,7 @@ public function testHasClickCallbackReturnsTrueIfItemHasNoAction()
140
136
public function testGetClickCallbackReturnsStoppingJsIfItemDoesntHaveAction ()
141
137
{
142
138
$ this ->_params ['action ' ] = '' ;
143
- $ helper = new \Magento \Framework \TestFramework \Unit \Helper \ObjectManager ($ this );
144
- $ item = $ helper ->getObject (
139
+ $ item = $ this ->objectManager ->getObject (
145
140
\Magento \Backend \Model \Menu \Item::class,
146
141
['menuFactory ' => $ this ->_menuFactoryMock , 'data ' => $ this ->_params ]
147
142
);
@@ -218,15 +213,232 @@ public function testIsAllowedReturnsFalseIfResourceIsNotAvailable()
218
213
219
214
public function testGetChildrenCreatesSubmenuOnFirstCall ()
220
215
{
221
- $ menuMock = $ this ->getMock (
222
- \Magento \Backend \Model \Menu::class,
223
- [],
224
- [$ this ->getMock (\Psr \Log \LoggerInterface::class)]
225
- );
216
+ $ menuMock = $ this ->getMock (\Magento \Backend \Model \Menu::class, [], [], '' , false );
226
217
227
218
$ this ->_menuFactoryMock ->expects ($ this ->once ())->method ('create ' )->will ($ this ->returnValue ($ menuMock ));
228
219
229
220
$ this ->_model ->getChildren ();
230
221
$ this ->_model ->getChildren ();
231
222
}
223
+
224
+ /**
225
+ * @param array $data
226
+ * @param array $expected
227
+ * @dataProvider toArrayDataProvider
228
+ */
229
+ public function testToArray ($ data , $ expected )
230
+ {
231
+ $ menuMock = $ this ->getMock (\Magento \Backend \Model \Menu::class, [], [], '' , false );
232
+ $ this ->_menuFactoryMock ->method ('create ' )->will ($ this ->returnValue ($ menuMock ));
233
+ $ menuMock ->method ('toArray ' )
234
+ ->willReturn (isset ($ data ['sub_menu ' ]) ? $ data ['sub_menu ' ] : null );
235
+
236
+ $ model = $ this ->objectManager ->getObject (
237
+ \Magento \Backend \Model \Menu \Item::class,
238
+ [
239
+ 'authorization ' => $ this ->_aclMock ,
240
+ 'scopeConfig ' => $ this ->_scopeConfigMock ,
241
+ 'menuFactory ' => $ this ->_menuFactoryMock ,
242
+ 'urlModel ' => $ this ->_urlModelMock ,
243
+ 'moduleList ' => $ this ->_moduleListMock ,
244
+ 'moduleManager ' => $ this ->_moduleManager ,
245
+ 'data ' => $ data
246
+ ]
247
+ );
248
+ $ this ->assertEquals ($ expected , $ model ->toArray ());
249
+ }
250
+
251
+ public function toArrayDataProvider ()
252
+ {
253
+ return [
254
+ [
255
+ $ this ->_params ,
256
+ [
257
+ 'parent_id ' => null ,
258
+ 'module_name ' => 'Magento_Backend ' ,
259
+ 'sort_index ' => null ,
260
+ 'depends_on_config ' => 'system/config/isEnabled ' ,
261
+ 'id ' => 'item ' ,
262
+ 'resource ' => 'Magento_Config::config ' ,
263
+ 'path ' => '' ,
264
+ 'action ' => '/system/config ' ,
265
+ 'depends_on_module ' => 'Magento_Backend ' ,
266
+ 'tooltip ' => 'Item tooltip ' ,
267
+ 'title ' => 'Item Title ' ,
268
+ 'sub_menu ' => null
269
+ ]
270
+ ],
271
+ [
272
+ [
273
+ 'parent_id ' => '1 ' ,
274
+ 'module_name ' => 'Magento_Module1 ' ,
275
+ 'sort_index ' => '50 ' ,
276
+ 'depends_on_config ' => null ,
277
+ 'id ' => '5 ' ,
278
+ 'resource ' => null ,
279
+ 'path ' => null ,
280
+ 'action ' => null ,
281
+ 'depends_on_module ' => null ,
282
+ 'tooltip ' => null ,
283
+ 'title ' => null ,
284
+ 'sub_menu ' => $ this ->_params ,
285
+ ],
286
+ [
287
+ 'parent_id ' => '1 ' ,
288
+ 'module_name ' => 'Magento_Module1 ' ,
289
+ 'sort_index ' => '50 ' ,
290
+ 'depends_on_config ' => null ,
291
+ 'id ' => '5 ' ,
292
+ 'resource ' => null ,
293
+ 'path ' => null ,
294
+ 'action ' => null ,
295
+ 'depends_on_module ' => null ,
296
+ 'tooltip ' => '' ,
297
+ 'title ' => null ,
298
+ 'sub_menu ' => $ this ->_params
299
+ ]
300
+ ],
301
+ [
302
+ [
303
+ 'parent_id ' => '1 ' ,
304
+ 'module_name ' => 'Magento_Module1 ' ,
305
+ 'sort_index ' => '50 ' ,
306
+ 'sub_menu ' => $ this ->_params ,
307
+ ],
308
+ [
309
+ 'parent_id ' => '1 ' ,
310
+ 'module_name ' => 'Magento_Module1 ' ,
311
+ 'sort_index ' => '50 ' ,
312
+ 'depends_on_config ' => null ,
313
+ 'id ' => null ,
314
+ 'resource ' => null ,
315
+ 'path ' => '' ,
316
+ 'action ' => null ,
317
+ 'depends_on_module ' => null ,
318
+ 'tooltip ' => '' ,
319
+ 'title ' => null ,
320
+ 'sub_menu ' => $ this ->_params
321
+ ]
322
+ ]
323
+ ];
324
+ }
325
+
326
+ /**
327
+ * @param array $constructorData
328
+ * @param array $populateFromData
329
+ * @dataProvider populateFromArrayDataProvider
330
+ */
331
+ public function testPopulateFromArray ($ constructorData , $ populateFromData , $ expected )
332
+ {
333
+ $ menuMock = $ this ->getMock (\Magento \Backend \Model \Menu::class, [], [], '' , false );
334
+ $ this ->_menuFactoryMock ->method ('create ' )->will ($ this ->returnValue ($ menuMock ));
335
+ $ menuMock ->method ('toArray ' )
336
+ ->willReturn (isset ($ constructorData ['sub_menu ' ]) ? $ constructorData ['sub_menu ' ] : null );
337
+
338
+ $ model = $ this ->objectManager ->getObject (
339
+ \Magento \Backend \Model \Menu \Item::class,
340
+ [
341
+ 'authorization ' => $ this ->_aclMock ,
342
+ 'scopeConfig ' => $ this ->_scopeConfigMock ,
343
+ 'menuFactory ' => $ this ->_menuFactoryMock ,
344
+ 'urlModel ' => $ this ->_urlModelMock ,
345
+ 'moduleList ' => $ this ->_moduleListMock ,
346
+ 'moduleManager ' => $ this ->_moduleManager ,
347
+ 'data ' => $ constructorData
348
+ ]
349
+ );
350
+ $ model ->populateFromArray ($ populateFromData );
351
+ $ this ->assertEquals ($ expected , $ model ->toArray ());
352
+ }
353
+
354
+ public function populateFromArrayDataProvider ()
355
+ {
356
+ return [
357
+ [
358
+ [],
359
+ $ this ->_params ,
360
+ [
361
+ 'parent_id ' => null ,
362
+ 'module_name ' => 'Magento_Backend ' ,
363
+ 'sort_index ' => null ,
364
+ 'depends_on_config ' => 'system/config/isEnabled ' ,
365
+ 'id ' => 'item ' ,
366
+ 'resource ' => 'Magento_Config::config ' ,
367
+ 'path ' => '' ,
368
+ 'action ' => '/system/config ' ,
369
+ 'depends_on_module ' => 'Magento_Backend ' ,
370
+ 'tooltip ' => 'Item tooltip ' ,
371
+ 'title ' => 'Item Title ' ,
372
+ 'sub_menu ' => null
373
+ ],
374
+ ],
375
+ [
376
+ $ this ->_params ,
377
+ [
378
+ 'parent_id ' => '1 ' ,
379
+ 'module_name ' => 'Magento_Module1 ' ,
380
+ 'sort_index ' => '50 ' ,
381
+ 'depends_on_config ' => null ,
382
+ 'id ' => '5 ' ,
383
+ 'resource ' => null ,
384
+ 'path ' => null ,
385
+ 'action ' => null ,
386
+ 'depends_on_module ' => null ,
387
+ 'tooltip ' => null ,
388
+ 'title ' => null ,
389
+ 'sub_menu ' => $ this ->_params ,
390
+ ],
391
+ [
392
+ 'parent_id ' => '1 ' ,
393
+ 'module_name ' => 'Magento_Module1 ' ,
394
+ 'sort_index ' => '50 ' ,
395
+ 'depends_on_config ' => null ,
396
+ 'id ' => '5 ' ,
397
+ 'resource ' => null ,
398
+ 'path ' => '' ,
399
+ 'action ' => null ,
400
+ 'depends_on_module ' => null ,
401
+ 'tooltip ' => '' ,
402
+ 'title ' => null ,
403
+ 'sub_menu ' => null
404
+ ],
405
+ ],
406
+ [
407
+ [
408
+ 'parent_id ' => '1 ' ,
409
+ 'module_name ' => 'Magento_Module1 ' ,
410
+ 'sort_index ' => '50 ' ,
411
+ 'depends_on_config ' => null ,
412
+ 'id ' => '5 ' ,
413
+ 'resource ' => null ,
414
+ 'path ' => null ,
415
+ 'action ' => null ,
416
+ 'depends_on_module ' => null ,
417
+ 'tooltip ' => null ,
418
+ 'title ' => null ,
419
+ 'sub_menu ' => $ this ->_params ,
420
+ ],
421
+ [
422
+ 'parent_id ' => '1 ' ,
423
+ 'module_name ' => 'Magento_Module1 ' ,
424
+ 'sort_index ' => '50 ' ,
425
+ 'sub_menu ' => $ this ->_params ,
426
+ ],
427
+ [
428
+ 'parent_id ' => '1 ' ,
429
+ 'module_name ' => 'Magento_Module1 ' ,
430
+ 'sort_index ' => '50 ' ,
431
+ 'depends_on_config ' => null ,
432
+ 'id ' => null ,
433
+ 'resource ' => null ,
434
+ 'path ' => '' ,
435
+ 'action ' => null ,
436
+ 'depends_on_module ' => null ,
437
+ 'tooltip ' => '' ,
438
+ 'title ' => null ,
439
+ 'sub_menu ' => $ this ->_params
440
+ ],
441
+ ]
442
+ ];
443
+ }
232
444
}
0 commit comments