Skip to content

Commit 070654d

Browse files
committed
Add unit test for diveres data array
1 parent b3f9db9 commit 070654d

File tree

1 file changed

+118
-0
lines changed

1 file changed

+118
-0
lines changed

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

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\DataObjectHandler;
1010
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\OperationDefinitionObjectHandler;
1111
use Magento\FunctionalTestingFramework\DataGenerator\Persist\OperationDataArrayResolver;
12+
use Magento\FunctionalTestingFramework\Util\Iterator\AbstractIterator;
1213
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1314
use tests\unit\Util\EntityDataObjectBuilder;
1415
use tests\unit\Util\OperationDefinitionBuilder;
@@ -355,6 +356,123 @@ public function testNestedMetadataArrayOfValue()
355356
$this->assertEquals(self::NESTED_METADATA_ARRAY_RESULT, $result);
356357
}
357358

359+
public function testNestedMetadataArrayOfDiverseObjects() {
360+
361+
$entityDataObjBuilder = new EntityDataObjectBuilder();
362+
$parentDataObject = $entityDataObjBuilder
363+
->withName("parentObject")
364+
->withType("parentType")
365+
->withLinkedEntities(['child1Object' => 'childType1','child2Object' => 'childType2'])
366+
->build();
367+
368+
369+
$child1DataObject = $entityDataObjBuilder
370+
->withName('child1Object')
371+
->withType('childType1')
372+
->withDataFields(['city' => 'Testcity','zip' => 12345])
373+
->build();
374+
375+
$child2DataObject = $entityDataObjBuilder
376+
->withName('child2Object')
377+
->withType('childType2')
378+
->withDataFields(['city' => 'Testcity 2','zip' => 54321,'state' => 'Teststate'])
379+
->build();
380+
381+
$mockDOHInstance = AspectMock::double(DataObjectHandler::class,
382+
[
383+
'getObject' => function ($name) use ($child1DataObject, $child2DataObject) {
384+
switch ($name) {
385+
case 'child1Object':
386+
return $child1DataObject;
387+
case 'child2Object':
388+
return $child2DataObject;
389+
}
390+
}
391+
])->make();
392+
AspectMock::double(DataObjectHandler::class,[
393+
'getInstance' => $mockDOHInstance
394+
]);
395+
396+
$operationDefinitionBuilder = new OperationDefinitionBuilder();
397+
$child1OperationDefinition = $operationDefinitionBuilder
398+
->withName('createchildType1')
399+
->withOperation('create')
400+
->withType('childType1')
401+
->withMetadata([
402+
'city' => 'string',
403+
'zip' => 'integer'
404+
])->build();
405+
406+
$child2OperationDefinition = $operationDefinitionBuilder
407+
->withName('createchildType2')
408+
->withOperation('create')
409+
->withType('childType2')
410+
->withMetadata([
411+
'city' => 'string',
412+
'zip' => 'integer',
413+
'state' => 'string'
414+
])->build();
415+
416+
$mockODOHInstance = AspectMock::double(
417+
OperationDefinitionObjectHandler::class,
418+
[
419+
'getObject' => function($name) use ($child1OperationDefinition, $child2OperationDefinition) {
420+
switch ($name) {
421+
case 'createchildType1':
422+
return $child1OperationDefinition;
423+
case 'createchildType2':
424+
return $child2OperationDefinition;
425+
}
426+
}
427+
]
428+
)->make();
429+
AspectMock::double(OperationDefinitionObjectHandler::class,
430+
[
431+
'getInstance' => $mockODOHInstance
432+
]);
433+
434+
$arrayObElementBuilder = new OperationElementBuilder();
435+
$arrayElement = $arrayObElementBuilder
436+
->withKey('address')
437+
->withType(['childType1','childType2'])
438+
->withFields([])
439+
->withElementType(OperationDefinitionObjectHandler::ENTITY_OPERATION_ARRAY)
440+
//->withNestedElements(['childType1' => $child1Element, 'childType2' => $child2Element])
441+
->build();
442+
443+
$parentOpElementBuilder = new OperationElementBuilder();
444+
$parentElement = $parentOpElementBuilder
445+
->withKey('parentType')
446+
->withType('parentType')
447+
->addElements(['address' => $arrayElement])
448+
->build();
449+
450+
$operationResolver = new OperationDataArrayResolver();
451+
$result = $operationResolver->resolveOperationDataArray($parentDataObject,[$parentElement],'create',false);
452+
453+
$expectedResult = [
454+
'parentType' => [
455+
'address' => [
456+
[
457+
'city' => 'Testcity',
458+
'zip' => '12345'
459+
],
460+
[
461+
'city' => 'Testcity 2',
462+
'zip' => '54321',
463+
'state' => 'Teststate'
464+
]
465+
],
466+
'name' => 'Hopper',
467+
'gpa' => '3.5678',
468+
'phone' => '5555555',
469+
'isPrimary' => '1'
470+
]
471+
];
472+
473+
$this->assertEquals($expectedResult, $result);
474+
}
475+
358476
/**
359477
* After class functionality
360478
* @return void

0 commit comments

Comments
 (0)