3
3
* Copyright © Magento, Inc. All rights reserved.
4
4
* See COPYING.txt for license details.
5
5
*/
6
+ declare (strict_types=1 );
7
+
6
8
namespace tests \unit \Magento \FunctionalTestFramework \DataGenerator \Persist ;
7
9
8
- use AspectMock \Test as AspectMock ;
9
10
use Magento \FunctionalTestingFramework \DataGenerator \Handlers \DataObjectHandler ;
10
11
use Magento \FunctionalTestingFramework \DataGenerator \Handlers \OperationDefinitionObjectHandler ;
11
12
use Magento \FunctionalTestingFramework \DataGenerator \Persist \OperationDataArrayResolver ;
12
- use Magento \FunctionalTestingFramework \Util \Iterator \AbstractIterator ;
13
13
use tests \unit \Util \MagentoTestCase ;
14
14
use tests \unit \Util \EntityDataObjectBuilder ;
15
15
use tests \unit \Util \OperationDefinitionBuilder ;
@@ -55,7 +55,7 @@ public function setUp(): void
55
55
* <field>doubleField</field>
56
56
* </object>
57
57
*/
58
- public function testBasicPrimitiveMetadataResolve ()
58
+ public function testBasicPrimitiveMetadataResolve (): void
59
59
{
60
60
// set up data object
61
61
$ entityObjectBuilder = new EntityDataObjectBuilder ();
@@ -91,7 +91,7 @@ public function testBasicPrimitiveMetadataResolve()
91
91
* <field>objectRef</field>
92
92
* </object>
93
93
*/
94
- public function testNestedMetadataResolve ()
94
+ public function testNestedMetadataResolve (): void
95
95
{
96
96
// set up data objects
97
97
$ entityDataObjBuilder = new EntityDataObjectBuilder ();
@@ -108,8 +108,7 @@ public function testNestedMetadataResolve()
108
108
->build ();
109
109
110
110
// mock data object handler
111
- $ mockDOHInstance = AspectMock::double (DataObjectHandler::class, ['getObject ' => $ childDataObject ])->make ();
112
- AspectMock::double (DataObjectHandler::class, ['getInstance ' => $ mockDOHInstance ]);
111
+ $ this ->mockDataObjectHandler ($ childDataObject );
113
112
114
113
// set up metadata objects
115
114
$ parentOpElementBuilder = new OperationElementBuilder ();
@@ -131,11 +130,7 @@ public function testNestedMetadataResolve()
131
130
])->build ();
132
131
133
132
// mock meta data object handler
134
- $ mockDOHInstance = AspectMock::double (
135
- OperationDefinitionObjectHandler::class,
136
- ['getObject ' => $ childOperationDefinition ]
137
- )->make ();
138
- AspectMock::double (OperationDefinitionObjectHandler::class, ['getInstance ' => $ mockDOHInstance ]);
133
+ $ this ->mockOperationDefinitionObjectHandler ($ childOperationDefinition );
139
134
140
135
// resolve data object and metadata array
141
136
$ operationResolver = new OperationDataArrayResolver ();
@@ -154,7 +149,7 @@ public function testNestedMetadataResolve()
154
149
* </object>
155
150
* </object>
156
151
*/
157
- public function testNestedMetadata ()
152
+ public function testNestedMetadata (): void
158
153
{
159
154
// set up data objects
160
155
$ entityDataObjectBuilder = new EntityDataObjectBuilder ();
@@ -171,8 +166,7 @@ public function testNestedMetadata()
171
166
->build ();
172
167
173
168
// mock data object handler
174
- $ mockDOHInstance = AspectMock::double (DataObjectHandler::class, ['getObject ' => $ childDataObject ])->make ();
175
- AspectMock::double (DataObjectHandler::class, ['getInstance ' => $ mockDOHInstance ]);
169
+ $ this ->mockDataObjectHandler ($ childDataObject );
176
170
177
171
// set up metadata objects
178
172
$ childOpElementBuilder = new OperationElementBuilder ();
@@ -208,7 +202,7 @@ public function testNestedMetadata()
208
202
* </array
209
203
* </object>
210
204
*/
211
- public function testNestedMetadataArrayOfObjects ()
205
+ public function testNestedMetadataArrayOfObjects (): void
212
206
{
213
207
// set up data objects
214
208
$ entityDataObjectBuilder = new EntityDataObjectBuilder ();
@@ -219,26 +213,26 @@ public function testNestedMetadataArrayOfObjects()
219
213
->build ();
220
214
221
215
// mock data object handler
222
- $ mockDOHInstance = AspectMock:: double (DataObjectHandler::class, [ " getObject " => function ($ name ) {
216
+ $ callback = function ($ name ) {
223
217
$ entityDataObjectBuilder = new EntityDataObjectBuilder ();
224
218
225
- if ($ name == "childObject1 " ) {
219
+ if ($ name === "childObject1 " ) {
226
220
return $ entityDataObjectBuilder
227
221
->withName ("childObject1 " )
228
222
->withType ("childType " )
229
223
->withDataFields (["city " => "Hawkins " , "state " => "Indiana " , "zip " => "78758 " ])
230
224
->build ();
231
225
}
232
226
233
- if ($ name == "childObject2 " ) {
227
+ if ($ name === "childObject2 " ) {
234
228
return $ entityDataObjectBuilder
235
229
->withName ("childObject2 " )
236
230
->withType ("childType " )
237
231
->withDataFields (["city " => "Austin " , "state " => "Texas " , "zip " => "78701 " ])
238
232
->build ();
239
233
}
240
- }])-> make () ;
241
- AspectMock:: double (DataObjectHandler::class, [ ' getInstance ' => $ mockDOHInstance ] );
234
+ };
235
+ $ this -> mockDataObjectHandler ( $ callback );
242
236
243
237
// set up metadata objects
244
238
$ childOpElementBuilder = new OperationElementBuilder ();
@@ -281,7 +275,7 @@ public function testNestedMetadataArrayOfObjects()
281
275
* </array
282
276
* </object>
283
277
*/
284
- public function testNestedMetadataArrayOfValue ()
278
+ public function testNestedMetadataArrayOfValue (): void
285
279
{
286
280
// set up data objects
287
281
$ entityDataObjectBuilder = new EntityDataObjectBuilder ();
@@ -291,8 +285,7 @@ public function testNestedMetadataArrayOfValue()
291
285
->withLinkedEntities (['childObject1 ' => 'childType ' , 'childObject2 ' => 'childType ' ])
292
286
->build ();
293
287
294
- // mock data object handler
295
- $ mockDOHInstance = AspectMock::double (DataObjectHandler::class, ["getObject " => function ($ name ) {
288
+ $ callback = function ($ name ) {
296
289
$ entityDataObjectBuilder = new EntityDataObjectBuilder ();
297
290
298
291
if ($ name == "childObject1 " ) {
@@ -310,8 +303,9 @@ public function testNestedMetadataArrayOfValue()
310
303
->withDataFields (["city " => "Austin " , "state " => "Texas " , "zip " => "78701 " ])
311
304
->build ();
312
305
}
313
- }])->make ();
314
- AspectMock::double (DataObjectHandler::class, ['getInstance ' => $ mockDOHInstance ]);
306
+ };
307
+ // mock data object handler
308
+ $ this ->mockDataObjectHandler ($ callback );
315
309
316
310
// set up metadata objects
317
311
$ arrayOpElementBuilder = new OperationElementBuilder ();
@@ -342,11 +336,7 @@ public function testNestedMetadataArrayOfValue()
342
336
])->build ();
343
337
344
338
// mock meta data object handler
345
- $ mockDOHInstance = AspectMock::double (
346
- OperationDefinitionObjectHandler::class,
347
- ['getObject ' => $ childOperationDefinition ]
348
- )->make ();
349
- AspectMock::double (OperationDefinitionObjectHandler::class, ['getInstance ' => $ mockDOHInstance ]);
339
+ $ this ->mockOperationDefinitionObjectHandler ($ childOperationDefinition );
350
340
351
341
// resolve data object and metadata array
352
342
$ operationResolver = new OperationDataArrayResolver ();
@@ -356,7 +346,7 @@ public function testNestedMetadataArrayOfValue()
356
346
$ this ->assertEquals (self ::NESTED_METADATA_ARRAY_RESULT , $ result );
357
347
}
358
348
359
- public function testNestedMetadataArrayOfDiverseObjects ()
349
+ public function testNestedMetadataArrayOfDiverseObjects (): void
360
350
{
361
351
362
352
$ entityDataObjBuilder = new EntityDataObjectBuilder ();
@@ -378,22 +368,15 @@ public function testNestedMetadataArrayOfDiverseObjects()
378
368
->withDataFields (['city ' => 'Testcity 2 ' ,'zip ' => 54321 ,'state ' => 'Teststate ' ])
379
369
->build ();
380
370
381
- $ mockDOHInstance = AspectMock::double (
382
- DataObjectHandler::class,
383
- [
384
- 'getObject ' => function ($ name ) use ($ child1DataObject , $ child2DataObject ) {
385
- switch ($ name ) {
386
- case 'child1Object ' :
387
- return $ child1DataObject ;
388
- case 'child2Object ' :
389
- return $ child2DataObject ;
390
- }
391
- }
392
- ]
393
- )->make ();
394
- AspectMock::double (DataObjectHandler::class, [
395
- 'getInstance ' => $ mockDOHInstance
396
- ]);
371
+ $ dataObjectCallback = function ($ name ) use ($ child1DataObject , $ child2DataObject ) {
372
+ switch ($ name ) {
373
+ case 'child1Object ' :
374
+ return $ child1DataObject ;
375
+ case 'child2Object ' :
376
+ return $ child2DataObject ;
377
+ }
378
+ };
379
+ $ this ->mockDataObjectHandler ($ dataObjectCallback );
397
380
398
381
$ operationDefinitionBuilder = new OperationDefinitionBuilder ();
399
382
$ child1OperationDefinition = $ operationDefinitionBuilder
@@ -415,25 +398,15 @@ public function testNestedMetadataArrayOfDiverseObjects()
415
398
'state ' => 'string '
416
399
])->build ();
417
400
418
- $ mockODOHInstance = AspectMock::double (
419
- OperationDefinitionObjectHandler::class,
420
- [
421
- 'getObject ' => function ($ name ) use ($ child1OperationDefinition , $ child2OperationDefinition ) {
422
- switch ($ name ) {
423
- case 'createchildType1 ' :
424
- return $ child1OperationDefinition ;
425
- case 'createchildType2 ' :
426
- return $ child2OperationDefinition ;
427
- }
428
- }
429
- ]
430
- )->make ();
431
- AspectMock::double (
432
- OperationDefinitionObjectHandler::class,
433
- [
434
- 'getInstance ' => $ mockODOHInstance
435
- ]
436
- );
401
+ $ operationObjectCallback = function ($ name ) use ($ child1OperationDefinition , $ child2OperationDefinition ) {
402
+ switch ($ name ) {
403
+ case 'createchildType1 ' :
404
+ return $ child1OperationDefinition ;
405
+ case 'createchildType2 ' :
406
+ return $ child2OperationDefinition ;
407
+ }
408
+ };
409
+ $ this ->mockOperationDefinitionObjectHandler ($ operationObjectCallback );
437
410
438
411
$ arrayObElementBuilder = new OperationElementBuilder ();
439
412
$ arrayElement = $ arrayObElementBuilder
@@ -477,7 +450,7 @@ public function testNestedMetadataArrayOfDiverseObjects()
477
450
$ this ->assertEquals ($ expectedResult , $ result );
478
451
}
479
452
480
- public function testExtendedWithRequiredEntity ()
453
+ public function testExtendedWithRequiredEntity (): void
481
454
{
482
455
$ entityDataObjectBuilder = new EntityDataObjectBuilder ();
483
456
$ extEntityDataObject = $ entityDataObjectBuilder
@@ -486,26 +459,26 @@ public function testExtendedWithRequiredEntity()
486
459
->withLinkedEntities (["baseSubentity " => "subentity " ,"extSubentity " => "subentity " ])
487
460
->build ();
488
461
489
- $ mockDOHInstance = AspectMock:: double (DataObjectHandler::class, [ " getObject " => function ($ name ) {
462
+ $ callback = function ($ name ) {
490
463
$ entityDataObjectBuilder = new EntityDataObjectBuilder ();
491
464
492
- if ($ name == "baseSubentity " ) {
465
+ if ($ name === "baseSubentity " ) {
493
466
return $ entityDataObjectBuilder
494
467
->withName ("baseSubentity " )
495
468
->withType ("subentity " )
496
469
->withDataFields (["subtest " => "BaseSubtest " ])
497
470
->build ();
498
471
}
499
472
500
- if ($ name == "extSubentity " ) {
473
+ if ($ name === "extSubentity " ) {
501
474
return $ entityDataObjectBuilder
502
475
->withName ("extSubentity " )
503
476
->withType ("subentity " )
504
477
->withDataFields (["subtest " => "ExtSubtest " ])
505
478
->build ();
506
479
}
507
- }])-> make () ;
508
- AspectMock:: double (DataObjectHandler::class, [ ' getInstance ' => $ mockDOHInstance ] );
480
+ };
481
+ $ this -> mockDataObjectHandler ( $ callback );
509
482
510
483
$ subentityOpElementBuilder = new OperationElementBuilder ();
511
484
$ subentityOpElement = $ subentityOpElementBuilder
@@ -539,4 +512,52 @@ public static function tearDownAfterClass(): void
539
512
{
540
513
TestLoggingUtil::getInstance ()->clearMockLoggingUtil ();
541
514
}
515
+
516
+ /**
517
+ * Set up mock DataObjectHandler
518
+ *
519
+ * @param $childDataObject
520
+ * @return void
521
+ */
522
+ private function mockDataObjectHandler ($ childDataObject ): void
523
+ {
524
+ $ instance = $ this ->createMock (DataObjectHandler::class);
525
+ if (is_callable ($ childDataObject )) {
526
+ $ instance ->expects ($ this ->any ())
527
+ ->method ('getObject ' )
528
+ ->willReturnCallback ($ childDataObject );
529
+ } else {
530
+ $ instance ->expects ($ this ->any ())
531
+ ->method ('getObject ' )
532
+ ->willReturn ($ childDataObject );
533
+ }
534
+
535
+ $ property = new \ReflectionProperty (DataObjectHandler::class, 'INSTANCE ' );
536
+ $ property ->setAccessible (true );
537
+ $ property ->setValue ($ instance );
538
+ }
539
+
540
+ /**
541
+ * Set up mock OperationDefinitionObjectHandler
542
+ *
543
+ * @param $childOperationDefinition
544
+ * @return void
545
+ */
546
+ private function mockOperationDefinitionObjectHandler ($ childOperationDefinition ): void
547
+ {
548
+ $ instance = $ this ->createPartialMock (OperationDefinitionObjectHandler::class, ['getObject ' ]);
549
+ if (is_callable ($ childOperationDefinition )) {
550
+ $ instance ->expects ($ this ->any ())
551
+ ->method ('getObject ' )
552
+ ->willReturnCallback ($ childOperationDefinition );
553
+ } else {
554
+ $ instance ->expects ($ this ->any ())
555
+ ->method ('getObject ' )
556
+ ->willReturn ($ childOperationDefinition );
557
+ }
558
+
559
+ $ property = new \ReflectionProperty (OperationDefinitionObjectHandler::class, 'INSTANCE ' );
560
+ $ property ->setAccessible (true );
561
+ $ property ->setValue ($ instance );
562
+ }
542
563
}
0 commit comments