Skip to content

Commit f047427

Browse files
committed
MC-37540: Create automated test for "[CMS Grids] Use quick search in Admin data grids"
1 parent c495390 commit f047427

File tree

1 file changed

+147
-0
lines changed

1 file changed

+147
-0
lines changed
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
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\Cms\Ui\Component;
9+
10+
use Magento\Cms\Api\Data\BlockInterface;
11+
use Magento\Cms\Api\Data\PageInterface;
12+
use Magento\Framework\App\RequestInterface;
13+
use Magento\Framework\ObjectManagerInterface;
14+
use Magento\Framework\View\Element\UiComponentFactory;
15+
use Magento\Framework\View\Element\UiComponentInterface;
16+
use Magento\TestFramework\Helper\Bootstrap;
17+
use PHPUnit\Framework\TestCase;
18+
19+
/**
20+
* Checks Cms UI component data provider behaviour
21+
*
22+
* @magentoAppArea adminhtml
23+
*/
24+
class DataProviderTest extends TestCase
25+
{
26+
/** @var ObjectManagerInterface */
27+
private $objectManager;
28+
29+
/** @var UiComponentFactory */
30+
private $componentFactory;
31+
32+
/** @var RequestInterface */
33+
private $request;
34+
35+
/**
36+
* @inheritdoc
37+
*/
38+
protected function setUp(): void
39+
{
40+
parent::setUp();
41+
42+
$this->objectManager = Bootstrap::getObjectManager();
43+
$this->request = $this->objectManager->get(RequestInterface::class);
44+
$this->componentFactory = $this->objectManager->get(UiComponentFactory::class);
45+
}
46+
47+
/**
48+
* @dataProvider pageFilterDataProvider
49+
*
50+
* @magentoDataFixture Magento/Cms/_files/pages.php
51+
*
52+
* @param array $filter
53+
* @param string $expectedPage
54+
* @return void
55+
*/
56+
public function testPageFiltering(array $filter, string $expectedPage): void
57+
{
58+
$this->request->setParams(['filters' => $filter]);
59+
$data = $this->getComponentProvidedData('cms_page_listing');
60+
$this->assertCount(1, $data['items']);
61+
$this->assertEquals(reset($data['items'])[PageInterface::IDENTIFIER], $expectedPage);
62+
}
63+
64+
/**
65+
* @return array
66+
*/
67+
public function pageFilterDataProvider(): array
68+
{
69+
return [
70+
'partial_title_filter' => [
71+
'filter' => ['title' => 'Cms Page 1'],
72+
'expected_item' => 'page100',
73+
],
74+
'multiple_filter' => [
75+
'filter' => [
76+
'title' => 'Cms Page',
77+
'meta_title' => 'Cms Meta title for Blank page',
78+
],
79+
'expected_item' => 'page_design_blank',
80+
],
81+
];
82+
}
83+
84+
/**
85+
* @dataProvider blockFilterDataProvider
86+
*
87+
* @magentoDataFixture Magento/Cms/_files/blocks.php
88+
*
89+
* @return void
90+
*/
91+
public function testBlockFiltering(array $filter, string $expectedBlock): void
92+
{
93+
$this->request->setParams(['filters' => $filter]);
94+
$data = $this->getComponentProvidedData('cms_block_listing');
95+
$this->assertCount(1, $data['items']);
96+
$this->assertEquals(reset($data['items'])[BlockInterface::IDENTIFIER], $expectedBlock);
97+
}
98+
99+
/**
100+
* @return array
101+
*/
102+
public function blockFilterDataProvider(): array
103+
{
104+
return [
105+
'partial_title_filter' => [
106+
'filter' => ['title' => 'Enabled CMS Block'],
107+
'expected_item' => 'enabled_block',
108+
],
109+
'multiple_filter' => [
110+
'filter' => [
111+
'title' => 'CMS Block Title',
112+
'is_active' => [0],
113+
],
114+
'expected_item' => 'disabled_block',
115+
],
116+
];
117+
}
118+
119+
/**
120+
* Call prepare method in the child components
121+
*
122+
* @param UiComponentInterface $component
123+
* @return void
124+
*/
125+
private function prepareChildComponents(UiComponentInterface $component)
126+
{
127+
foreach ($component->getChildComponents() as $child) {
128+
$this->prepareChildComponents($child);
129+
}
130+
131+
$component->prepare();
132+
}
133+
134+
/**
135+
* Get component provided data
136+
*
137+
* @param string $namespace
138+
* @return array
139+
*/
140+
private function getComponentProvidedData(string $namespace): array
141+
{
142+
$component = $this->componentFactory->create($namespace);
143+
$this->prepareChildComponents($component);
144+
145+
return $component->getContext()->getDataProvider()->getData();
146+
}
147+
}

0 commit comments

Comments
 (0)