Skip to content

Commit ccd6bff

Browse files
committed
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
1 parent b3bd18b commit ccd6bff

32 files changed

+403
-83
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

1111
/**
1212
* The following function declarations override the global function_exists and declare msq/msqs for use
@@ -32,7 +32,7 @@ function msqs($id = null)
3232
/**
3333
* Class EntityDataObjectTest
3434
*/
35-
class EntityDataObjectTest extends TestCase
35+
class EntityDataObjectTest extends MagentoTestCase
3636
{
3737
public function testBasicGetters()
3838
{

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
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

17-
class OperationDataArrayResolverTest extends TestCase
17+
class OperationDataArrayResolverTest extends MagentoTestCase
1818
{
1919
const NESTED_METADATA_EXPECTED_RESULT = ["parentType" => [
2020
"name" => "Hopper",
@@ -35,6 +35,14 @@ class OperationDataArrayResolverTest extends TestCase
3535
]
3636
]];
3737

38+
/**
39+
* Teardown for removing AspectMock Double References
40+
*/
41+
protected function tearDown()
42+
{
43+
AspectMock::clean();
44+
}
45+
3846
/**
3947
* Test a basic metadata resolve between primitive values and a primitive data set
4048
* <object>
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+
* Teardown for removing AspectMock Double References
23+
*/
24+
protected function tearDown()
25+
{
26+
AspectMock::clean();
27+
}
28+
29+
public function testNoParentData()
30+
{
31+
$extendedDataObject = [
32+
'entity' => [
33+
'extended' => [
34+
'type' => 'testType',
35+
'extends' => "parent",
36+
'data' => [
37+
0 => [
38+
'key' => 'testKey',
39+
'value' => 'testValue'
40+
]
41+
]
42+
]
43+
]
44+
];
45+
46+
$this->setMockEntities($extendedDataObject);
47+
48+
$this->expectExceptionMessage("Parent Entity parent not defined for Entity extended.");
49+
DataObjectHandler::getInstance()->getObject("extended");
50+
}
51+
52+
public function testAlreadyExtendedParentData()
53+
{
54+
$extendedDataObjects = [
55+
'entity' => [
56+
'extended' => [
57+
'type' => 'testType',
58+
'extends' => "parent"
59+
],
60+
'parent' => [
61+
'type' => 'type',
62+
'extends' => "grandparent"
63+
],
64+
'grandparent' => [
65+
'type' => 'grand'
66+
]
67+
]
68+
];
69+
70+
$this->setMockEntities($extendedDataObjects);
71+
72+
$this->expectExceptionMessage(
73+
"Cannot extend an entity that already extends another entity. Entity: parent." . PHP_EOL
74+
);
75+
DataObjectHandler::getInstance()->getObject("extended");
76+
}
77+
78+
public function testExtendedVarGetter()
79+
{
80+
$extendedDataObjects = [
81+
'entity' => [
82+
'extended' => [
83+
'type' => 'testType',
84+
'extends' => "parent"
85+
],
86+
'parent' => [
87+
'type' => 'type',
88+
'var' => [
89+
'someOtherEntity' => [
90+
'entityType' => 'someOtherEntity',
91+
'entityKey' => 'id',
92+
'key' => 'someOtherEntity'
93+
]
94+
]
95+
]
96+
]
97+
];
98+
99+
$this->setMockEntities($extendedDataObjects);
100+
$resultextendedDataObject = DataObjectHandler::getInstance()->getObject("extended");
101+
// Perform Asserts
102+
$this->assertEquals("someOtherEntity->id", $resultextendedDataObject->getVarReference("someOtherEntity"));
103+
}
104+
105+
public function testGetLinkedEntities()
106+
{
107+
$extendedDataObjects = [
108+
'entity' => [
109+
'extended' => [
110+
'type' => 'testType',
111+
'extends' => "parent"
112+
],
113+
'parent' => [
114+
'type' => 'type',
115+
'requiredEntity' => [
116+
'linkedEntity1' => [
117+
'type' => 'linkedEntityType',
118+
'value' => 'linkedEntity1'
119+
],
120+
'linkedEntity2' => [
121+
'type' => 'otherEntityType',
122+
'value' => 'linkedEntity2'
123+
],
124+
]
125+
]
126+
]
127+
];
128+
129+
$this->setMockEntities($extendedDataObjects);
130+
// Perform Asserts
131+
$resultextendedDataObject = DataObjectHandler::getInstance()->getObject("extended");
132+
$this->assertEquals("linkedEntity1", $resultextendedDataObject->getLinkedEntitiesOfType("linkedEntityType")[0]);
133+
$this->assertEquals("linkedEntity2", $resultextendedDataObject->getLinkedEntitiesOfType("otherEntityType")[0]);
134+
}
135+
136+
private function setMockEntities($mockEntityData)
137+
{
138+
$property = new \ReflectionProperty(DataObjectHandler::class, 'INSTANCE');
139+
$property->setAccessible(true);
140+
$property->setValue(null);
141+
142+
$mockDataProfileSchemaParser = AspectMock::double(DataProfileSchemaParser::class, [
143+
'readDataProfiles' => $mockEntityData
144+
])->make();
145+
146+
$mockObjectManager = AspectMock::double(ObjectManager::class, [
147+
'create' => $mockDataProfileSchemaParser
148+
])->make();
149+
150+
AspectMock::double(ObjectManagerFactory::class, [
151+
'getObjectManager' => $mockObjectManager
152+
]);
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

dev/tests/unit/Magento/FunctionalTestFramework/Suite/Handlers/SuiteObjectHandlerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
use Magento\FunctionalTestingFramework\Suite\Parsers\SuiteDataParser;
1313
use Magento\FunctionalTestingFramework\Test\Handlers\TestObjectHandler;
1414
use Magento\FunctionalTestingFramework\Test\Parsers\TestDataParser;
15-
use PHPUnit\Framework\TestCase;
15+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1616
use tests\unit\Util\SuiteDataArrayBuilder;
1717
use tests\unit\Util\TestDataArrayBuilder;
1818

19-
class SuiteObjectHandlerTest extends TestCase
19+
class SuiteObjectHandlerTest extends MagentoTestCase
2020
{
2121
/**
2222
* Tests basic parsing and accesors of suite object and suite object supporting classes

dev/tests/unit/Magento/FunctionalTestFramework/Suite/SuiteGeneratorTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
use Magento\FunctionalTestingFramework\Test\Util\TestObjectExtractor;
1717
use Magento\FunctionalTestingFramework\Test\Parsers\TestDataParser;
1818
use Magento\FunctionalTestingFramework\Util\Manifest\DefaultTestManifest;
19-
use PHPUnit\Framework\TestCase;
19+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
2020
use tests\unit\Util\SuiteDataArrayBuilder;
2121
use tests\unit\Util\TestDataArrayBuilder;
2222

23-
class SuiteGeneratorTest extends TestCase
23+
class SuiteGeneratorTest extends MagentoTestCase
2424
{
2525

2626
/**

dev/tests/unit/Magento/FunctionalTestFramework/Test/Config/ActionGroupDomTest.php

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

88
use Magento\FunctionalTestingFramework\Exceptions\Collector\ExceptionCollector;
99
use Magento\FunctionalTestingFramework\Test\Config\ActionGroupDom;
10-
use PHPUnit\Framework\TestCase;
10+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1111

12-
class ActionGroupDomTest extends TestCase
12+
class ActionGroupDomTest extends MagentoTestCase
1313
{
1414
/**
1515
* Test Action Group duplicate step key validation

dev/tests/unit/Magento/FunctionalTestFramework/Test/Handlers/TestObjectHandlerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
use Magento\FunctionalTestingFramework\Test\Parsers\TestDataParser;
1919
use Magento\FunctionalTestingFramework\Test\Util\ActionObjectExtractor;
2020
use Magento\FunctionalTestingFramework\Test\Util\TestObjectExtractor;
21-
use PHPUnit\Framework\TestCase;
21+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
2222
use tests\unit\Util\TestDataArrayBuilder;
2323

24-
class TestObjectHandlerTest extends TestCase
24+
class TestObjectHandlerTest extends MagentoTestCase
2525
{
2626
/**
2727
* Basic test to validate array => test object conversion.

dev/tests/unit/Magento/FunctionalTestFramework/Test/Objects/ActionGroupObjectTest.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,22 @@
1515
use Magento\FunctionalTestingFramework\Test\Objects\ActionGroupObject;
1616
use Magento\FunctionalTestingFramework\Test\Objects\ActionObject;
1717
use Magento\FunctionalTestingFramework\Test\Objects\ArgumentObject;
18-
use PHPUnit\Framework\TestCase;
18+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
1919
use tests\unit\Util\ActionGroupObjectBuilder;
2020
use tests\unit\Util\EntityDataObjectBuilder;
2121

22-
class ActionGroupObjectTest extends TestCase
22+
class ActionGroupObjectTest extends MagentoTestCase
2323
{
2424
const ACTION_GROUP_MERGE_KEY = 'TestKey';
2525

26+
/**
27+
* Teardown for removing AspectMock Double References
28+
*/
29+
protected function tearDown()
30+
{
31+
AspectMock::clean();
32+
}
33+
2634
/**
2735
* Tests a string literal in an action group
2836
*/

0 commit comments

Comments
 (0)