From 982731a1e6db3644531a16994ed02a706b17d8ca Mon Sep 17 00:00:00 2001 From: Serhii Dzhepa <sdzhepa@magento.com> Date: Tue, 8 Nov 2016 11:20:05 +0200 Subject: [PATCH] MAGETWO-59308: Design theme dropdown does not display all themes in Widgets --- .../Block/Adminhtml/Widget/WidgetGrid.php | 4 ++ ...tWithDifferentThemesArePresentedInGrid.php | 63 +++++++++++++++++++ .../Magento/Widget/Test/Repository/Widget.xml | 14 +++++ .../AbstractCreateWidgetEntityTest.php | 12 +++- .../Test/TestCase/CreateWidgetEntityTest.php | 18 ++++-- .../Test/TestCase/CreateWidgetEntityTest.xml | 11 ++++ .../tests/app/Magento/Widget/Test/etc/di.xml | 5 ++ 7 files changed, 120 insertions(+), 7 deletions(-) create mode 100644 dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetWithDifferentThemesArePresentedInGrid.php 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 50a5657a478..3906631741b 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 @@ -36,5 +36,9 @@ class WidgetGrid extends AbstractGrid 'title' => [ 'selector' => 'input[name="title"]', ], + 'theme_id' => [ + 'selector' => 'select[name="theme_id"]', + 'input' => 'select', + ], ]; } 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 new file mode 100644 index 00000000000..445357bd5f9 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetWithDifferentThemesArePresentedInGrid.php @@ -0,0 +1,63 @@ +<?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/Repository/Widget.xml b/dev/tests/functional/tests/app/Magento/Widget/Test/Repository/Widget.xml index dc39ed7fa12..81c6ea28f56 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,5 +25,19 @@ <item name="dataset" xsi:type="string">cmsPageLink</item> </field> </dataset> + <dataset name="simple_widget"> + <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> + <field name="store_ids" xsi:type="array"> + <item name="dataset" xsi:type="string">all_store_views</item> + </field> + <field name="widget_instance" xsi:type="array"> + <item name="dataset" xsi:type="string">for_viewed_products</item> + </field> + <field name="parameters" xsi:type="array"> + <item name="dataset" xsi:type="string">recentlyViewedProducts</item> + </field> + </dataset> </repository> </config> 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 235361aee8b..c5f920a6c89 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,6 +6,7 @@ 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; @@ -53,6 +54,11 @@ abstract class AbstractCreateWidgetEntityTest extends Injectable */ protected $cache; + /** + * @var FixtureFactory + */ + protected $fixtureFactory; + /** * Injection data. * @@ -61,20 +67,22 @@ abstract class AbstractCreateWidgetEntityTest extends Injectable * @param WidgetInstanceEdit $widgetInstanceEdit * @param CmsIndex $cmsIndex * @param Cache $cache - * @return void + * @param FixtureFactory $fixtureFactory */ public function __inject( WidgetInstanceIndex $widgetInstanceIndex, WidgetInstanceNew $widgetInstanceNew, WidgetInstanceEdit $widgetInstanceEdit, CmsIndex $cmsIndex, - Cache $cache + Cache $cache, + FixtureFactory $fixtureFactory ) { $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 6358ac8821f..a61bc7f060a 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,8 +25,7 @@ class CreateWidgetEntityTest extends AbstractCreateWidgetEntityTest { /* tags */ const MVP = 'yes'; - const TEST_TYPE = 'extended_acceptance_test'; - const SEVERITY = 'S1'; + const SEVERITY = 'S3'; /* end tags */ /** @@ -40,20 +39,29 @@ class CreateWidgetEntityTest extends AbstractCreateWidgetEntityTest * Create for New Widget. * * @param Widget $widget + * @param array $additionalWidgets * @param array $caches [optional] - * @return void + * @return array */ - public function test(Widget $widget, array $caches = []) + public function test(Widget $widget, array $additionalWidgets = [], array $caches = []) { // Preconditions $this->caches = $caches; $this->adjustCacheSettings(); - + // Steps $this->widgetInstanceIndex->open(); $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 225759df91f..15610625f31 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,5 +118,16 @@ <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/etc/di.xml b/dev/tests/functional/tests/app/Magento/Widget/Test/etc/di.xml index 122a9659cf2..6fba66a3db3 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,4 +66,9 @@ <argument name="severity" xsi:type="string">S1</argument> </arguments> </type> + <type name="Magento\Widget\Test\Constraint\AssertWidgetWithDifferentThemesArePresentedInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S3</argument> + </arguments> + </type> </config> -- GitLab