Skip to content

Commit 2dd3d56

Browse files
author
Serhii Bohomaz
committed
MC-39551: Create automated test for: "On category page switch to list mode"
1 parent 2bd6a23 commit 2dd3d56

File tree

1 file changed

+64
-34
lines changed
  • dev/tests/integration/testsuite/Magento/Catalog/Block/Product/ProductList

1 file changed

+64
-34
lines changed

dev/tests/integration/testsuite/Magento/Catalog/Block/Product/ProductList/ToolbarTest.php

Lines changed: 64 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -20,131 +20,161 @@
2020
* @see \Magento\Catalog\Block\Product\ProductList\Toolbar
2121
* @magentoAppArea frontend
2222
* @magentoDbIsolation enabled
23-
* @magentoAppIsolation enabled
2423
*/
2524
class ToolbarTest extends TestCase
2625
{
26+
/** @var string */
27+
private const XPATH_TEMPLATE_FOR_NOT_VISIBLE_ICON_CASES = '//div[contains(@class, "modes")]/*[@data-value="%s"]';
28+
29+
/** @var string */
30+
private const ACTIVE_MODE_XPATH_TEMPLATE =
31+
'//div[contains(@class, "modes")]/strong[@data-value="%s" and contains(@class, "active")]';
32+
33+
/** @var string */
34+
private const NOT_ACTIVE_MODE_XPATH_TEMPLATE = '//div[contains(@class, "modes")]/a[@data-value="%s"]';
35+
2736
/** @var ObjectManagerInterface */
2837
private $objectManager;
2938

3039
/** @var LayoutInterface */
3140
private $layout;
3241

42+
/** @var Toolbar */
43+
private $toolbarBlock;
44+
3345
/**
3446
* @inheritdoc
3547
*/
3648
protected function setUp(): void
3749
{
3850
parent::setUp();
51+
3952
$this->objectManager = Bootstrap::getObjectManager();
4053
$this->layout = $this->objectManager->get(LayoutInterface::class);
54+
$this->toolbarBlock = $this->layout->createBlock(Toolbar::class);
4155
}
4256

43-
public function testGetPagerHtml()
57+
/**
58+
* @return void
59+
*/
60+
public function testGetPagerHtml(): void
4461
{
45-
/** @var $block Toolbar */
46-
$block = $this->layout->createBlock(Toolbar::class, 'block');
62+
$this->toolbarBlock->setNameInLayout('block');
4763
/** @var $childBlock Text */
4864
$childBlock = $this->layout->addBlock(
4965
Text::class,
5066
'product_list_toolbar_pager',
5167
'block'
5268
);
5369
$expectedHtml = '<b>Any text there</b>';
54-
$this->assertNotEquals($expectedHtml, $block->getPagerHtml());
70+
$this->assertNotEquals($expectedHtml, $this->toolbarBlock->getPagerHtml());
5571
$childBlock->setText($expectedHtml);
56-
$this->assertEquals($expectedHtml, $block->getPagerHtml());
72+
$this->assertEquals($expectedHtml, $this->toolbarBlock->getPagerHtml());
5773
}
5874

5975
/**
60-
* @magentoConfigFixture default_store catalog/frontend/list_mode grid
76+
* @magentoConfigFixture current_store catalog/frontend/list_mode grid
77+
* @return void
6178
*/
6279
public function testToHtmlGridOnly(): void
6380
{
64-
$block = $this->layout->createBlock(Toolbar::class, 'block');
65-
$block->setTemplate('Magento_Catalog::product/list/toolbar/viewmode.phtml');
81+
$htmlOutput = $this->getModeSwitcherHtml();
82+
$this->assertNotEmpty($htmlOutput);
6683
$this->assertEquals(
6784
0,
6885
Xpath::getElementsCountForXpath(
69-
'//div[contains(@class, "modes")]/*[@data-value="grid"]',
70-
$block->toHtml()
86+
sprintf(self::XPATH_TEMPLATE_FOR_NOT_VISIBLE_ICON_CASES, 'grid'),
87+
$htmlOutput
7188
)
7289
);
7390
$this->assertEquals(
7491
0,
7592
Xpath::getElementsCountForXpath(
76-
'//div[contains(@class, "modes")]/*[@data-value="list"]',
77-
$block->toHtml()
93+
sprintf(self::XPATH_TEMPLATE_FOR_NOT_VISIBLE_ICON_CASES, 'list'),
94+
$htmlOutput
7895
)
7996
);
8097
}
8198

8299
/**
83-
* @magentoConfigFixture default_store catalog/frontend/list_mode list
100+
* @magentoConfigFixture current_store catalog/frontend/list_mode list
101+
* @return void
84102
*/
85103
public function testToHtmlListOnly(): void
86104
{
87-
$block = $this->layout->createBlock(Toolbar::class, 'block');
88-
$block->setTemplate('Magento_Catalog::product/list/toolbar/viewmode.phtml');
105+
$htmlOutput = $this->getModeSwitcherHtml();
106+
$this->assertNotEmpty($htmlOutput);
89107
$this->assertEquals(
90108
0,
91109
Xpath::getElementsCountForXpath(
92-
'//div[contains(@class, "modes")]/*[@data-value="grid"]',
93-
$block->toHtml()
110+
sprintf(self::XPATH_TEMPLATE_FOR_NOT_VISIBLE_ICON_CASES, 'grid'),
111+
$htmlOutput
94112
)
95113
);
96114
$this->assertEquals(
97115
0,
98116
Xpath::getElementsCountForXpath(
99-
'//div[contains(@class, "modes")]/*[@data-value="list"]',
100-
$block->toHtml()
117+
sprintf(self::XPATH_TEMPLATE_FOR_NOT_VISIBLE_ICON_CASES, 'list'),
118+
$htmlOutput
101119
)
102120
);
103121
}
104122

105123
/**
106-
* @magentoConfigFixture default_store catalog/frontend/list_mode grid-list
124+
* @magentoConfigFixture current_store catalog/frontend/list_mode grid-list
125+
* @return void
107126
*/
108127
public function testToHtmlGridList(): void
109128
{
110-
$block = $this->layout->createBlock(Toolbar::class, 'block');
111-
$block->setTemplate('Magento_Catalog::product/list/toolbar/viewmode.phtml');
129+
$htmlOutput = $this->getModeSwitcherHtml();
112130
$this->assertEquals(
113131
1,
114132
Xpath::getElementsCountForXpath(
115-
'//div[contains(@class, "modes")]/strong[@data-value="grid" and contains(@class, "active")]',
116-
$block->toHtml()
133+
sprintf(self::ACTIVE_MODE_XPATH_TEMPLATE, 'grid'),
134+
$htmlOutput
117135
)
118136
);
119137
$this->assertEquals(
120138
1,
121139
Xpath::getElementsCountForXpath(
122-
'//div[contains(@class, "modes")]/a[@data-value="list"]',
123-
$block->toHtml()
140+
sprintf(self::NOT_ACTIVE_MODE_XPATH_TEMPLATE, 'list'),
141+
$htmlOutput
124142
)
125143
);
126144
}
127145

128146
/**
129-
* @magentoConfigFixture default_store catalog/frontend/list_mode list-grid
147+
* @magentoConfigFixture current_store catalog/frontend/list_mode list-grid
148+
* @return void
130149
*/
131150
public function testToHtmlListGrid(): void
132151
{
133-
$block = $this->layout->createBlock(Toolbar::class, 'block');
134-
$block->setTemplate('Magento_Catalog::product/list/toolbar/viewmode.phtml');
152+
$htmlOutput = $this->getModeSwitcherHtml();
135153
$this->assertEquals(
136154
1,
137155
Xpath::getElementsCountForXpath(
138-
'//div[contains(@class, "modes")]/strong[@data-value="list" and contains(@class, "active")]',
139-
$block->toHtml()
156+
sprintf(self::ACTIVE_MODE_XPATH_TEMPLATE, 'list'),
157+
$htmlOutput
140158
)
141159
);
142160
$this->assertEquals(
143161
1,
144162
Xpath::getElementsCountForXpath(
145-
'//div[contains(@class, "modes")]/a[@data-value="grid"]',
146-
$block->toHtml()
163+
sprintf(self::NOT_ACTIVE_MODE_XPATH_TEMPLATE, 'grid'),
164+
$htmlOutput
147165
)
148166
);
149167
}
168+
169+
/**
170+
* Mode switcher html
171+
*
172+
* @return string
173+
*/
174+
private function getModeSwitcherHtml(): string
175+
{
176+
$this->toolbarBlock->setTemplate('Magento_Catalog::product/list/toolbar/viewmode.phtml');
177+
178+
return $this->toolbarBlock->toHtml();
179+
}
150180
}

0 commit comments

Comments
 (0)