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 3906631741beb282e4071996a1505b4544db021c..2a03872f4be6bce82a7764ec0358f83c654a5b0a 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 0000000000000000000000000000000000000000..31ebfd87c252b6e4142263636eb00329ab8d72b7 --- /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 5382d544a94b9f590a3475c915025c205e1453cd..2cc675f79fbd38a0f7654b40acc5d215be2a5191 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 445357bd5f91409ed2104766f76bcfc55a9fcd12..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..bc61b3ef66f51585b0e21fc7dc1a64b7f04e57f7 --- /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 4c9e61cdb873db0b32d3b77d9c16be3601537364..54520d0786a52732123a7fc0634d363f74d4b43d 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 81c6ea28f56c9cee5ce32957877949a79f5e92ab..4a8972bfd8dbb3f5a80b7f6fc8a7e20c2f80e0fc 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 c5f920a6c893bdb96a3d90f7143b64fef57eea83..235361aee8b7eea30618663ecf1067a6dbc303a0 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 a61bc7f060a016cf6c1bf45146e87ded22e86400..cc02293ff8fdd98febf581beb87e8a00d7b128fb 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 15610625f3125f9c999c5d2e05110a10af54fb37..225759df91f179dbd911fca662c05476c4830a69 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 0000000000000000000000000000000000000000..5269c315f78fc23c55e6848ec2482f850cdf2c0e --- /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 0000000000000000000000000000000000000000..484ea26cf5253a6524b77e299ccdc2532924d3e9 --- /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 6fba66a3db3384a741c6932255316fb202c6a210..c1595838b4f63d51d1732857c7ccdd6d6ff8bec3 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>