Skip to content

Commit bde1749

Browse files
Merge remote-tracking branch 'origin/MAGETWO-70779-Category-URL-Rewrite' into Okapis-PR
2 parents 2687a8d + f811cbc commit bde1749

File tree

7 files changed

+82
-3
lines changed

7 files changed

+82
-3
lines changed

app/code/Magento/UrlRewrite/Block/Catalog/Category/Tree.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ protected function _getNodesArray($node)
161161
'parent_id' => (int)$node->getParentId(),
162162
'children_count' => (int)$node->getChildrenCount(),
163163
'is_active' => (bool)$node->getIsActive(),
164-
'name' => $node->getName(),
164+
// Scrub names for raw js output
165+
'name' => $this->escapeHtml($node->getName()),
165166
'level' => (int)$node->getLevel(),
166167
'product_count' => (int)$node->getProductCount(),
167168
];

dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/Category.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,16 @@
4545
<field name="include_in_menu" xsi:type="string">Yes</field>
4646
</dataset>
4747

48+
<dataset name="default_subcategory_with_single_quote_in_name">
49+
<field name="name" xsi:type="string">DefaultSubcategory\'%isolation%</field>
50+
<field name="url_key" xsi:type="string">default-subcategory-%isolation%</field>
51+
<field name="parent_id" xsi:type="array">
52+
<item name="dataset" xsi:type="string">default_category</item>
53+
</field>
54+
<field name="is_active" xsi:type="string">Yes</field>
55+
<field name="include_in_menu" xsi:type="string">Yes</field>
56+
</dataset>
57+
4858
<dataset name="default_subcategory_without_url_key">
4959
<field name="name" xsi:type="string">DefaultSubcategory%isolation%</field>
5060
<field name="parent_id" xsi:type="array">

dev/tests/functional/tests/app/Magento/UrlRewrite/Test/Block/Adminhtml/Catalog/Category/Tree.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public function selectCategory($category)
3232
{
3333
if ($category != null && $category->hasData('name')) {
3434
$this->_rootElement->find(
35-
"//a[contains(text(),'{$category->getName()}')]",
35+
"//a[contains(text(),\"{$category->getName()}\")]",
3636
Locator::SELECTOR_XPATH
3737
)->click();
3838
} else {

dev/tests/functional/tests/app/Magento/UrlRewrite/Test/TestCase/CreateCategoryRewriteEntityTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public function __inject(
6868
$this->urlRewriteIndex = $urlRewriteIndex;
6969
$category = $fixtureFactory->createByCode(
7070
'category',
71-
['dataset' => 'default_subcategory']
71+
['dataset' => 'default_subcategory_with_single_quote_in_name']
7272
);
7373
$category->persist();
7474
return ['category' => $category];
@@ -87,6 +87,7 @@ public function test(UrlRewrite $urlRewrite, Category $category)
8787
$this->urlRewriteIndex->open();
8888
$this->urlRewriteIndex->getPageActionsBlock()->addNew();
8989
$this->urlRewriteEdit->getFormBlock()->fill($urlRewrite);
90+
9091
$this->urlRewriteEdit->getTreeBlock()->selectCategory($category);
9192
$this->urlRewriteEdit->getFormBlock()->fill($urlRewrite);
9293
$this->urlRewriteEdit->getPageMainActions()->save();
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
/** @var $category \Magento\Catalog\Model\Category */
8+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
9+
10+
$categoryFirst = $objectManager->create(\Magento\Catalog\Model\Category::class);
11+
$categoryFirst->setName('Category 1')
12+
->setPath('1/2')
13+
->setLevel(2)
14+
->setAvailableSortBy('name')
15+
->setDefaultSortBy('name')
16+
->setIsActive(true)
17+
->setPosition(1)
18+
->save();
19+
20+
// products from this fixture were moved to indexer_catalog_products.php
21+
$categorySecond = $objectManager->create(\Magento\Catalog\Model\Category::class);
22+
$categorySecond->setName('\'Category 6\'')
23+
->setPath($categoryFirst->getPath())
24+
->setLevel(3)
25+
->setAvailableSortBy('name')
26+
->setDefaultSortBy('name')
27+
->setIsActive(true)
28+
->setPosition(1)
29+
->save();
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
/** @var \Magento\Framework\ObjectManagerInterface $objectManager */
8+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
9+
10+
/** @var \Magento\Framework\Registry $registry */
11+
$registry = $objectManager->get(\Magento\Framework\Registry::class);
12+
13+
$registry->unregister('isSecureArea');
14+
$registry->register('isSecureArea', true);
15+
16+
/** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $collection */
17+
$collection = $objectManager->create(\Magento\Catalog\Model\ResourceModel\Category\Collection::class);
18+
$collection
19+
->addAttributeToFilter('level', 2)
20+
->load()
21+
->delete();
22+
23+
$registry->unregister('isSecureArea');
24+
$registry->register('isSecureArea', false);

dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Catalog/Category/TreeTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,20 @@ public function testGetTreeArray()
4545
$this->assertCount(1, $tree['children']);
4646
}
4747

48+
/**
49+
* Test that the getTreeArray() method scrubs single quotes and apostrophes from names
50+
*
51+
* @magentoAppIsolation enabled
52+
* @magentoDataFixture Magento/Catalog/_files/catalog_category_with_apostrophe.php
53+
*/
54+
public function testGetTreeArrayApostropheReplaced()
55+
{
56+
$tree = $this->_treeBlock->getTreeArray();
57+
58+
$this->assertNotContains('\'', $tree['children'][0]['children'][0]['children'][0]['name']);
59+
$this->assertEquals('&#039;Category 6&#039;', $tree['children'][0]['children'][0]['children'][0]['name']);
60+
}
61+
4862
/**
4963
* Test prepare grid
5064
*/

0 commit comments

Comments
 (0)