Skip to content

Commit 891e72b

Browse files
committed
MQE-1173: [Dev experience] Error on test generation without reference on file
- Added error messaging at Action level - Extended range of errors caught at Test level - Added unit tests for Exception catching for TestGenerator and ActionMergeUtil
1 parent 66b6ecd commit 891e72b

File tree

4 files changed

+110
-6
lines changed

4 files changed

+110
-6
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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\ActionMergeUtil;
20+
use Magento\FunctionalTestingFramework\Test\Util\ActionObjectExtractor;
21+
use Magento\FunctionalTestingFramework\Test\Util\TestObjectExtractor;
22+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
23+
use tests\unit\Util\TestDataArrayBuilder;
24+
25+
class ActionMergeUtilTest extends MagentoTestCase
26+
{
27+
/**
28+
* Test Exception Handler
29+
*
30+
* @throws \Exception
31+
*/
32+
public function testMergeActionsException()
33+
{
34+
$testActionMergeUtil = new ActionMergeUtil(null, null);
35+
36+
$actionObject = new ActionObject('fakeAction', 'comment', [
37+
'userInput' => '{{someEntity.entity}}'
38+
]);
39+
40+
$this->expectExceptionMessage("Could not resolve entity reference \"{{someEntity.entity}}\" " .
41+
"in Action with stepKey \"fakeAction\".\n" .
42+
"Exception occurred parsing action at StepKey \"fakeAction\"");
43+
44+
$testActionMergeUtil->resolveActionSteps(["merge123" => $actionObject]);
45+
}
46+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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 Magento\FunctionalTestingFramework\Util\MagentoTestCase;
22+
use Magento\FunctionalTestingFramework\Util\TestGenerator;
23+
use tests\unit\Util\TestDataArrayBuilder;
24+
25+
class TestGeneratorTest extends MagentoTestCase
26+
{
27+
/**
28+
* Basic test to validate array => test object conversion.
29+
*
30+
* @throws \Exception
31+
*/
32+
public function testGetTestObject()
33+
{
34+
$actionObject = new ActionObject('fakeAction', 'comment', [
35+
'userInput' => '{{someEntity.entity}}'
36+
]);
37+
38+
$testObject = new TestObject("sampleTest", ["merge123" => $actionObject], [], [], "filename");
39+
40+
$testGeneratorObject = TestGenerator::getInstance("", ["sampleTest" => $testObject]);
41+
42+
AspectMock::double(TestGenerator::class, ['loadAllTestObjects' => ["sampleTest" => $testObject]]);
43+
44+
$this->expectExceptionMessage("Could not resolve entity reference \"{{someEntity.entity}}\" " .
45+
"in Action with stepKey \"fakeAction\".\n" .
46+
"Exception occurred parsing action at StepKey \"fakeAction\" in Test \"sampleTest\"");
47+
48+
$testGeneratorObject->createAllTestFiles(null, []);
49+
}
50+
}

src/Magento/FunctionalTestingFramework/Test/Util/ActionMergeUtil.php

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -266,11 +266,19 @@ private function insertReadinessSkips()
266266
private function sortActions($parsedSteps)
267267
{
268268
foreach ($parsedSteps as $parsedStep) {
269-
$parsedStep->resolveReferences();
270-
if ($parsedStep->getLinkedAction()) {
271-
$this->stepsToMerge[$parsedStep->getStepKey()] = $parsedStep;
272-
} else {
273-
$this->orderedSteps[$parsedStep->getStepKey()] = $parsedStep;
269+
try {
270+
$parsedStep->resolveReferences();
271+
272+
if ($parsedStep->getLinkedAction()) {
273+
$this->stepsToMerge[$parsedStep->getStepKey()] = $parsedStep;
274+
} else {
275+
$this->orderedSteps[$parsedStep->getStepKey()] = $parsedStep;
276+
}
277+
} catch (\Exception $e) {
278+
throw new TestReferenceException(
279+
$e->getMessage() .
280+
".\nException occurred parsing action at StepKey \"" . $parsedStep->getStepKey() . "\""
281+
);
274282
}
275283
}
276284
}

src/Magento/FunctionalTestingFramework/Util/TestGenerator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1577,7 +1577,7 @@ private function generateTestPhp($test)
15771577
} else {
15781578
try {
15791579
$steps = $this->generateStepsPhp($test->getOrderedActions());
1580-
} catch (TestReferenceException $e) {
1580+
} catch (\Exception $e) {
15811581
throw new TestReferenceException($e->getMessage() . " in Test \"" . $test->getName() . "\"");
15821582
}
15831583
}

0 commit comments

Comments
 (0)