Skip to content

Commit 9d0f769

Browse files
committed
MAGETWO-73534: [GITHUB] Url rewrite for product is broken after using massaction #8227
1 parent 76fcd12 commit 9d0f769

File tree

6 files changed

+117
-7
lines changed

6 files changed

+117
-7
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/PageObject.xsd">
10+
<page name="AdminProductUpdateAttributesPage" url="catalog/product_action_attribute/edit/" area="admin" module="Magento_Catalog">
11+
<section name="AdminUpdateAttributesHeaderSection"/>
12+
<section name="AdminUpdateAttributesWebsiteSection"/>
13+
</page>
14+
</pages>

app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFiltersSection.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@
77
-->
88

99
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10-
xsi:noNamespaceSchemaLocation="../../../../../../../dev/tests/acceptance/vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/Page/etc/SectionObject.xsd">
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
1111
<section name="AdminProductFiltersSection">
1212
<element name="FiltersButton" type="button" selector="#container > div > div.admin__data-grid-header > div:nth-child(1) > div.data-grid-filters-actions-wrap > div > button"/>
1313
<element name="clearFiltersButton" type="button" selector="//div[@class='admin__data-grid-header']//button[@class='action-tertiary action-clear']" timeout="10"/>
1414
<element name="NameInput" type="input" selector="input[name=name]"/>
1515
<element name="SkuInput" type="input" selector="input[name=sku]"/>
1616
<element name="Apply" type="button" selector="button[data-action=grid-filter-apply]" timeout="30"/>
17+
<element name="allCheckbox" type="checkbox" selector="div[data-role='grid-wrapper'] label[data-bind='attr: {for: ko.uid}']" timeout="30"/>
1718
</section>
1819
</sections>

app/code/Magento/Catalog/Test/Mftf/Section/AdminProductSEOSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@
1111
<section name="AdminProductSEOSection">
1212
<element name="sectionHeader" type="button" selector="div[data-index='search-engine-optimization']" timeout="30"/>
1313
<element name="urlKeyInput" type="input" selector="input[name='product[url_key]']"/>
14+
<element name="useDefaultUrl" type="checkbox" selector="input[name='use_default[url_key]']"/>
1415
</section>
1516
</sections>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
10+
<section name="AdminUpdateAttributesHeaderSection">
11+
<element name="saveButton" type="button" selector="button[data-ui-id='page-actions-toolbar-save-button']" timeout="30"/>
12+
</section>
13+
<section name="AdminUpdateAttributesWebsiteSection">
14+
<element name="website" type="button" selector="#attributes_update_tabs_websites"/>
15+
<element name="addProductToWebsite" type="checkbox" selector="#add-products-to-website-content .website-checkbox"/>
16+
</section>
17+
</sections>

app/code/Magento/CatalogUrlRewrite/Observer/ProductToWebsiteChangeObserver.php

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
use Magento\UrlRewrite\Model\UrlPersistInterface;
1515
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
1616

17+
/**
18+
* Observer to assign the products to website.
19+
*/
1720
class ProductToWebsiteChangeObserver implements ObserverInterface
1821
{
1922
/**
@@ -69,12 +72,14 @@ public function execute(\Magento\Framework\Event\Observer $observer)
6972
$this->request->getParam('store_id', Store::DEFAULT_STORE_ID)
7073
);
7174

72-
$this->urlPersist->deleteByData([
73-
UrlRewrite::ENTITY_ID => $product->getId(),
74-
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
75-
]);
76-
if ($product->getVisibility() != Visibility::VISIBILITY_NOT_VISIBLE) {
77-
$this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product));
75+
if (!empty($this->productUrlRewriteGenerator->generate($product))) {
76+
$this->urlPersist->deleteByData([
77+
UrlRewrite::ENTITY_ID => $product->getId(),
78+
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
79+
]);
80+
if ($product->getVisibility() != Visibility::VISIBILITY_NOT_VISIBLE) {
81+
$this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product));
82+
}
7883
}
7984
}
8085
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="AdminUrlForProductRewrittenCorrectlyTest">
11+
<annotations>
12+
<features value="CatalogUrlRewrite"/>
13+
<stories value="Url rewrites for products"/>
14+
<title value="Check that URL for product rewritten correctly"/>
15+
<description value="Check that URL for product rewritten correctly"/>
16+
<severity value="MAJOR"/>
17+
<testCaseId value="MC-13913"/>
18+
<useCaseId value="MAGETWO-73534"/>
19+
<group value="catalog"/>
20+
<group value="catalogUrlRewrite"/>
21+
</annotations>
22+
<before>
23+
<!--Create product-->
24+
<createData entity="_defaultCategory" stepKey="category"/>
25+
<createData entity="ApiSimpleProduct" stepKey="createProduct">
26+
<requiredEntity createDataKey="category"/>
27+
</createData>
28+
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
29+
</before>
30+
<after>
31+
<!--Delete created data-->
32+
<deleteData createDataKey="createProduct" stepKey="deleteSimpleProduct"/>
33+
<deleteData createDataKey="category" stepKey="deleteCategory"/>
34+
<actionGroup ref="logout" stepKey="logout"/>
35+
</after>
36+
37+
38+
<!--Open Created product-->
39+
<amOnPage url="{{AdminProductEditPage.url($$createProduct.id$$)}}" stepKey="openProductEditPage"/>
40+
<!--Switch to Default Store view-->
41+
<actionGroup ref="SwitchToTheNewStoreView" stepKey="selectDefaultStoreView">
42+
<argument name="storeViewName" value="_defaultStore"/>
43+
</actionGroup>
44+
45+
<!--Set use default url-->
46+
<click selector="{{AdminProductSEOSection.sectionHeader}}" stepKey="openSearchEngineOptimizationTab"/>
47+
<waitForElementVisible selector="{{AdminProductSEOSection.useDefaultUrl}}" time="30" stepKey="waitForUseDefaultUrlCheckbox"/>
48+
<uncheckOption selector="{{AdminProductSEOSection.useDefaultUrl}}" stepKey="uncheckUseDefaultUrlCheckbox"/>
49+
<fillField selector="{{AdminProductSEOSection.urlKeyInput}}" userInput="$$createProduct.custom_attributes[url_key]$$-updated" stepKey="changeUrlKey"/>
50+
<actionGroup ref="saveProductForm" stepKey="saveProduct"/>
51+
52+
<!--Select product and go toUpdate Attribute page-->
53+
<amOnPage url="{{AdminProductIndexPage.url}}" stepKey="openProductsGrid"/>
54+
<actionGroup ref="filterProductGridBySku" stepKey="filterGridBySku">
55+
<argument name="product" value="$$createProduct$$"/>
56+
</actionGroup>
57+
<click selector="{{AdminProductFiltersSection.allCheckbox}}" stepKey="selectFilteredProduct"/>
58+
<click selector="{{AdminProductGridSection.bulkActionDropdown}}" stepKey="clickActionDropdown"/>
59+
<click selector="{{AdminProductGridSection.bulkActionOption('Update attributes')}}" stepKey="clickBulkUpdateAttributes"/>
60+
<waitForPageLoad stepKey="waitForUpdateAttributesPageLoad"/>
61+
<seeInCurrentUrl url="{{AdminProductUpdateAttributesPage.url}}" stepKey="seeInUrlAttributeUpdatePage"/>
62+
<click selector="{{AdminUpdateAttributesWebsiteSection.website}}" stepKey="openWebsitesTab"/>
63+
<waitForAjaxLoad stepKey="waitForLoadWebSiteTab"/>
64+
<click selector="{{AdminUpdateAttributesWebsiteSection.addProductToWebsite}}" stepKey="checkAddProductToWebsiteCheckbox"/>
65+
<click selector="{{AdminUpdateAttributesHeaderSection.saveButton}}" stepKey="clickSave"/>
66+
<see selector="{{AdminMessagesSection.success}}" userInput="A total of 1 record(s) were updated." stepKey="seeSaveSuccessMessage"/>
67+
<!--Got to Store front product page and check url-->
68+
<amOnPage url="{{StorefrontProductPage.url($$createProduct.custom_attributes[url_key]$$-updated)}}" stepKey="navigateToSimpleProductPage"/>
69+
<seeInCurrentUrl url="{{StorefrontProductPage.url($$createProduct.custom_attributes[url_key]$$-updated)}}" stepKey="seeProductNewUrl"/>
70+
<see selector="{{StorefrontProductInfoMainSection.productSku}}" userInput="$$createProduct.sku$$" stepKey="seeCorrectSku"/>
71+
</test>
72+
</tests>

0 commit comments

Comments
 (0)