Skip to content

Commit ef2327b

Browse files
committed
MAGETWO-54184: Url rewrite do not use store view dependent data for product
1 parent c92df5c commit ef2327b

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,14 @@ public function execute(\Magento\Framework\Event\Observer $observer)
5555
UrlRewrite::ENTITY_ID => $product->getId(),
5656
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
5757
UrlRewrite::REDIRECT_TYPE => 0,
58+
UrlRewrite::STORE_ID => $product->getStoreId()
5859
]);
59-
if ($product->isVisibleInSiteVisibility()) {
60-
$this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product));
60+
61+
$savedProduct = clone $product;
62+
$savedProduct->load($product->getId());
63+
64+
if ($savedProduct->isVisibleInSiteVisibility()) {
65+
$this->urlPersist->replace($this->productUrlRewriteGenerator->generate($savedProduct));
6166
}
6267
}
6368
}

app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ protected function setUp()
6868
'dataHasChangedFor',
6969
'isVisibleInSiteVisibility',
7070
'getIsChangedWebsites',
71-
'getIsChangedCategories'
71+
'getIsChangedCategories',
72+
'load',
73+
'getStoreId'
7274
],
7375
[],
7476
'',
@@ -114,7 +116,9 @@ public function testUrlKeyDataProvider()
114116
'isChangedCategories' => false,
115117
'visibilityResult' => true,
116118
'expectedDeleteCount' => 1,
117-
'expectedReplaceCount' => 1
119+
'expectedProdLoadCount' => 1,
120+
'expectedReplaceCount' => 1,
121+
118122
],
119123
'no chnages' => [
120124
'isChangedUrlKey' => false,
@@ -123,6 +127,7 @@ public function testUrlKeyDataProvider()
123127
'isChangedCategories' => false,
124128
'visibilityResult' => true,
125129
'expectedDeleteCount' => 0,
130+
'expectedProdLoadCount' => 0,
126131
'expectedReplaceCount' => 0
127132
],
128133
'visibility changed' => [
@@ -132,6 +137,7 @@ public function testUrlKeyDataProvider()
132137
'isChangedCategories' => false,
133138
'visibilityResult' => true,
134139
'expectedDeleteCount' => 1,
140+
'expectedProdLoadCount' => 1,
135141
'expectedReplaceCount' => 1
136142
],
137143
'websites changed' => [
@@ -141,6 +147,7 @@ public function testUrlKeyDataProvider()
141147
'isChangedCategories' => false,
142148
'visibilityResult' => true,
143149
'expectedDeleteCount' => 1,
150+
'expectedProdLoadCount' => 1,
144151
'expectedReplaceCount' => 1
145152
],
146153
'categories changed' => [
@@ -150,6 +157,7 @@ public function testUrlKeyDataProvider()
150157
'isChangedCategories' => true,
151158
'visibilityResult' => true,
152159
'expectedDeleteCount' => 1,
160+
'expectedProdLoadCount' => 1,
153161
'expectedReplaceCount' => 1
154162
],
155163
'url changed invisible' => [
@@ -159,6 +167,7 @@ public function testUrlKeyDataProvider()
159167
'isChangedCategories' => false,
160168
'visibilityResult' => false,
161169
'expectedDeleteCount' => 1,
170+
'expectedProdLoadCount' => 1,
162171
'expectedReplaceCount' => 0
163172
],
164173
];
@@ -171,6 +180,7 @@ public function testUrlKeyDataProvider()
171180
* @param bool $isChangedCategories
172181
* @param bool $visibilityResult
173182
* @param int $expectedDeleteCount
183+
* @param int $expectedProdLoadCount
174184
* @param int $expectedReplaceCount
175185
*
176186
* @dataProvider testUrlKeyDataProvider
@@ -182,8 +192,15 @@ public function testExecuteUrlKey(
182192
$isChangedCategories,
183193
$visibilityResult,
184194
$expectedDeleteCount,
195+
$expectedProdLoadCount,
185196
$expectedReplaceCount
186197
) {
198+
$this->product->expects($this->any())->method('getStoreId')->will($this->returnValue(12));
199+
200+
$this->product->expects($this->exactly($expectedProdLoadCount))
201+
->method('load')
202+
->with($this->product->getId());
203+
187204
$this->product->expects($this->any())
188205
->method('dataHasChangedFor')
189206
->will($this->returnValueMap(
@@ -205,6 +222,7 @@ public function testExecuteUrlKey(
205222
UrlRewrite::ENTITY_ID => $this->product->getId(),
206223
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
207224
UrlRewrite::REDIRECT_TYPE => 0,
225+
UrlRewrite::STORE_ID => $this->product->getStoreId()
208226
]);
209227

210228
$this->product->expects($this->any())

0 commit comments

Comments
 (0)