Skip to content

Commit 29a3e1e

Browse files
committed
Eliminate AspectMock from DataExtensionUtilTest and OperationDataArrayResolverTest
1 parent 9dfd3e3 commit 29a3e1e

File tree

2 files changed

+119
-99
lines changed

2 files changed

+119
-99
lines changed

dev/tests/unit/Magento/FunctionalTestFramework/DataGenerator/Persist/OperationDataArrayResolverTest.php

Lines changed: 93 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace tests\unit\Magento\FunctionalTestFramework\DataGenerator\Persist;
79

8-
use AspectMock\Test as AspectMock;
910
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\DataObjectHandler;
1011
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\OperationDefinitionObjectHandler;
1112
use Magento\FunctionalTestingFramework\DataGenerator\Persist\OperationDataArrayResolver;
12-
use Magento\FunctionalTestingFramework\Util\Iterator\AbstractIterator;
1313
use tests\unit\Util\MagentoTestCase;
1414
use tests\unit\Util\EntityDataObjectBuilder;
1515
use tests\unit\Util\OperationDefinitionBuilder;
@@ -55,7 +55,7 @@ public function setUp(): void
5555
* <field>doubleField</field>
5656
* </object>
5757
*/
58-
public function testBasicPrimitiveMetadataResolve()
58+
public function testBasicPrimitiveMetadataResolve(): void
5959
{
6060
// set up data object
6161
$entityObjectBuilder = new EntityDataObjectBuilder();
@@ -91,7 +91,7 @@ public function testBasicPrimitiveMetadataResolve()
9191
* <field>objectRef</field>
9292
* </object>
9393
*/
94-
public function testNestedMetadataResolve()
94+
public function testNestedMetadataResolve(): void
9595
{
9696
// set up data objects
9797
$entityDataObjBuilder = new EntityDataObjectBuilder();
@@ -108,8 +108,7 @@ public function testNestedMetadataResolve()
108108
->build();
109109

110110
// mock data object handler
111-
$mockDOHInstance = AspectMock::double(DataObjectHandler::class, ['getObject' => $childDataObject])->make();
112-
AspectMock::double(DataObjectHandler::class, ['getInstance' => $mockDOHInstance]);
111+
$this->mockDataObjectHandler($childDataObject);
113112

114113
// set up metadata objects
115114
$parentOpElementBuilder = new OperationElementBuilder();
@@ -131,11 +130,7 @@ public function testNestedMetadataResolve()
131130
])->build();
132131

133132
// 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);
139134

140135
// resolve data object and metadata array
141136
$operationResolver = new OperationDataArrayResolver();
@@ -154,7 +149,7 @@ public function testNestedMetadataResolve()
154149
* </object>
155150
* </object>
156151
*/
157-
public function testNestedMetadata()
152+
public function testNestedMetadata(): void
158153
{
159154
// set up data objects
160155
$entityDataObjectBuilder = new EntityDataObjectBuilder();
@@ -171,8 +166,7 @@ public function testNestedMetadata()
171166
->build();
172167

173168
// mock data object handler
174-
$mockDOHInstance = AspectMock::double(DataObjectHandler::class, ['getObject' => $childDataObject])->make();
175-
AspectMock::double(DataObjectHandler::class, ['getInstance' => $mockDOHInstance]);
169+
$this->mockDataObjectHandler($childDataObject);
176170

177171
// set up metadata objects
178172
$childOpElementBuilder = new OperationElementBuilder();
@@ -208,7 +202,7 @@ public function testNestedMetadata()
208202
* </array
209203
* </object>
210204
*/
211-
public function testNestedMetadataArrayOfObjects()
205+
public function testNestedMetadataArrayOfObjects(): void
212206
{
213207
// set up data objects
214208
$entityDataObjectBuilder = new EntityDataObjectBuilder();
@@ -219,26 +213,26 @@ public function testNestedMetadataArrayOfObjects()
219213
->build();
220214

221215
// mock data object handler
222-
$mockDOHInstance = AspectMock::double(DataObjectHandler::class, ["getObject" => function ($name) {
216+
$callback = function ($name) {
223217
$entityDataObjectBuilder = new EntityDataObjectBuilder();
224218

225-
if ($name == "childObject1") {
219+
if ($name === "childObject1") {
226220
return $entityDataObjectBuilder
227221
->withName("childObject1")
228222
->withType("childType")
229223
->withDataFields(["city" => "Hawkins", "state" => "Indiana", "zip" => "78758"])
230224
->build();
231225
}
232226

233-
if ($name == "childObject2") {
227+
if ($name === "childObject2") {
234228
return $entityDataObjectBuilder
235229
->withName("childObject2")
236230
->withType("childType")
237231
->withDataFields(["city" => "Austin", "state" => "Texas", "zip" => "78701"])
238232
->build();
239233
}
240-
}])->make();
241-
AspectMock::double(DataObjectHandler::class, ['getInstance' => $mockDOHInstance]);
234+
};
235+
$this->mockDataObjectHandler($callback);
242236

243237
// set up metadata objects
244238
$childOpElementBuilder = new OperationElementBuilder();
@@ -281,7 +275,7 @@ public function testNestedMetadataArrayOfObjects()
281275
* </array
282276
* </object>
283277
*/
284-
public function testNestedMetadataArrayOfValue()
278+
public function testNestedMetadataArrayOfValue(): void
285279
{
286280
// set up data objects
287281
$entityDataObjectBuilder = new EntityDataObjectBuilder();
@@ -291,8 +285,7 @@ public function testNestedMetadataArrayOfValue()
291285
->withLinkedEntities(['childObject1' => 'childType', 'childObject2' => 'childType'])
292286
->build();
293287

294-
// mock data object handler
295-
$mockDOHInstance = AspectMock::double(DataObjectHandler::class, ["getObject" => function ($name) {
288+
$callback = function ($name) {
296289
$entityDataObjectBuilder = new EntityDataObjectBuilder();
297290

298291
if ($name == "childObject1") {
@@ -310,8 +303,9 @@ public function testNestedMetadataArrayOfValue()
310303
->withDataFields(["city" => "Austin", "state" => "Texas", "zip" => "78701"])
311304
->build();
312305
}
313-
}])->make();
314-
AspectMock::double(DataObjectHandler::class, ['getInstance' => $mockDOHInstance]);
306+
};
307+
// mock data object handler
308+
$this->mockDataObjectHandler($callback);
315309

316310
// set up metadata objects
317311
$arrayOpElementBuilder = new OperationElementBuilder();
@@ -342,11 +336,7 @@ public function testNestedMetadataArrayOfValue()
342336
])->build();
343337

344338
// 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);
350340

351341
// resolve data object and metadata array
352342
$operationResolver = new OperationDataArrayResolver();
@@ -356,7 +346,7 @@ public function testNestedMetadataArrayOfValue()
356346
$this->assertEquals(self::NESTED_METADATA_ARRAY_RESULT, $result);
357347
}
358348

359-
public function testNestedMetadataArrayOfDiverseObjects()
349+
public function testNestedMetadataArrayOfDiverseObjects(): void
360350
{
361351

362352
$entityDataObjBuilder = new EntityDataObjectBuilder();
@@ -378,22 +368,15 @@ public function testNestedMetadataArrayOfDiverseObjects()
378368
->withDataFields(['city' => 'Testcity 2','zip' => 54321,'state' => 'Teststate'])
379369
->build();
380370

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);
397380

398381
$operationDefinitionBuilder = new OperationDefinitionBuilder();
399382
$child1OperationDefinition = $operationDefinitionBuilder
@@ -415,25 +398,15 @@ public function testNestedMetadataArrayOfDiverseObjects()
415398
'state' => 'string'
416399
])->build();
417400

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);
437410

438411
$arrayObElementBuilder = new OperationElementBuilder();
439412
$arrayElement = $arrayObElementBuilder
@@ -477,7 +450,7 @@ public function testNestedMetadataArrayOfDiverseObjects()
477450
$this->assertEquals($expectedResult, $result);
478451
}
479452

480-
public function testExtendedWithRequiredEntity()
453+
public function testExtendedWithRequiredEntity(): void
481454
{
482455
$entityDataObjectBuilder = new EntityDataObjectBuilder();
483456
$extEntityDataObject = $entityDataObjectBuilder
@@ -486,26 +459,26 @@ public function testExtendedWithRequiredEntity()
486459
->withLinkedEntities(["baseSubentity" => "subentity","extSubentity" => "subentity"])
487460
->build();
488461

489-
$mockDOHInstance = AspectMock::double(DataObjectHandler::class, ["getObject" => function ($name) {
462+
$callback = function ($name) {
490463
$entityDataObjectBuilder = new EntityDataObjectBuilder();
491464

492-
if ($name == "baseSubentity") {
465+
if ($name === "baseSubentity") {
493466
return $entityDataObjectBuilder
494467
->withName("baseSubentity")
495468
->withType("subentity")
496469
->withDataFields(["subtest" => "BaseSubtest"])
497470
->build();
498471
}
499472

500-
if ($name == "extSubentity") {
473+
if ($name === "extSubentity") {
501474
return $entityDataObjectBuilder
502475
->withName("extSubentity")
503476
->withType("subentity")
504477
->withDataFields(["subtest" => "ExtSubtest"])
505478
->build();
506479
}
507-
}])->make();
508-
AspectMock::double(DataObjectHandler::class, ['getInstance' => $mockDOHInstance]);
480+
};
481+
$this->mockDataObjectHandler($callback);
509482

510483
$subentityOpElementBuilder = new OperationElementBuilder();
511484
$subentityOpElement = $subentityOpElementBuilder
@@ -539,4 +512,52 @@ public static function tearDownAfterClass(): void
539512
{
540513
TestLoggingUtil::getInstance()->clearMockLoggingUtil();
541514
}
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+
}
542563
}

0 commit comments

Comments
 (0)