Skip to content

Commit aff7f67

Browse files
authored
MQE-231: Allow data to extend other data (magento#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

+2-2
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

+2-2
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

+2-2
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

+2-2
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",
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

+2-2
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

+2-2
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

+2-2
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

+2-2
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

+2-2
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

+2-2
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

+6-5
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
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
use tests\unit\Util\TestLoggingUtil;
2323

24-
class SuiteGeneratorTest extends TestCase
24+
class SuiteGeneratorTest extends MagentoTestCase
2525
{
2626

2727
/**
@@ -76,7 +76,7 @@ public function testGenerateSuite()
7676
TestLoggingUtil::getInstance()->validateMockLogStatement(
7777
'info',
7878
"suite generated",
79-
['suite' => 'basicTestSuite', 'relative_path' => "_generated/basicTestSuite"]
79+
['suite' => 'basicTestSuite', 'relative_path' => "_generated" . DIRECTORY_SEPARATOR . "basicTestSuite"]
8080
);
8181
}
8282

@@ -105,15 +105,15 @@ public function testGenerateAllSuites()
105105
$this->setMockTestAndSuiteParserOutput($mockTestData, $mockData);
106106

107107
// parse and retrieve suite object with mocked data
108-
$exampleTestManifest = new DefaultTestManifest([], "sample/path");
108+
$exampleTestManifest = new DefaultTestManifest([], "sample" . DIRECTORY_SEPARATOR . "path");
109109
$mockSuiteGenerator = SuiteGenerator::getInstance();
110110
$mockSuiteGenerator->generateAllSuites($exampleTestManifest);
111111

112112
// assert that expected suites are generated
113113
TestLoggingUtil::getInstance()->validateMockLogStatement(
114114
'info',
115115
"suite generated",
116-
['suite' => 'basicTestSuite', 'relative_path' => "_generated/basicTestSuite"]
116+
['suite' => 'basicTestSuite', 'relative_path' => "_generated" . DIRECTORY_SEPARATOR . "basicTestSuite"]
117117
);
118118
}
119119

@@ -206,5 +206,6 @@ private function setMockTestAndSuiteParserOutput($testData, $suiteData)
206206
public static function tearDownAfterClass()
207207
{
208208
TestLoggingUtil::getInstance()->clearMockLoggingUtil();
209+
parent::tearDownAfterClass();
209210
}
210211
}

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

+2-2
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

+2-2
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

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
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
use tests\unit\Util\TestLoggingUtil;
2222

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

0 commit comments

Comments
 (0)