From bdb32d739ad7a5a2f8a204cb511591966a020ca0 Mon Sep 17 00:00:00 2001 From: sdzhepa <sdzhepa@magento.com> Date: Tue, 8 Nov 2016 17:55:19 +0200 Subject: [PATCH] MAGETWO-59308: Design theme dropdown does not display all themes in Widgets - fix-rewrite test after CR --- .../Block/Adminhtml/Widget/WidgetGrid.php | 27 ++++++++ .../AssertThemeFilterValuesOnWidgetGrid.php | 48 ++++++++++++++ .../Test/Constraint/AssertWidgetInGrid.php | 11 ++-- ...tWithDifferentThemesArePresentedInGrid.php | 63 ------------------- .../Test/Constraint/AssertWidgetsInGrid.php | 48 ++++++++++++++ .../Widget/Test/Handler/Widget/Curl.php | 1 + .../Magento/Widget/Test/Repository/Widget.xml | 3 +- .../AbstractCreateWidgetEntityTest.php | 12 +--- .../Test/TestCase/CreateWidgetEntityTest.php | 16 ++--- .../Test/TestCase/CreateWidgetEntityTest.xml | 11 ---- .../Test/TestCase/CreateWidgetsEntityTest.php | 57 +++++++++++++++++ .../Test/TestCase/CreateWidgetsEntityTest.xml | 18 ++++++ .../tests/app/Magento/Widget/Test/etc/di.xml | 7 ++- 13 files changed, 220 insertions(+), 102 deletions(-) create mode 100644 dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertThemeFilterValuesOnWidgetGrid.php delete mode 100644 dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetWithDifferentThemesArePresentedInGrid.php create mode 100644 dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetsInGrid.php create mode 100644 dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetsEntityTest.php create mode 100644 dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetsEntityTest.xml diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/Block/Adminhtml/Widget/WidgetGrid.php b/dev/tests/functional/tests/app/Magento/Widget/Test/Block/Adminhtml/Widget/WidgetGrid.php index 3906631741b..2a03872f4be 100644 --- a/dev/tests/functional/tests/app/Magento/Widget/Test/Block/Adminhtml/Widget/WidgetGrid.php +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/Block/Adminhtml/Widget/WidgetGrid.php @@ -7,12 +7,20 @@ namespace Magento\Widget\Test\Block\Adminhtml\Widget; use Magento\Backend\Test\Block\Widget\Grid as AbstractGrid; +use Magento\Mtf\Client\Locator; /** * Widget grid on the Widget Instance Index page. */ class WidgetGrid extends AbstractGrid { + /** + * Selector for not empty options at select element. + * + * @var string + */ + private $notEmptyOptionsSelector = 'option:not([value=""])'; + /** * Locator value for link in action column. * @@ -41,4 +49,23 @@ class WidgetGrid extends AbstractGrid 'input' => 'select', ], ]; + + /** + * Returns values of theme_id filter. + * + * @return array + */ + public function getThemeIdValues() + { + $values = []; + $themeFilter = $this->filters['theme_id']; + $strategy = empty($themeFilter['strategy']) ? Locator::SELECTOR_CSS : $themeFilter['strategy']; + $element = $this->_rootElement->find($themeFilter['selector'], $strategy, $themeFilter['input']); + $options = $element->getElements($this->notEmptyOptionsSelector); + foreach ($options as $option) { + $values[] = $option->getText(); + } + + return $values; + } } diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertThemeFilterValuesOnWidgetGrid.php b/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertThemeFilterValuesOnWidgetGrid.php new file mode 100644 index 00000000000..31ebfd87c25 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertThemeFilterValuesOnWidgetGrid.php @@ -0,0 +1,48 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Widget\Test\Constraint; + +use Magento\Mtf\Constraint\AbstractConstraint; +use Magento\Widget\Test\Fixture\Widget; +use Magento\Widget\Test\Page\Adminhtml\WidgetInstanceIndex; + +/** + * Assert theme filter contains all possible values from created widgets. + */ +class AssertThemeFilterValuesOnWidgetGrid extends AbstractConstraint +{ + /** + * Assert theme filter contains all possible values from created widgets. + * + * @param Widget[] $widgets + * @param WidgetInstanceIndex $widgetInstanceIndex + * @return void + */ + public function processAssert(array $widgets, WidgetInstanceIndex $widgetInstanceIndex) + { + $expectedValues = []; + foreach ($widgets as $widget) { + $expectedValues[] = $widget->getThemeId(); + } + $widgetInstanceIndex->open(); + $actualValues = $widgetInstanceIndex->getWidgetGrid()->getThemeIdValues(); + \PHPUnit_Framework_Assert::assertEmpty( + array_diff($expectedValues, $actualValues), + 'Widget grid theme filter doesn\'t contain all possible values from created widgets.' + ); + } + + /** + * Returns a string representation of the object. + * + * @return string + */ + public function toString() + { + return 'Widget grid theme filter contains all possible values from created widgets.'; + } +} diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetInGrid.php b/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetInGrid.php index 5382d544a94..2cc675f79fb 100644 --- a/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetInGrid.php +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetInGrid.php @@ -11,7 +11,7 @@ use Magento\Widget\Test\Page\Adminhtml\WidgetInstanceIndex; use Magento\Mtf\Constraint\AbstractConstraint; /** - * Class AssertWidgetInGrid + * Assert widget is present in widget grid. */ class AssertWidgetInGrid extends AbstractConstraint { @@ -20,7 +20,10 @@ class AssertWidgetInGrid extends AbstractConstraint /* end tags */ /** - * Assert widget availability in widget grid + * Assert widget availability in widget grid. + * Verifying such fields as: + * - title + * - theme_id * * @param Widget $widget * @param WidgetInstanceIndex $widgetInstanceIndex @@ -28,7 +31,7 @@ class AssertWidgetInGrid extends AbstractConstraint */ public function processAssert(Widget $widget, WidgetInstanceIndex $widgetInstanceIndex) { - $filter = ['title' => $widget->getTitle()]; + $filter = ['title' => $widget->getTitle(), 'theme_id' => $widget->getThemeId()]; $widgetInstanceIndex->open(); \PHPUnit_Framework_Assert::assertTrue( $widgetInstanceIndex->getWidgetGrid()->isRowVisible($filter), @@ -37,7 +40,7 @@ class AssertWidgetInGrid extends AbstractConstraint } /** - * Returns a string representation of the object + * Returns a string representation of the object. * * @return string */ diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetWithDifferentThemesArePresentedInGrid.php b/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetWithDifferentThemesArePresentedInGrid.php deleted file mode 100644 index 445357bd5f9..00000000000 --- a/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetWithDifferentThemesArePresentedInGrid.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -/** - * Copyright © 2016 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -namespace Magento\Widget\Test\Constraint; - -use Magento\Widget\Test\Fixture\Widget; -use Magento\Widget\Test\Page\Adminhtml\WidgetInstanceIndex; -use Magento\Mtf\Constraint\AbstractConstraint; - -/** - * Class AssertWidgetInGrid - */ -class AssertWidgetWithDifferentThemesArePresentedInGrid extends AbstractConstraint -{ - /** - * Assert widgets with different themes availability in widget grid - * - * @param Widget $widget - * @param WidgetInstanceIndex $widgetInstanceIndex - * @param array $additionalWidgets - * @return void - */ - public function processAssert( - Widget $widget, - WidgetInstanceIndex $widgetInstanceIndex, - array $additionalWidgets = [] - ) { - $additionalWidgets[] = $widget; - $expectedData = []; - $actualData = []; - $widgetInstanceIndex->open(); - $widgetGrid = $widgetInstanceIndex->getWidgetGrid(); - - foreach ($additionalWidgets as $widget) { - $filter = [ - 'title' => $widget->getTitle(), - 'theme_id' => $widget->getThemeId(), - ]; - $widgetGrid->search($filter); - $expectedData[] = $filter; - $actualData[] = $widgetGrid->getRowsData(array_keys($filter))[0]; - } - - \PHPUnit_Framework_Assert::assertEquals( - $expectedData, - $actualData, - 'Not all expected widgets are present in grid.' - ); - } - - /** - * Returns a string representation of the object - * - * @return string - */ - public function toString() - { - return 'Widgets with different themes are present in widget grid.'; - } -} diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetsInGrid.php b/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetsInGrid.php new file mode 100644 index 00000000000..bc61b3ef66f --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetsInGrid.php @@ -0,0 +1,48 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Widget\Test\Constraint; + +use Magento\Mtf\Constraint\AbstractConstraint; +use Magento\Widget\Test\Fixture\Widget; +use Magento\Widget\Test\Page\Adminhtml\WidgetInstanceIndex; + +/** + * Assert widgets are present in widget grid. + */ +class AssertWidgetsInGrid extends AbstractConstraint +{ + /** + * Assert widgets are present in widget grid. + * Verifying such fields as: + * - title + * - theme_id + * + * @param Widget[] $widgets + * @param WidgetInstanceIndex $widgetInstanceIndex + * @param AssertWidgetInGrid $assertWidgetInGrid + * @return void + */ + public function processAssert( + array $widgets, + WidgetInstanceIndex $widgetInstanceIndex, + AssertWidgetInGrid $assertWidgetInGrid + ) { + foreach ($widgets as $widget) { + $assertWidgetInGrid->processAssert($widget, $widgetInstanceIndex); + } + } + + /** + * Returns a string representation of the object. + * + * @return string + */ + public function toString() + { + return 'Widgets are present in widget grid.'; + } +} diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/Handler/Widget/Curl.php b/dev/tests/functional/tests/app/Magento/Widget/Test/Handler/Widget/Curl.php index 4c9e61cdb87..54520d0786a 100644 --- a/dev/tests/functional/tests/app/Magento/Widget/Test/Handler/Widget/Curl.php +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/Handler/Widget/Curl.php @@ -27,6 +27,7 @@ class Curl extends AbstractCurl protected $mappingData = [ 'code' => [ 'CMS Page Link' => 'cms_page_link', + 'Recently Viewed Products' => 'recently_viewed', ], 'block' => [ 'Main Content Area' => 'content', diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/Repository/Widget.xml b/dev/tests/functional/tests/app/Magento/Widget/Test/Repository/Widget.xml index 81c6ea28f56..4a8972bfd8d 100644 --- a/dev/tests/functional/tests/app/Magento/Widget/Test/Repository/Widget.xml +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/Repository/Widget.xml @@ -25,7 +25,8 @@ <item name="dataset" xsi:type="string">cmsPageLink</item> </field> </dataset> - <dataset name="simple_widget"> + + <dataset name="recently_viewed_products_on_blank_theme"> <field name="code" xsi:type="string">Recently Viewed Products</field> <field name="title" xsi:type="string">Title_%isolation%</field> <field name="theme_id" xsi:type="string">Magento Blank</field> diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/AbstractCreateWidgetEntityTest.php b/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/AbstractCreateWidgetEntityTest.php index c5f920a6c89..235361aee8b 100644 --- a/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/AbstractCreateWidgetEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/AbstractCreateWidgetEntityTest.php @@ -6,7 +6,6 @@ namespace Magento\Widget\Test\TestCase; -use Magento\Mtf\Fixture\FixtureFactory; use Magento\Widget\Test\Page\Adminhtml\WidgetInstanceEdit; use Magento\Widget\Test\Page\Adminhtml\WidgetInstanceIndex; use Magento\Widget\Test\Page\Adminhtml\WidgetInstanceNew; @@ -54,11 +53,6 @@ abstract class AbstractCreateWidgetEntityTest extends Injectable */ protected $cache; - /** - * @var FixtureFactory - */ - protected $fixtureFactory; - /** * Injection data. * @@ -67,22 +61,20 @@ abstract class AbstractCreateWidgetEntityTest extends Injectable * @param WidgetInstanceEdit $widgetInstanceEdit * @param CmsIndex $cmsIndex * @param Cache $cache - * @param FixtureFactory $fixtureFactory + * @return void */ public function __inject( WidgetInstanceIndex $widgetInstanceIndex, WidgetInstanceNew $widgetInstanceNew, WidgetInstanceEdit $widgetInstanceEdit, CmsIndex $cmsIndex, - Cache $cache, - FixtureFactory $fixtureFactory + Cache $cache ) { $this->widgetInstanceIndex = $widgetInstanceIndex; $this->widgetInstanceNew = $widgetInstanceNew; $this->widgetInstanceEdit = $widgetInstanceEdit; $this->cmsIndex = $cmsIndex; $this->cache = $cache; - $this->fixtureFactory = $fixtureFactory; } /** diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetEntityTest.php b/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetEntityTest.php index a61bc7f060a..cc02293ff8f 100644 --- a/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetEntityTest.php @@ -25,7 +25,8 @@ class CreateWidgetEntityTest extends AbstractCreateWidgetEntityTest { /* tags */ const MVP = 'yes'; - const SEVERITY = 'S3'; + const TEST_TYPE = 'extended_acceptance_test'; + const SEVERITY = 'S1'; /* end tags */ /** @@ -39,11 +40,10 @@ class CreateWidgetEntityTest extends AbstractCreateWidgetEntityTest * Create for New Widget. * * @param Widget $widget - * @param array $additionalWidgets * @param array $caches [optional] - * @return array + * @return void */ - public function test(Widget $widget, array $additionalWidgets = [], array $caches = []) + public function test(Widget $widget, array $caches = []) { // Preconditions $this->caches = $caches; @@ -54,14 +54,6 @@ class CreateWidgetEntityTest extends AbstractCreateWidgetEntityTest $this->widgetInstanceIndex->getPageActionsBlock()->addNew(); $this->widgetInstanceNew->getWidgetForm()->fill($widget); $this->widgetInstanceEdit->getPageActionsBlock()->save(); - - foreach ($additionalWidgets as $key => $additionalWidget) { - $additionalWidget = $this->fixtureFactory->createByCode('widget', ['dataset' => $additionalWidget]); - $additionalWidget->persist(); - $additionalWidgets[$key] = $additionalWidget; - } - - return ['additionalWidgets' => $additionalWidgets]; } /** diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetEntityTest.xml b/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetEntityTest.xml index 15610625f31..225759df91f 100644 --- a/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetEntityTest.xml @@ -118,16 +118,5 @@ <constraint name="Magento\Widget\Test\Constraint\AssertWidgetSuccessSaveMessage" /> <constraint name="Magento\Widget\Test\Constraint\AssertWidgetCatalogNewProductsList" /> </variation> - <variation name="CreateWidgetEntityTestWithDifferentThemes"> - <data name="tag" xsi:type="string">severity:S3</data> - <data name="widget/data/code" xsi:type="string">Recently Viewed Products</data> - <data name="widget/data/theme_id" xsi:type="string">Magento Blank</data> - <data name="widget/data/title" xsi:type="string">Title_%isolation%</data> - <data name="widget/data/store_ids/dataset" xsi:type="string">all_store_views</data> - <data name="widget/data/widget_instance/dataset" xsi:type="string">for_viewed_products</data> - <data name="widget/data/parameters/dataset" xsi:type="string">recentlyViewedProducts</data> - <data name="additionalWidgets/0" xsi:type="string">simple_widget</data> - <constraint name="Magento\Widget\Test\Constraint\AssertWidgetWithDifferentThemesArePresentedInGrid" /> - </variation> </testCase> </config> diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetsEntityTest.php b/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetsEntityTest.php new file mode 100644 index 00000000000..5269c315f78 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetsEntityTest.php @@ -0,0 +1,57 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Widget\Test\TestCase; + +use Magento\Mtf\Fixture\FixtureFactory; +use \Magento\Mtf\TestCase\Injectable; +use Magento\Widget\Test\Fixture\Widget; + +/** + * Steps: + * 1. Create widgets. + * 2. Perform all assertions. + * + * @group Widget + * @ZephyrId MAGETWO-60672 + */ +class CreateWidgetsEntityTest extends Injectable +{ + /* tags */ + const SEVERITY = 'S3'; + /* end tags */ + + /** + * Create multiple widgets. + * + * @param array $widgets + * @param FixtureFactory $fixtureFactory + * @return array + */ + public function test(array $widgets, FixtureFactory $fixtureFactory) + { + /** @var Widget[] $widgetInstances */ + $widgetInstances = []; + // Preconditions + foreach ($widgets as $widget) { + $widget = $fixtureFactory->createByCode('widget', ['dataset' => $widget]); + $widget->persist(); + $widgetInstances[] = $widget; + } + + return ['widgets' => $widgetInstances]; + } + + /** + * Delete all widgets. + * + * @return void + */ + public function tearDown() + { + $this->objectManager->create(\Magento\Widget\Test\TestStep\DeleteAllWidgetsStep::class)->run(); + } +} diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetsEntityTest.xml b/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetsEntityTest.xml new file mode 100644 index 00000000000..484ea26cf52 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/TestCase/CreateWidgetsEntityTest.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + --> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd"> + <testCase name="Magento\Widget\Test\TestCase\CreateWidgetsEntityTest" summary="Create Widget" ticketId="MAGETWO-60672"> + <variation name="CreateWidgetEntityTestWithDifferentThemes" summary="Widgets with different themes is presented in grid/filter"> + <data name="tag" xsi:type="string">severity:S3</data> + <data name="widgets/0" xsi:type="string">default</data> + <data name="widgets/1" xsi:type="string">recently_viewed_products_on_blank_theme</data> + <constraint name="Magento\Widget\Test\Constraint\AssertThemeFilterValuesOnWidgetGrid" /> + <constraint name="Magento\Widget\Test\Constraint\AssertWidgetsInGrid" /> + </variation> + </testCase> +</config> diff --git a/dev/tests/functional/tests/app/Magento/Widget/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Widget/Test/etc/di.xml index 6fba66a3db3..c1595838b4f 100644 --- a/dev/tests/functional/tests/app/Magento/Widget/Test/etc/di.xml +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/etc/di.xml @@ -66,7 +66,12 @@ <argument name="severity" xsi:type="string">S1</argument> </arguments> </type> - <type name="Magento\Widget\Test\Constraint\AssertWidgetWithDifferentThemesArePresentedInGrid"> + <type name="Magento\Widget\Test\Constraint\AssertWidgetsInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S3</argument> + </arguments> + </type> + <type name="Magento\Widget\Test\Constraint\AssertThemeFilterValuesOnWidgetGrid"> <arguments> <argument name="severity" xsi:type="string">S3</argument> </arguments> -- GitLab