Skip to content

Commit 437a7de

Browse files
committed
MQE-620: [Data Input] Make test schema framework agnostic
- replace references to Cest with test - change object model to reference test objects and remove cest objects - change schema to reference test tags
1 parent 252a42f commit 437a7de

File tree

99 files changed

+2864
-2167
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+2864
-2167
lines changed

dev/_suite/functionalSuite.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
<suite name="functionalSuite1">
1111
<include>
1212
<group name="include"/>
13-
<cest name="SampleSuiteCest" test="IncludeTest"/>
14-
<cest name="SampleSuite4Cest"/>
13+
<test name="IncludeTest"/>
14+
<module name="TestModule" file="SampleSuite2Test.xml"/>
1515
</include>
1616
<exclude>
1717
<group name="exclude"/>
18-
<cest name="SampleSuite5Cest" test="ExcludeTest"/>
18+
<test name="ExcludeTest2"/>
1919
</exclude>
2020
</suite>
2121
</suites>

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

-218
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Tests\unit\Magento\FunctionalTestFramework\Test\Handlers;
8+
9+
use AspectMock\Test as AspectMock;
10+
11+
use Go\Aop\Aspect;
12+
use Magento\FunctionalTestingFramework\ObjectManager;
13+
use Magento\FunctionalTestingFramework\ObjectManagerFactory;
14+
use Magento\FunctionalTestingFramework\Test\Handlers\TestObjectHandler;
15+
use Magento\FunctionalTestingFramework\Test\Objects\ActionObject;
16+
use Magento\FunctionalTestingFramework\Test\Objects\TestHookObject;
17+
use Magento\FunctionalTestingFramework\Test\Objects\TestObject;
18+
use Magento\FunctionalTestingFramework\Test\Parsers\TestDataParser;
19+
use Magento\FunctionalTestingFramework\Test\Util\ActionObjectExtractor;
20+
use Magento\FunctionalTestingFramework\Test\Util\TestObjectExtractor;
21+
use PHPUnit\Framework\TestCase;
22+
use tests\unit\Util\TestDataArrayBuilder;
23+
24+
class TestObjectHandlerTest extends TestCase
25+
{
26+
/**
27+
* Basic test to validate array => test object conversion
28+
*/
29+
public function testGetTestObject()
30+
{
31+
// set up mock data
32+
$testDataArrayBuilder = new TestDataArrayBuilder();
33+
$mockData = $testDataArrayBuilder
34+
->withAnnotations()
35+
->withAfterHook()
36+
->withBeforeHook()
37+
->withTestActions()
38+
->build();
39+
40+
$this->setMockParserOutput(['tests' => $mockData]);
41+
42+
// run object handler method
43+
$toh = TestObjectHandler::getInstance();
44+
$actualTestObject = $toh->getObject($testDataArrayBuilder->testName);
45+
46+
// perform asserts
47+
$expectedBeforeActionObject = new ActionObject(
48+
$testDataArrayBuilder->testActionBeforeName,
49+
$testDataArrayBuilder->testActionType,
50+
[]
51+
);
52+
$expectedAfterActionObject = new ActionObject(
53+
$testDataArrayBuilder->testActionAfterName,
54+
$testDataArrayBuilder->testActionType,
55+
[]
56+
);
57+
$expectedBeforeHookObject = new TestHookObject(
58+
TestObjectExtractor::TEST_BEFORE_HOOK,
59+
$testDataArrayBuilder->testName,
60+
[$expectedBeforeActionObject],
61+
[]
62+
);
63+
$expectedAfterHookObject = new TestHookObject(
64+
TestObjectExtractor::TEST_AFTER_HOOK,
65+
$testDataArrayBuilder->testName,
66+
[$expectedAfterActionObject],
67+
[]
68+
);
69+
70+
$expectedTestActionObject = new ActionObject(
71+
$testDataArrayBuilder->testTestActionName,
72+
$testDataArrayBuilder->testActionType,
73+
[]
74+
);
75+
$expectedTestObject = new TestObject(
76+
$testDataArrayBuilder->testName,
77+
[$expectedTestActionObject],
78+
[
79+
'group' => ['test']
80+
],
81+
[
82+
TestObjectExtractor::TEST_BEFORE_HOOK => $expectedBeforeHookObject,
83+
TestObjectExtractor::TEST_AFTER_HOOK => $expectedAfterHookObject
84+
],
85+
[]
86+
);
87+
88+
$this->assertEquals($expectedTestObject, $actualTestObject);
89+
}
90+
91+
/**
92+
* Tests the function used to get a series of relevant tests by group
93+
*/
94+
public function testGetTestsByGroup()
95+
{
96+
// set up mock data with Exclude Test
97+
$includeTest = (new TestDataArrayBuilder())
98+
->withName('includeTest')
99+
->withAnnotations()
100+
->withTestActions()
101+
->build();
102+
$excludeTest = (new TestDataArrayBuilder())
103+
->withName('excludeTest')
104+
->withTestActions()
105+
->build();
106+
107+
$this->setMockParserOutput(['tests' => array_merge($includeTest, $excludeTest)]);
108+
109+
// execute test method
110+
$toh = TestObjectHandler::getInstance();
111+
$tests = $toh->getTestsByGroup('test');
112+
113+
// perform asserts
114+
$this->assertCount(1, $tests);
115+
$this->assertArrayHasKey('includeTest', $tests);
116+
$this->assertArrayNotHasKey('excludeTest', $tests);
117+
}
118+
119+
/**
120+
* Function used to set mock for parser return and force init method to run between tests.
121+
*
122+
* @param array $data
123+
*/
124+
private function setMockParserOutput($data)
125+
{
126+
// clear test object handler value to inject parsed content
127+
$property = new \ReflectionProperty(TestObjectHandler::class, 'testObjectHandler');
128+
$property->setAccessible(true);
129+
$property->setValue(null);
130+
131+
$mockDataParser = AspectMock::double(TestDataParser::class, ['readTestData' => $data])->make();
132+
$instance = AspectMock::double(ObjectManager::class, ['create' => $mockDataParser])
133+
->make(); // bypass the private constructor
134+
AspectMock::double(ObjectManagerFactory::class, ['getObjectManager' => $instance]);
135+
}
136+
}

0 commit comments

Comments
 (0)