Skip to content

Commit 1188737

Browse files
committed
Merge remote-tracking branch 'origin/MQE-429' into sprint-develop
2 parents 8ec6585 + 2a88898 commit 1188737

File tree

8 files changed

+120
-27
lines changed

8 files changed

+120
-27
lines changed

etc/di.xml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,8 @@
206206
<item name="/config/cest/test" xsi:type="string">name</item>
207207
<item name="/config/cest/test/actionGroup/argument" xsi:type="string">name</item>
208208
<item name="/config/cest/test/createData/required-entity" xsi:type="string">createDataKey</item>
209-
<item name="/config/cest/test/(acceptPopup|actionGroup|amOnPage|amOnUrl|appendField|assertArraySubset|attachFile|cancelPopup|checkOption|click|clickWithLeftButton|clickWithRightButton|closeTab|createData|deleteData|dontSee|dontSeeCheckboxIsChecked|dontSeeCookie|dontSeeCurrentUrlEquals|dontSeeCurrentUrlMatches|dontSeeElement|dontSeeElementInDOM|dontSeeInCurrentUrl|dontSeeInField|dontSeeInPageSource|dontSeeInSource|dontSeeInTitle|dontSeeLink|dontSeeOptionIsSelected|doubleClick|dragAndDrop|entity|executeJS|fillField|formatMoney|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|openNewTab|pauseExecution|performOn|pressKey|reloadPage|resetCookie|resizeWindow|scrollTo|searchAndMultiSelectOption|see|seeCheckboxIsChecked|seeCookie|seeCurrentUrlEquals|seeCurrentUrlMatches|seeElement|seeElementInDOM|seeInCurrentUrl|seeInField|seeInFormFields|seeInPageSource|seeInPopup|seeInSource|seeInTitle|seeLink|seeNumberOfElements|seeOptionIsSelected|selectOption|setCookie|switchToIFrame|switchToNextTab|switchToPreviousTab|switchToWindow|typeInPopup|uncheckOption|unselectOption|wait|waitForAjaxLoad|waitForElement|waitForElementChange|waitForElementNotVisible|waitForElementVisible|waitForJS|waitForLoadingMaskToDisappear|waitForPageLoad|waitForText)" xsi:type="string">mergeKey</item>
209+
<item name="/config/cest/test/updateData/required-entity" xsi:type="string">createDataKey</item>
210+
<item name="/config/cest/test/(acceptPopup|actionGroup|amOnPage|amOnUrl|appendField|assertArraySubset|attachFile|cancelPopup|checkOption|click|clickWithLeftButton|clickWithRightButton|closeTab|createData|deleteData|updateData|dontSee|dontSeeCheckboxIsChecked|dontSeeCookie|dontSeeCurrentUrlEquals|dontSeeCurrentUrlMatches|dontSeeElement|dontSeeElementInDOM|dontSeeInCurrentUrl|dontSeeInField|dontSeeInPageSource|dontSeeInSource|dontSeeInTitle|dontSeeLink|dontSeeOptionIsSelected|doubleClick|dragAndDrop|entity|executeJS|fillField|formatMoney|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|openNewTab|pauseExecution|performOn|pressKey|reloadPage|resetCookie|resizeWindow|scrollTo|searchAndMultiSelectOption|see|seeCheckboxIsChecked|seeCookie|seeCurrentUrlEquals|seeCurrentUrlMatches|seeElement|seeElementInDOM|seeInCurrentUrl|seeInField|seeInFormFields|seeInPageSource|seeInPopup|seeInSource|seeInTitle|seeLink|seeNumberOfElements|seeOptionIsSelected|selectOption|setCookie|switchToIFrame|switchToNextTab|switchToPreviousTab|switchToWindow|typeInPopup|uncheckOption|unselectOption|wait|waitForAjaxLoad|waitForElement|waitForElementChange|waitForElementNotVisible|waitForElementVisible|waitForJS|waitForLoadingMaskToDisappear|waitForPageLoad|waitForText)" xsi:type="string">mergeKey</item>
210211
</argument>
211212
<argument name="fileName" xsi:type="string">*Cest.xml</argument>
212213
<argument name="defaultScope" xsi:type="string">Cest</argument>
@@ -216,14 +217,17 @@
216217
<virtualType name="Magento\FunctionalTestingFramework\Test\Config\Dom\ArrayNodeConfig" type="Magento\FunctionalTestingFramework\Config\Dom\ArrayNodeConfig">
217218
<arguments>
218219
<argument name="assocArrayAttributes" xsi:type="array">
219-
<item name="/config/cest/test/(acceptPopup|actionGroup|amOnPage|amOnUrl|appendField|assertArraySubset|attachFile|cancelPopup|checkOption|click|clickWithLeftButton|clickWithRightButton|closeTab|createData|deleteData|dontSee|dontSeeCheckboxIsChecked|dontSeeCookie|dontSeeCurrentUrlEquals|dontSeeCurrentUrlMatches|dontSeeElement|dontSeeElementInDOM|dontSeeInCurrentUrl|dontSeeInField|dontSeeInPageSource|dontSeeInSource|dontSeeInTitle|dontSeeLink|dontSeeOptionIsSelected|doubleClick|dragAndDrop|entity|executeJS|fillField|formatMoney|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|openNewTab|pauseExecution|performOn|pressKey|reloadPage|resetCookie|resizeWindow|scrollTo|searchAndMultiSelectOption|see|seeCheckboxIsChecked|seeCookie|seeCurrentUrlEquals|seeCurrentUrlMatches|seeElement|seeElementInDOM|seeInCurrentUrl|seeInField|seeInFormFields|seeInPageSource|seeInPopup|seeInSource|seeInTitle|seeLink|seeNumberOfElements|seeOptionIsSelected|selectOption|setCookie|switchToIFrame|switchToNextTab|switchToPreviousTab|switchToWindow|typeInPopup|uncheckOption|unselectOption|wait|waitForAjaxLoad|waitForElement|waitForElementChange|waitForElementNotVisible|waitForElementVisible|waitForJS|waitForLoadingMaskToDisappear|waitForPageLoad|waitForText)" xsi:type="string">mergeKey</item>
220-
<item name="/config/cest/before/(acceptPopup|actionGroup|amOnPage|amOnUrl|appendField|assertArraySubset|attachFile|cancelPopup|checkOption|click|clickWithLeftButton|clickWithRightButton|closeTab|createData|deleteData|dontSee|dontSeeCheckboxIsChecked|dontSeeCookie|dontSeeCurrentUrlEquals|dontSeeCurrentUrlMatches|dontSeeElement|dontSeeElementInDOM|dontSeeInCurrentUrl|dontSeeInField|dontSeeInPageSource|dontSeeInSource|dontSeeInTitle|dontSeeLink|dontSeeOptionIsSelected|doubleClick|dragAndDrop|entity|executeJS|fillField|formatMoney|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|openNewTab|pauseExecution|performOn|pressKey|reloadPage|resetCookie|resizeWindow|scrollTo|searchAndMultiSelectOption|see|seeCheckboxIsChecked|seeCookie|seeCurrentUrlEquals|seeCurrentUrlMatches|seeElement|seeElementInDOM|seeInCurrentUrl|seeInField|seeInFormFields|seeInPageSource|seeInPopup|seeInSource|seeInTitle|seeLink|seeNumberOfElements|seeOptionIsSelected|selectOption|setCookie|switchToIFrame|switchToNextTab|switchToPreviousTab|switchToWindow|typeInPopup|uncheckOption|unselectOption|wait|waitForAjaxLoad|waitForElement|waitForElementChange|waitForElementNotVisible|waitForElementVisible|waitForJS|waitForLoadingMaskToDisappear|waitForPageLoad|waitForText)" xsi:type="string">mergeKey</item>
221-
<item name="/config/cest/after/(acceptPopup|actionGroup|amOnPage|amOnUrl|appendField|assertArraySubset|attachFile|cancelPopup|checkOption|click|clickWithLeftButton|clickWithRightButton|closeTab|createData|deleteData|dontSee|dontSeeCheckboxIsChecked|dontSeeCookie|dontSeeCurrentUrlEquals|dontSeeCurrentUrlMatches|dontSeeElement|dontSeeElementInDOM|dontSeeInCurrentUrl|dontSeeInField|dontSeeInPageSource|dontSeeInSource|dontSeeInTitle|dontSeeLink|dontSeeOptionIsSelected|doubleClick|dragAndDrop|entity|executeJS|fillField|formatMoney|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|openNewTab|pauseExecution|performOn|pressKey|reloadPage|resetCookie|resizeWindow|scrollTo|searchAndMultiSelectOption|see|seeCheckboxIsChecked|seeCookie|seeCurrentUrlEquals|seeCurrentUrlMatches|seeElement|seeElementInDOM|seeInCurrentUrl|seeInField|seeInFormFields|seeInPageSource|seeInPopup|seeInSource|seeInTitle|seeLink|seeNumberOfElements|seeOptionIsSelected|selectOption|setCookie|switchToIFrame|switchToNextTab|switchToPreviousTab|switchToWindow|typeInPopup|uncheckOption|unselectOption|wait|waitForAjaxLoad|waitForElement|waitForElementChange|waitForElementNotVisible|waitForElementVisible|waitForJS|waitForLoadingMaskToDisappear|waitForPageLoad|waitForText)" xsi:type="string">mergeKey</item>
220+
<item name="/config/cest/test/(acceptPopup|actionGroup|amOnPage|amOnUrl|appendField|assertArraySubset|attachFile|cancelPopup|checkOption|click|clickWithLeftButton|clickWithRightButton|closeTab|createData|deleteData|updateData|dontSee|dontSeeCheckboxIsChecked|dontSeeCookie|dontSeeCurrentUrlEquals|dontSeeCurrentUrlMatches|dontSeeElement|dontSeeElementInDOM|dontSeeInCurrentUrl|dontSeeInField|dontSeeInPageSource|dontSeeInSource|dontSeeInTitle|dontSeeLink|dontSeeOptionIsSelected|doubleClick|dragAndDrop|entity|executeJS|fillField|formatMoney|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|openNewTab|pauseExecution|performOn|pressKey|reloadPage|resetCookie|resizeWindow|scrollTo|searchAndMultiSelectOption|see|seeCheckboxIsChecked|seeCookie|seeCurrentUrlEquals|seeCurrentUrlMatches|seeElement|seeElementInDOM|seeInCurrentUrl|seeInField|seeInFormFields|seeInPageSource|seeInPopup|seeInSource|seeInTitle|seeLink|seeNumberOfElements|seeOptionIsSelected|selectOption|setCookie|switchToIFrame|switchToNextTab|switchToPreviousTab|switchToWindow|typeInPopup|uncheckOption|unselectOption|wait|waitForAjaxLoad|waitForElement|waitForElementChange|waitForElementNotVisible|waitForElementVisible|waitForJS|waitForLoadingMaskToDisappear|waitForPageLoad|waitForText)" xsi:type="string">mergeKey</item>
221+
<item name="/config/cest/before/(acceptPopup|actionGroup|amOnPage|amOnUrl|appendField|assertArraySubset|attachFile|cancelPopup|checkOption|click|clickWithLeftButton|clickWithRightButton|closeTab|createData|deleteData|updateData|dontSee|dontSeeCheckboxIsChecked|dontSeeCookie|dontSeeCurrentUrlEquals|dontSeeCurrentUrlMatches|dontSeeElement|dontSeeElementInDOM|dontSeeInCurrentUrl|dontSeeInField|dontSeeInPageSource|dontSeeInSource|dontSeeInTitle|dontSeeLink|dontSeeOptionIsSelected|doubleClick|dragAndDrop|entity|executeJS|fillField|formatMoney|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|openNewTab|pauseExecution|performOn|pressKey|reloadPage|resetCookie|resizeWindow|scrollTo|searchAndMultiSelectOption|see|seeCheckboxIsChecked|seeCookie|seeCurrentUrlEquals|seeCurrentUrlMatches|seeElement|seeElementInDOM|seeInCurrentUrl|seeInField|seeInFormFields|seeInPageSource|seeInPopup|seeInSource|seeInTitle|seeLink|seeNumberOfElements|seeOptionIsSelected|selectOption|setCookie|switchToIFrame|switchToNextTab|switchToPreviousTab|switchToWindow|typeInPopup|uncheckOption|unselectOption|wait|waitForAjaxLoad|waitForElement|waitForElementChange|waitForElementNotVisible|waitForElementVisible|waitForJS|waitForLoadingMaskToDisappear|waitForPageLoad|waitForText)" xsi:type="string">mergeKey</item>
222+
<item name="/config/cest/after/(acceptPopup|actionGroup|amOnPage|amOnUrl|appendField|assertArraySubset|attachFile|cancelPopup|checkOption|click|clickWithLeftButton|clickWithRightButton|closeTab|createData|deleteData|updateData|dontSee|dontSeeCheckboxIsChecked|dontSeeCookie|dontSeeCurrentUrlEquals|dontSeeCurrentUrlMatches|dontSeeElement|dontSeeElementInDOM|dontSeeInCurrentUrl|dontSeeInField|dontSeeInPageSource|dontSeeInSource|dontSeeInTitle|dontSeeLink|dontSeeOptionIsSelected|doubleClick|dragAndDrop|entity|executeJS|fillField|formatMoney|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|openNewTab|pauseExecution|performOn|pressKey|reloadPage|resetCookie|resizeWindow|scrollTo|searchAndMultiSelectOption|see|seeCheckboxIsChecked|seeCookie|seeCurrentUrlEquals|seeCurrentUrlMatches|seeElement|seeElementInDOM|seeInCurrentUrl|seeInField|seeInFormFields|seeInPageSource|seeInPopup|seeInSource|seeInTitle|seeLink|seeNumberOfElements|seeOptionIsSelected|selectOption|setCookie|switchToIFrame|switchToNextTab|switchToPreviousTab|switchToWindow|typeInPopup|uncheckOption|unselectOption|wait|waitForAjaxLoad|waitForElement|waitForElementChange|waitForElementNotVisible|waitForElementVisible|waitForJS|waitForLoadingMaskToDisappear|waitForPageLoad|waitForText)" xsi:type="string">mergeKey</item>
222223
<item name="/config/cest/test" xsi:type="string">name</item>
223224
<item name="/config/cest" xsi:type="string">name</item>
224225
<item name="/config/cest/test/createData/required-entity" xsi:type="string">createDataKey</item>
225226
<item name="/config/cest/before/createData/required-entity" xsi:type="string">createDataKey</item>
226227
<item name="/config/cest/after/createData/required-entity" xsi:type="string">createDataKey</item>
228+
<item name="/config/cest/test/updateData/required-entity" xsi:type="string">createDataKey</item>
229+
<item name="/config/cest/before/updateData/required-entity" xsi:type="string">createDataKey</item>
230+
<item name="/config/cest/after/updateData/required-entity" xsi:type="string">createDataKey</item>
227231
<item name="/config/cest/test/actionGroup/argument" xsi:type="string">name</item>
228232
</argument>
229233
<argument name="numericArrays" xsi:type="array">

src/Magento/FunctionalTestingFramework/DataGenerator/Persist/CurlHandler.php

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class CurlHandler
7575

7676
/**
7777
* ApiSubObject constructor.
78+
*
7879
* @param string $operation
7980
* @param EntityDataObject $entityObject
8081
* @param string $storeCode
@@ -105,7 +106,14 @@ public function executeRequest($dependentEntities)
105106
$successRegex = null;
106107
$returnRegex = null;
107108

108-
$apiUrl = $this->resolveUrlReference($this->operationDefinition->getApiUrl());
109+
if ($this->operation == 'update') {
110+
$entities = array_merge($dependentEntities, [$this->entityObject]);
111+
} elseif ((null !== $dependentEntities) && is_array($dependentEntities)) {
112+
$entities = array_merge([$this->entityObject], $dependentEntities);
113+
} else {
114+
$entities = [$this->entityObject];
115+
}
116+
$apiUrl = $this->resolveUrlReference($this->operationDefinition->getApiUrl(), $entities);
109117
$headers = $this->operationDefinition->getHeaders();
110118
$authorization = $this->operationDefinition->getAuth();
111119
$contentType = $this->operationDefinition->getContentType();
@@ -175,24 +183,30 @@ public function isContentTypeJson()
175183
}
176184

177185
/**
178-
* Resolve rul reference from entity data.
186+
* Resolve rul reference from entity objects.
179187
*
180188
* @param string $urlIn
189+
* @param array $entityObjects
181190
* @return string
182191
*/
183-
private function resolveUrlReference($urlIn)
192+
private function resolveUrlReference($urlIn, $entityObjects)
184193
{
185194
$urlOut = $urlIn;
186195
$matchedParams = [];
187196
preg_match_all("/[{](.+?)[}]/", $urlIn, $matchedParams);
188197

189198
if (!empty($matchedParams)) {
190199
foreach ($matchedParams[0] as $paramKey => $paramValue) {
191-
$param = $this->entityObject->getDataByName(
192-
$matchedParams[1][$paramKey],
193-
EntityDataObject::CEST_UNIQUE_VALUE
194-
);
195-
$urlOut = str_replace($paramValue, $param, $urlIn);
200+
foreach ($entityObjects as $entityObject) {
201+
$param = $entityObject->getDataByName(
202+
$matchedParams[1][$paramKey],
203+
EntityDataObject::CEST_UNIQUE_VALUE
204+
);
205+
if (null !== $param) {
206+
$urlOut = str_replace($paramValue, $param, $urlIn);
207+
continue;
208+
}
209+
}
196210
}
197211
}
198212
return $urlOut;

src/Magento/FunctionalTestingFramework/DataGenerator/Persist/DataPersistenceHandler.php

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,28 @@ public function createEntity($storeCode = null)
6969
}
7070
$curlHandler = new CurlHandler('create', $this->entityObject, $this->storeCode);
7171
$result = $curlHandler->executeRequest($this->dependentObjects);
72-
$this->setCreatedEntity(
72+
$this->setCreatedObject(
73+
$result,
74+
$curlHandler->getRequestDataArray(),
75+
$curlHandler->isContentTypeJson()
76+
);
77+
}
78+
79+
/**
80+
* Function which executes a put request based on specific operation metadata.
81+
*
82+
* @param string $storeCode
83+
* @return void
84+
*/
85+
86+
public function updateEntity($storeCode = null)
87+
{
88+
if (!empty($storeCode)) {
89+
$this->storeCode = $storeCode;
90+
}
91+
$curlHandler = new CurlHandler('update', $this->entityObject, $this->storeCode);
92+
$result = $curlHandler->executeRequest($this->dependentObjects);
93+
$this->setCreatedObject(
7394
$result,
7495
$curlHandler->getRequestDataArray(),
7596
$curlHandler->isContentTypeJson()
@@ -92,7 +113,8 @@ public function deleteEntity($storeCode = null)
92113
}
93114

94115
/**
95-
* Returns the createdDataObject, instantiated when the entity is created via API.
116+
* Returns the created data object, instantiated when the entity is created via API.
117+
*
96118
* @return EntityDataObject
97119
*/
98120
public function getCreatedObject()
@@ -110,21 +132,15 @@ public function getCreatedDataByName($dataName)
110132
return $this->createdObject->getDataByName($dataName, EntityDataObject::NO_UNIQUE_PROCESS);
111133
}
112134

113-
// TODO add update function
114-
/* public function updateEntity()
115-
{
116-
117-
}*/
118-
119135
/**
120-
* Save created entity.
136+
* Save the created data object.
121137
*
122138
* @param string|array $response
123139
* @param array $requestDataArray
124140
* @param bool $isJson
125141
* @return void
126142
*/
127-
private function setCreatedEntity($response, $requestDataArray, $isJson)
143+
private function setCreatedObject($response, $requestDataArray, $isJson)
128144
{
129145
if ($isJson) {
130146
$persistedData = array_merge($requestDataArray, json_decode($response, true));

src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ class OperationDataArrayResolver
4545
*/
4646
public function __construct($dependentEntities = null)
4747
{
48-
//empty constructor
4948
if ($dependentEntities !== null) {
5049
foreach ($dependentEntities as $entity) {
5150
$this->dependentEntities[$entity->getName()] = $entity;

src/Magento/FunctionalTestingFramework/Test/etc/testSchema.xsd

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
<xs:element type="closeTabType" name="closeTab" minOccurs="0" maxOccurs="unbounded"/>
9393
<xs:element type="conditionalClickType" name="conditionalClick" minOccurs="0" maxOccurs="unbounded"/>
9494
<xs:element type="createDataType" name="createData" minOccurs="0" maxOccurs="unbounded"/>
95+
<xs:element type="updateDataType" name="updateData" minOccurs="0" maxOccurs="unbounded"/>
9596
<xs:element type="deleteDataType" name="deleteData" minOccurs="0" maxOccurs="unbounded"/>
9697
<xs:element type="dontSeeType" name="dontSee" minOccurs="0" maxOccurs="unbounded"/>
9798
<xs:element type="dontSeeCheckboxIsCheckedType" name="dontSeeCheckboxIsChecked" minOccurs="0" maxOccurs="unbounded"/>
@@ -392,6 +393,18 @@
392393
</xs:extension>
393394
</xs:simpleContent>
394395
</xs:complexType>
396+
<xs:complexType name="updateDataType">
397+
<xs:choice minOccurs="0" maxOccurs="unbounded">
398+
<xs:element type="requiredEntityType" name="required-entity" minOccurs="0" maxOccurs="unbounded"/>
399+
</xs:choice>
400+
<xs:attribute type="xs:string" name="entity" use="required"/>
401+
<xs:attribute type="xs:string" name="mergeKey" use="required"/>
402+
<xs:attribute type="xs:string" name="createDataKey" use="required"/>
403+
<xs:attribute type="xs:boolean" name="remove" default="false"/>
404+
<xs:attribute type="xs:string" name="before"/>
405+
<xs:attribute type="xs:string" name="after"/>
406+
<xs:attribute type="xs:string" name="storeCode"/>
407+
</xs:complexType>
395408
<xs:complexType name="deleteDataType">
396409
<xs:simpleContent>
397410
<xs:extension base="xs:string">

0 commit comments

Comments
 (0)