Skip to content

Commit aff7f67

Browse files
authored
MQE-231: Allow data to extend other data (#136)
* MQE-231: Allow data to extend other data - Added simple test and adjusted so data could extend other data * MQE-231: Allow data to extend other data - Added Tests - Updated Extend Login - Cleaned Up Tests using double by adding new TestCase class to extend * MQE-231: Allow data to extend other data - Removed unused references - Removed references to teardown outside of MagentoTestCase * MQE-231: Allow data to extend other data - Missed a clean reference * MQE-231: Allow data to extend other data - Added support to overwrite parent type or take parent type if null * MQE-231: Allow data to extend other data - Fixed comments referring to tests
1 parent c62b9d2 commit aff7f67

33 files changed

+635
-77
lines changed

dev/tests/unit/Magento/FunctionalTestFramework/DataGenerator/Handlers/DataObjectHandlerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
use Magento\FunctionalTestingFramework\DataGenerator\Parsers\DataProfileSchemaParser;
1313
use Magento\FunctionalTestingFramework\ObjectManager;
1414
use Magento\FunctionalTestingFramework\ObjectManagerFactory;
15-
use PHPUnit\Framework\TestCase;
15+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1616

1717
/**
1818
* Class DataObjectHandlerTest
1919
*/
20-
class DataObjectHandlerTest extends TestCase
20+
class DataObjectHandlerTest extends MagentoTestCase
2121
{
2222
// All tests share this array, feel free to add but be careful modifying or removing
2323
const PARSER_OUTPUT = [

dev/tests/unit/Magento/FunctionalTestFramework/DataGenerator/Handlers/OperationDefinitionObjectHandlerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
use Magento\FunctionalTestingFramework\ObjectManagerFactory;
1414
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\OperationDefinitionObjectHandler;
1515
use Magento\FunctionalTestingFramework\DataGenerator\Parsers\OperationDefinitionParser;
16-
use PHPUnit\Framework\TestCase;
16+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1717

1818
/**
1919
* Class OperationDefinitionObjectHandlerTest
2020
*/
21-
class OperationDefinitionObjectHandlerTest extends TestCase
21+
class OperationDefinitionObjectHandlerTest extends MagentoTestCase
2222
{
2323
public function testGetMultipleObjects()
2424
{

dev/tests/unit/Magento/FunctionalTestFramework/DataGenerator/Objects/EntityDataObjectTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
namespace Magento\FunctionalTestingFramework\DataGenerator\Objects;
88

9-
use PHPUnit\Framework\TestCase;
9+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1010
use tests\unit\Util\TestLoggingUtil;
1111

1212
/**
@@ -33,7 +33,7 @@ function msqs($id = null)
3333
/**
3434
* Class EntityDataObjectTest
3535
*/
36-
class EntityDataObjectTest extends TestCase
36+
class EntityDataObjectTest extends MagentoTestCase
3737
{
3838
/**
3939
* Before test functionality

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\DataObjectHandler;
1010
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\OperationDefinitionObjectHandler;
1111
use Magento\FunctionalTestingFramework\DataGenerator\Persist\OperationDataArrayResolver;
12-
use PHPUnit\Framework\TestCase;
12+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1313
use tests\unit\Util\EntityDataObjectBuilder;
1414
use tests\unit\Util\OperationDefinitionBuilder;
1515
use tests\unit\Util\OperationElementBuilder;
1616
use tests\unit\Util\TestLoggingUtil;
1717

18-
class OperationDataArrayResolverTest extends TestCase
18+
class OperationDataArrayResolverTest extends MagentoTestCase
1919
{
2020
const NESTED_METADATA_EXPECTED_RESULT = ["parentType" => [
2121
"name" => "Hopper",
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\FunctionalTestingFramework\DataGenerator\Objects;
8+
9+
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\DataObjectHandler;
10+
use Magento\FunctionalTestingFramework\DataGenerator\Parsers\DataProfileSchemaParser;
11+
use Magento\FunctionalTestingFramework\ObjectManager\ObjectManager;
12+
use Magento\FunctionalTestingFramework\ObjectManagerFactory;
13+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
14+
use AspectMock\Test as AspectMock;
15+
16+
/**
17+
* Class EntityDataObjectTest
18+
*/
19+
class EntityDataExtensionTest extends MagentoTestCase
20+
{
21+
/**
22+
* Before method functionality
23+
* @return void
24+
*/
25+
protected function setUp()
26+
{
27+
AspectMock::clean();
28+
}
29+
30+
public function testNoParentData()
31+
{
32+
$extendedDataObject = [
33+
'entity' => [
34+
'extended' => [
35+
'type' => 'testType',
36+
'extends' => "parent",
37+
'data' => [
38+
0 => [
39+
'key' => 'testKey',
40+
'value' => 'testValue'
41+
]
42+
]
43+
]
44+
]
45+
];
46+
47+
$this->setMockEntities($extendedDataObject);
48+
49+
$this->expectExceptionMessage("Parent Entity parent not defined for Entity extended.");
50+
DataObjectHandler::getInstance()->getObject("extended");
51+
}
52+
53+
public function testAlreadyExtendedParentData()
54+
{
55+
$extendedDataObjects = [
56+
'entity' => [
57+
'extended' => [
58+
'type' => 'testType',
59+
'extends' => "parent"
60+
],
61+
'parent' => [
62+
'type' => 'type',
63+
'extends' => "grandparent"
64+
],
65+
'grandparent' => [
66+
'type' => 'grand'
67+
]
68+
]
69+
];
70+
71+
$this->setMockEntities($extendedDataObjects);
72+
73+
$this->expectExceptionMessage(
74+
"Cannot extend an entity that already extends another entity. Entity: parent." . PHP_EOL
75+
);
76+
DataObjectHandler::getInstance()->getObject("extended");
77+
}
78+
79+
public function testExtendedVarGetter()
80+
{
81+
$extendedDataObjects = [
82+
'entity' => [
83+
'extended' => [
84+
'type' => 'testType',
85+
'extends' => "parent"
86+
],
87+
'parent' => [
88+
'type' => 'type',
89+
'var' => [
90+
'someOtherEntity' => [
91+
'entityType' => 'someOtherEntity',
92+
'entityKey' => 'id',
93+
'key' => 'someOtherEntity'
94+
]
95+
]
96+
]
97+
]
98+
];
99+
100+
$this->setMockEntities($extendedDataObjects);
101+
$resultextendedDataObject = DataObjectHandler::getInstance()->getObject("extended");
102+
// Perform Asserts
103+
$this->assertEquals("someOtherEntity->id", $resultextendedDataObject->getVarReference("someOtherEntity"));
104+
}
105+
106+
public function testGetLinkedEntities()
107+
{
108+
$extendedDataObjects = [
109+
'entity' => [
110+
'extended' => [
111+
'type' => 'testType',
112+
'extends' => "parent"
113+
],
114+
'parent' => [
115+
'type' => 'type',
116+
'requiredEntity' => [
117+
'linkedEntity1' => [
118+
'type' => 'linkedEntityType',
119+
'value' => 'linkedEntity1'
120+
],
121+
'linkedEntity2' => [
122+
'type' => 'otherEntityType',
123+
'value' => 'linkedEntity2'
124+
],
125+
]
126+
]
127+
]
128+
];
129+
130+
$this->setMockEntities($extendedDataObjects);
131+
// Perform Asserts
132+
$resultextendedDataObject = DataObjectHandler::getInstance()->getObject("extended");
133+
$this->assertEquals("linkedEntity1", $resultextendedDataObject->getLinkedEntitiesOfType("linkedEntityType")[0]);
134+
$this->assertEquals("linkedEntity2", $resultextendedDataObject->getLinkedEntitiesOfType("otherEntityType")[0]);
135+
}
136+
137+
private function setMockEntities($mockEntityData)
138+
{
139+
$property = new \ReflectionProperty(DataObjectHandler::class, 'INSTANCE');
140+
$property->setAccessible(true);
141+
$property->setValue(null);
142+
143+
$mockDataProfileSchemaParser = AspectMock::double(DataProfileSchemaParser::class, [
144+
'readDataProfiles' => $mockEntityData
145+
])->make();
146+
147+
$mockObjectManager = AspectMock::double(ObjectManager::class, [
148+
'create' => $mockDataProfileSchemaParser
149+
])->make();
150+
151+
AspectMock::double(ObjectManagerFactory::class, [
152+
'getObjectManager' => $mockObjectManager
153+
]);
154+
}
155+
}

dev/tests/unit/Magento/FunctionalTestFramework/Page/Handlers/PageObjectHandlerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
use Magento\FunctionalTestingFramework\ObjectManagerFactory;
1212
use Magento\FunctionalTestingFramework\Page\Handlers\PageObjectHandler;
1313
use Magento\FunctionalTestingFramework\XmlParser\PageParser;
14-
use PHPUnit\Framework\TestCase;
14+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1515

16-
class PageObjectHandlerTest extends TestCase
16+
class PageObjectHandlerTest extends MagentoTestCase
1717
{
1818
public function testGetPageObject()
1919
{

dev/tests/unit/Magento/FunctionalTestFramework/Page/Handlers/SectionObjectHandlerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
use Magento\FunctionalTestingFramework\ObjectManagerFactory;
1212
use Magento\FunctionalTestingFramework\Page\Handlers\SectionObjectHandler;
1313
use Magento\FunctionalTestingFramework\XmlParser\SectionParser;
14-
use PHPUnit\Framework\TestCase;
14+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1515

16-
class SectionObjectHandlerTest extends TestCase
16+
class SectionObjectHandlerTest extends MagentoTestCase
1717
{
1818
public function testGetSectionObject()
1919
{

dev/tests/unit/Magento/FunctionalTestFramework/Page/Objects/ElementObjectTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88

99
use Magento\FunctionalTestingFramework\Exceptions\XmlException;
1010
use Magento\FunctionalTestingFramework\Page\Objects\ElementObject;
11-
use PHPUnit\Framework\TestCase;
11+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1212

1313
/**
1414
* Class ElementObjectTest
1515
*/
16-
class ElementObjectTest extends TestCase
16+
class ElementObjectTest extends MagentoTestCase
1717
{
1818
/**
1919
* Timeout should be null when instantiated with '-'

dev/tests/unit/Magento/FunctionalTestFramework/Page/Objects/PageObjectTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
namespace tests\unit\Magento\FunctionalTestFramework\Page\Objects;
88

99
use Magento\FunctionalTestingFramework\Page\Objects\PageObject;
10-
use PHPUnit\Framework\TestCase;
10+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1111

1212
/**
1313
* Class PageObjectTest
1414
*/
15-
class PageObjectTest extends TestCase
15+
class PageObjectTest extends MagentoTestCase
1616
{
1717
/**
1818
* Assert that the page object has a section

dev/tests/unit/Magento/FunctionalTestFramework/Page/Objects/SectionObjectTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88

99
use Magento\FunctionalTestingFramework\Page\Objects\ElementObject;
1010
use Magento\FunctionalTestingFramework\Page\Objects\SectionObject;
11-
use PHPUnit\Framework\TestCase;
11+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1212

1313
/**
1414
* Class SectionObjectTest
1515
*/
16-
class SectionObjectTest extends TestCase
16+
class SectionObjectTest extends MagentoTestCase
1717
{
1818
/**
1919
* Assert that the section object has an element

0 commit comments

Comments
 (0)