-
Notifications
You must be signed in to change notification settings - Fork 132
/
Copy pathSuiteDom.php
84 lines (76 loc) · 2.54 KB
/
SuiteDom.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\FunctionalTestingFramework\Suite\Config;
use Magento\FunctionalTestingFramework\Exceptions\Collector\ExceptionCollector;
use Magento\FunctionalTestingFramework\Util\Validation\SingleNodePerFileValidationUtil;
/**
* MFTF suite.xml configuration XML DOM utility
* @package Magento\FunctionalTestingFramework\Suite\Config
*/
class SuiteDom extends \Magento\FunctionalTestingFramework\Config\MftfDom
{
const SUITE_META_FILENAME_ATTRIBUTE = "filename";
/** SingleNodePerFileValidationUtil
*
* @var SingleNodePerFileValidationUtil
*/
private $singleNodePerFileValidationUtil;
/**
* Entity Dom constructor.
* @param string $xml
* @param string $filename
* @param ExceptionCollector $exceptionCollector
* @param array $idAttributes
* @param string $typeAttributeName
* @param string $schemaFile
* @param string $errorFormat
*/
public function __construct(
$xml,
$filename,
$exceptionCollector,
array $idAttributes = [],
$typeAttributeName = null,
$schemaFile = null,
$errorFormat = self::ERROR_FORMAT_DEFAULT
) {
$this->singleNodePerFileValidationUtil = new SingleNodePerFileValidationUtil($exceptionCollector);
parent::__construct(
$xml,
$filename,
$exceptionCollector,
$idAttributes,
$typeAttributeName,
$schemaFile,
$errorFormat
);
}
/**
* Takes a dom element from xml and appends the filename based on location
*
* @param string $xml
* @param string|null $filename
* @return \DOMDocument
*/
public function initDom($xml, $filename = null)
{
$dom = parent::initDom($xml, $filename);
if ($dom->getElementsByTagName('suites')->length > 0) {
// Validate single suite node per file
$this->singleNodePerFileValidationUtil->validateSingleNodeForTag(
$dom,
'suite',
$filename
);
if ($dom->getElementsByTagName('suite')->length > 0) {
/** @var \DOMElement $suiteNode */
$suiteNode = $dom->getElementsByTagName('suite')[0];
$suiteNode->setAttribute(self::SUITE_META_FILENAME_ATTRIBUTE, $filename);
}
}
return $dom;
}
}