Skip to content

Commit 1de0283

Browse files
authored
MQE-1148: Include Parent In Output Of Duplicate StepKey or Section Element
- parent is now included in exception output
1 parent 56440ef commit 1de0283

File tree

8 files changed

+37
-29
lines changed

8 files changed

+37
-29
lines changed

dev/tests/unit/Magento/FunctionalTestFramework/Util/Validation/DuplicateNodeValidationUtilTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public function testTestActionValidation()
2929
';
3030
$uniqueIdentifier = "stepKey";
3131
$filename = "file";
32+
$testName = "test";
3233

3334
// Perform Test
3435
$dom = new \DOMDocument();
@@ -40,8 +41,7 @@ public function testTestActionValidation()
4041
$validator->validateChildUniqueness(
4142
$testNode,
4243
$filename,
43-
$uniqueIdentifier,
44-
$exceptionCollector
44+
$testName
4545
);
4646
$this->expectException(\Exception::class);
4747
$exceptionCollector->throwException();

src/Magento/FunctionalTestingFramework/DataGenerator/Config/Dom.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class Dom extends \Magento\FunctionalTestingFramework\Config\MftfDom
1818
{
1919
const DATA_FILE_NAME_ENDING = "Data";
2020
const DATA_META_FILENAME_ATTRIBUTE = "filename";
21+
const DATA_META_NAME_ATTRIBUTE = "name";
2122

2223
/**
2324
* NodeValidationUtil
@@ -74,7 +75,8 @@ public function initDom($xml, $filename = null)
7475
$entityNode->setAttribute(self::DATA_META_FILENAME_ATTRIBUTE, $filename);
7576
$this->validationUtil->validateChildUniqueness(
7677
$entityNode,
77-
$filename
78+
$filename,
79+
$entityNode->getAttribute(self::DATA_META_NAME_ATTRIBUTE)
7880
);
7981
}
8082
}

src/Magento/FunctionalTestingFramework/DataGenerator/Config/OperationDom.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class OperationDom extends \Magento\FunctionalTestingFramework\Config\MftfDom
1818
{
1919
const METADATA_FILE_NAME_ENDING = "meta";
2020
const METADATA_META_FILENAME_ATTRIBUTE = "filename";
21+
const METADATA_META_NAME_ATTRIBUTE = "name";
2122

2223
/**
2324
* NodeValidationUtil
@@ -74,7 +75,8 @@ public function initDom($xml, $filename = null)
7475
$operationNode->setAttribute(self::METADATA_META_FILENAME_ATTRIBUTE, $filename);
7576
$this->validateOperationElements(
7677
$operationNode,
77-
$filename
78+
$filename,
79+
$operationNode->getAttribute(self::METADATA_META_NAME_ATTRIBUTE)
7880
);
7981
}
8082
}
@@ -86,13 +88,15 @@ public function initDom($xml, $filename = null)
8688
* Recurse through child elements and validate uniqueKeys
8789
* @param \DOMElement $parentNode
8890
* @param string $filename
91+
* @param string $topParent
8992
* @return void
9093
*/
91-
public function validateOperationElements(\DOMElement $parentNode, $filename)
94+
public function validateOperationElements(\DOMElement $parentNode, $filename, $topParent)
9295
{
9396
$this->validationUtil->validateChildUniqueness(
9497
$parentNode,
95-
$filename
98+
$filename,
99+
$topParent
96100
);
97101
$childNodes = $parentNode->childNodes;
98102

@@ -103,7 +107,8 @@ public function validateOperationElements(\DOMElement $parentNode, $filename)
103107
}
104108
$this->validateOperationElements(
105109
$currentNode,
106-
$filename
110+
$filename,
111+
$topParent
107112
);
108113
}
109114
}

src/Magento/FunctionalTestingFramework/Page/Config/Dom.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
class Dom extends \Magento\FunctionalTestingFramework\Config\MftfDom
2121
{
2222
const PAGE_META_FILENAME_ATTRIBUTE = "filename";
23+
const PAGE_META_NAME_ATTRIBUTE = "name";
2324

2425
/**
2526
* Module Path extractor
@@ -79,7 +80,11 @@ public function initDom($xml, $filename = null)
7980
$dom = parent::initDom($xml, $filename);
8081

8182
$pagesNode = $dom->getElementsByTagName('pages')->item(0);
82-
$this->validationUtil->validateChildUniqueness($pagesNode, $filename);
83+
$this->validationUtil->validateChildUniqueness(
84+
$pagesNode,
85+
$filename,
86+
$pagesNode->getAttribute(self::PAGE_META_NAME_ATTRIBUTE)
87+
);
8388
$pageNodes = $dom->getElementsByTagName('page');
8489
$currentModule =
8590
$this->modulePathExtractor->extractModuleName($filename) .

src/Magento/FunctionalTestingFramework/Page/Config/SectionDom.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
class SectionDom extends \Magento\FunctionalTestingFramework\Config\MftfDom
2121
{
2222
const SECTION_META_FILENAME_ATTRIBUTE = "filename";
23+
const SECTION_META_NAME_ATTRIBUTE = "name";
2324

2425
/**
2526
* NodeValidationUtil
@@ -71,7 +72,11 @@ public function initDom($xml, $filename = null)
7172
$sectionNodes = $dom->getElementsByTagName('section');
7273
foreach ($sectionNodes as $sectionNode) {
7374
$sectionNode->setAttribute(self::SECTION_META_FILENAME_ATTRIBUTE, $filename);
74-
$this->validationUtil->validateChildUniqueness($sectionNode, $filename);
75+
$this->validationUtil->validateChildUniqueness(
76+
$sectionNode,
77+
$filename,
78+
$sectionNode->getAttribute(self::SECTION_META_NAME_ATTRIBUTE)
79+
);
7580
}
7681
return $dom;
7782
}

src/Magento/FunctionalTestingFramework/Test/Config/ActionGroupDom.php

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
class ActionGroupDom extends Dom
1616
{
1717
const ACTION_GROUP_FILE_NAME_ENDING = "ActionGroup.xml";
18+
const ACTION_GROUP_META_NAME_ATTRIBUTE = "name";
1819

1920
/**
2021
* Takes a dom element from xml and appends the filename based on location while also validating the action group
@@ -35,22 +36,9 @@ public function initDom($xml, $filename = null)
3536
$actionGroupNode->setAttribute(self::TEST_META_FILENAME_ATTRIBUTE, $filename);
3637
$this->validationUtil->validateChildUniqueness(
3738
$actionGroupNode,
38-
$filename
39+
$filename,
40+
$actionGroupNode->getAttribute(self::ACTION_GROUP_META_NAME_ATTRIBUTE)
3941
);
40-
$beforeNode = $actionGroupNode->getElementsByTagName('before')->item(0);
41-
$afterNode = $actionGroupNode->getElementsByTagName('after')->item(0);
42-
if (isset($beforeNode)) {
43-
$this->validationUtil->validateChildUniqueness(
44-
$beforeNode,
45-
$filename
46-
);
47-
}
48-
if (isset($afterNode)) {
49-
$this->validationUtil->validateChildUniqueness(
50-
$afterNode,
51-
$filename
52-
);
53-
}
5442
if ($actionGroupNode->getAttribute(self::TEST_MERGE_POINTER_AFTER) !== "") {
5543
$this->appendMergePointerToActions(
5644
$actionGroupNode,

src/Magento/FunctionalTestingFramework/Test/Config/Dom.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,21 +104,24 @@ public function initDom($xml, $filename = null)
104104

105105
$this->validationUtil->validateChildUniqueness(
106106
$testNode,
107-
$filename
107+
$filename,
108+
$testNode->getAttribute(self::TEST_META_NAME_ATTRIBUTE)
108109
);
109110
$beforeNode = $testNode->getElementsByTagName('before')->item(0);
110111
$afterNode = $testNode->getElementsByTagName('after')->item(0);
111112

112113
if (isset($beforeNode)) {
113114
$this->validationUtil->validateChildUniqueness(
114115
$beforeNode,
115-
$filename
116+
$filename,
117+
$testNode->getAttribute(self::TEST_META_NAME_ATTRIBUTE) . "/before"
116118
);
117119
}
118120
if (isset($afterNode)) {
119121
$this->validationUtil->validateChildUniqueness(
120122
$afterNode,
121-
$filename
123+
$filename,
124+
$testNode->getAttribute(self::TEST_META_NAME_ATTRIBUTE) . "/after"
122125
);
123126
}
124127
}

src/Magento/FunctionalTestingFramework/Util/Validation/DuplicateNodeValidationUtil.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public function __construct($uniqueKey, $exceptionCollector)
4545
* @param string $filename
4646
* @return void
4747
*/
48-
public function validateChildUniqueness(\DOMElement $parentNode, $filename)
48+
public function validateChildUniqueness(\DOMElement $parentNode, $filename, $parentKey)
4949
{
5050
$childNodes = $parentNode->childNodes;
5151
$type = ucfirst($parentNode->tagName);
@@ -69,7 +69,7 @@ public function validateChildUniqueness(\DOMElement $parentNode, $filename)
6969
$duplicates = array_diff_assoc($keyValues, $withoutDuplicates);
7070
$keyError = "";
7171
foreach ($duplicates as $duplicateKey => $duplicateValue) {
72-
$keyError .= "\t{$this->uniqueKey}: {$duplicateValue} is used more than once.\n";
72+
$keyError .= "\t{$this->uniqueKey}: {$duplicateValue} is used more than once. (Parent: {$parentKey})\n";
7373
}
7474

7575
$errorMsg = "{$type} cannot use {$this->uniqueKey}s more than once.\t\n{$keyError}\tin file: {$filename}";

0 commit comments

Comments
 (0)