Skip to content

Commit 0654e74

Browse files
committed
Merge remote-tracking branch 'origin/MAGETWO-90388' into 2.3-develop-pr18
2 parents ad60d4d + 9e4a521 commit 0654e74

File tree

7 files changed

+249
-21
lines changed

7 files changed

+249
-21
lines changed

dev/tests/functional/tests/app/Magento/Setup/Test/Block/Readiness.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,14 @@ public function getDependencyCheck()
192192
return $this->_rootElement->find($this->dependencyCheck, Locator::SELECTOR_CSS)->getText();
193193
}
194194

195+
/**
196+
* @return bool
197+
*/
198+
public function isPhpVersionCheckVisible() : bool
199+
{
200+
return $this->_rootElement->find($this->phpVersionCheck)->isVisible();
201+
}
202+
195203
/**
196204
* Get PHP Version check result.
197205
*

dev/tests/functional/tests/app/Magento/Setup/Test/Block/SelectVersion.php

Lines changed: 74 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Magento\Mtf\Client\Element\SimpleElement;
1111
use Magento\Mtf\Client\Locator;
1212
use Magento\Mtf\Fixture\FixtureInterface;
13+
use Magento\Setup\Test\Block\SelectVersion\OtherComponentsGrid;
1314

1415
/**
1516
* Select version block.
@@ -37,6 +38,29 @@ class SelectVersion extends Form
3738
*/
3839
private $showAllVersions = '#showUnstable';
3940

41+
/**
42+
* CSS selector for Other Components Grid Block.
43+
*
44+
* @var string
45+
*/
46+
private $otherComponentsGrid = '.admin__data-grid-outer-wrap';
47+
48+
/**
49+
* @var string
50+
*/
51+
private $empty = '[ng-show="componentsProcessed && total == 0"]';
52+
53+
/**
54+
* @var string
55+
*/
56+
private $waitEmpty =
57+
'//div[contains(@ng-show, "componentsProcessed && total") and not(contains(@class,"ng-hide"))]';
58+
59+
/**
60+
* @var OtherComponentsGrid
61+
*/
62+
private $otherComponentGrid;
63+
4064
/**
4165
* Click on 'Next' button.
4266
*
@@ -76,13 +100,59 @@ private function chooseShowAllVersions()
76100
}
77101

78102
/**
79-
* Choose 'yes' for upgrade option called 'Other components'
103+
* Choose 'yes' for upgrade option called 'Other components'.
80104
*
105+
* @param array $packages
81106
* @return void
82107
*/
83-
public function chooseUpgradeOtherComponents()
108+
public function chooseUpgradeOtherComponents(array $packages) :void
84109
{
85-
$this->_rootElement->find("[for=yesUpdateComponents]", Locator::SELECTOR_CSS)->click();
86-
$this->waitForElementVisible("[ng-show='componentsProcessed']");
110+
$this->_rootElement->find("[for=yesUpdateComponents]")->click();
111+
$this->waitForElementNotVisible("[ng-show=\"!componentsProcessed\"");
112+
113+
if (!$this->isComponentsEmpty()) {
114+
$otherComponentGrid = $this->getOtherComponentsGrid();
115+
$otherComponentGrid->setItemsPerPage(200);
116+
$otherComponentGrid->setVersions($packages);
117+
}
118+
}
119+
120+
/**
121+
* Check that grid is empty.
122+
*
123+
* @return bool
124+
*/
125+
public function isComponentsEmpty()
126+
{
127+
$this->waitForElementVisible($this->waitEmpty, Locator::SELECTOR_XPATH);
128+
129+
return $this->_rootElement->find($this->empty)->isVisible();
130+
}
131+
132+
/**
133+
* Returns selected packages.
134+
*
135+
* @return array
136+
*/
137+
public function getSelectedPackages()
138+
{
139+
return $this->getOtherComponentsGrid()->getSelectedPackages();
140+
}
141+
142+
/**
143+
* Get grid block for other components.
144+
*
145+
* @return OtherComponentsGrid
146+
*/
147+
private function getOtherComponentsGrid() : OtherComponentsGrid
148+
{
149+
if (!isset($this->otherComponentGrid)) {
150+
$this->otherComponentGrid = $this->blockFactory->create(
151+
OtherComponentsGrid::class,
152+
['element' => $this->_rootElement->find($this->otherComponentsGrid)]
153+
);
154+
}
155+
156+
return $this->otherComponentGrid;
87157
}
88158
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Setup\Test\Block\SelectVersion;
9+
10+
use Magento\Mtf\Block\Block;
11+
use Magento\Mtf\Client\ElementInterface;
12+
use Magento\Mtf\Client\Locator;
13+
use Magento\Setup\Test\Block\SelectVersion\OtherComponentsGrid\Item;
14+
15+
/**
16+
* Perform OtherComponentsGrid block.
17+
*/
18+
class OtherComponentsGrid extends Block
19+
{
20+
/**
21+
* @var string
22+
*/
23+
private $itemComponent = '//tr[contains(@ng-repeat,"component") and ./td[contains(.,"%s")]]';
24+
25+
/**
26+
* @var string
27+
*/
28+
private $perPage = '#perPage';
29+
30+
/**
31+
* @var array
32+
*/
33+
private $selectedPackages = [];
34+
35+
/**
36+
* Set version of the packages.
37+
*
38+
* @param array $packages
39+
* @return void
40+
*/
41+
public function setVersions(array $packages) : void
42+
{
43+
foreach ($packages as $package) {
44+
$selector = sprintf($this->itemComponent, $package['name']);
45+
$elements = $this->_rootElement->getElements($selector, Locator::SELECTOR_XPATH);
46+
foreach ($elements as $element) {
47+
$row = $this->getComponentRow($element);
48+
$row->setVersion($package['version']);
49+
$this->selectedPackages[$row->getPackageName()] = $package['version'];
50+
}
51+
}
52+
}
53+
54+
/**
55+
* Returns selected packages.
56+
*
57+
* @return array
58+
*/
59+
public function getSelectedPackages() : array
60+
{
61+
return $this->selectedPackages;
62+
}
63+
64+
/**
65+
* Set pager size.
66+
*
67+
* @param int $count
68+
* @return void
69+
*/
70+
public function setItemsPerPage(int $count) : void
71+
{
72+
$this->_rootElement->find($this->perPage, Locator::SELECTOR_CSS, 'select')->setValue($count);
73+
}
74+
75+
/**
76+
* Get component block.
77+
*
78+
* @param ElementInterface $element
79+
* @return Item
80+
*/
81+
private function getComponentRow(ElementInterface $element) : Item
82+
{
83+
return $this->blockFactory->create(
84+
Item::class,
85+
['element' => $element]
86+
);
87+
}
88+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Setup\Test\Block\SelectVersion\OtherComponentsGrid;
9+
10+
use Magento\Mtf\Block\Block;
11+
use Magento\Mtf\Client\Locator;
12+
13+
/**
14+
* Block for each component.
15+
*/
16+
class Item extends Block
17+
{
18+
/**
19+
* CSS selector for version element.
20+
*
21+
* @var string
22+
*/
23+
private $version = '[ng-change*="setComponentVersion"]';
24+
25+
/**
26+
* CSS selector for package name element.
27+
*
28+
* @var string
29+
*/
30+
private $packageName = 'td:nth-child(2)';
31+
32+
/**
33+
* Set version for particular component.
34+
*
35+
* @param string $version
36+
*/
37+
public function setVersion(string $version)
38+
{
39+
$this->_rootElement->find($this->version, Locator::SELECTOR_CSS, 'select')->setValue($version);
40+
}
41+
42+
/**
43+
* Returns package name of element.
44+
*
45+
* @return array|string
46+
*/
47+
public function getPackageName()
48+
{
49+
return $this->_rootElement->find($this->packageName)->getText();
50+
}
51+
}

dev/tests/functional/tests/app/Magento/Setup/Test/Constraint/AssertVersionAndEditionCheck.php

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,24 @@ class AssertVersionAndEditionCheck extends AbstractConstraint
1818
* Assert that package and version is correct
1919
*
2020
* @param SetupWizard $setupWizard
21-
* @param string $package
22-
* @param string $version
21+
* @param array $upgrade
2322
* @return void
2423
*/
25-
public function processAssert(SetupWizard $setupWizard, $package, $version)
24+
public function processAssert(SetupWizard $setupWizard, array $upgrade) :void
2625
{
27-
$message = "We're ready to upgrade $package to $version";
26+
$message = "We're ready to upgrade {$upgrade['package']} to {$upgrade['version']}.";
27+
if ($upgrade['otherComponents'] === 'Yes' && isset($upgrade['selectedPackages'])) {
28+
foreach ($upgrade['selectedPackages'] as $name => $version) {
29+
$message .= "\nWe're ready to upgrade {$name} to {$version}.";
30+
}
31+
}
32+
$actualMessage = $setupWizard->getSystemUpgrade()->getUpgradeMessage();
2833
\PHPUnit\Framework\Assert::assertContains(
2934
$message,
30-
$setupWizard->getSystemUpgrade()->getUpgradeMessage(),
31-
'Updater application check is incorrect.'
35+
$actualMessage,
36+
"Updater application check is incorrect: \n"
37+
. "Expected: '$message' \n"
38+
. "Actual: '$actualMessage'"
3239
);
3340
}
3441

dev/tests/functional/tests/app/Magento/Setup/Test/TestCase/UpgradeSystemTest.php

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,18 @@ class UpgradeSystemTest extends Injectable
3131
protected $adminDashboard;
3232

3333
/**
34-
* @var \Magento\Mtf\Util\Iterator\ApplicationState
35-
*/
36-
private $applicationStateIterator;
37-
38-
/**
34+
* Injection data.
35+
*
3936
* @param Dashboard $adminDashboard
4037
* @param SetupWizard $setupWizard
41-
* @param \Magento\Mtf\Util\Iterator\ApplicationState $applicationStateIterator
38+
* @return void
4239
*/
4340
public function __inject(
4441
Dashboard $adminDashboard,
45-
SetupWizard $setupWizard,
46-
\Magento\Mtf\Util\Iterator\ApplicationState $applicationStateIterator
42+
SetupWizard $setupWizard
4743
) {
4844
$this->adminDashboard = $adminDashboard;
4945
$this->setupWizard = $setupWizard;
50-
$this->applicationStateIterator = $applicationStateIterator;
5146
}
5247

5348
/**
@@ -114,7 +109,7 @@ public function test(
114109
$this->setupWizard->getSetupHome()->clickSystemUpgrade();
115110
$this->setupWizard->getSelectVersion()->fill($upgradeFixture);
116111
if ($upgrade['otherComponents'] === 'Yes') {
117-
$this->setupWizard->getSelectVersion()->chooseUpgradeOtherComponents();
112+
$this->setupWizard->getSelectVersion()->chooseUpgradeOtherComponents($upgrade['otherComponentsList']);
118113
}
119114
$this->setupWizard->getSelectVersion()->clickNext();
120115

@@ -128,7 +123,9 @@ public function test(
128123
$this->setupWizard->getCreateBackup()->clickNext();
129124

130125
// Check info and press 'Upgrade' button
131-
$assertVersionAndEdition->processAssert($this->setupWizard, $upgrade['package'], $version);
126+
$upgrade['version'] = $version;
127+
$upgrade['selectedPackages'] = $this->setupWizard->getSelectVersion()->getSelectedPackages();
128+
$assertVersionAndEdition->processAssert($this->setupWizard, $upgrade);
132129
$this->setupWizard->getSystemUpgrade()->clickSystemUpgrade();
133130

134131
$assertSuccessMessage->processAssert($this->setupWizard, $upgrade['package']);

dev/tests/functional/tests/app/Magento/Setup/Test/TestCase/UpgradeSystemTest.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@
1818
<data name="upgrade/optionsMedia" xsi:type="string">No</data>
1919
<data name="upgrade/optionsDb" xsi:type="string">No</data>
2020
<data name="upgrade/otherComponents" xsi:type="string">{otherComponents}</data>
21+
<!-- If otherComponents value is Yes specify otherComponentsList items-->
22+
<data name="upgrade/otherComponentsList" xsi:type="array">
23+
<item name="0" xsi:type="array">
24+
<item name="name" xsi:type="string">{package_0_name}</item>
25+
<item name="version" xsi:type="string">{package_0_version}</item>
26+
</item>
27+
</data>
2128
</variation>
2229
</testCase>
2330
</config>

0 commit comments

Comments
 (0)