15
15
use Magento \CatalogUrlRewrite \Model \Map \DataCategoryUrlRewriteDatabaseMap ;
16
16
use Magento \CatalogUrlRewrite \Model \Map \DataProductUrlRewriteDatabaseMap ;
17
17
use Magento \CatalogUrlRewrite \Model \ResourceModel \Category \Product ;
18
+ use Magento \Store \Api \WebsiteRepositoryInterface ;
18
19
use Magento \Store \Model \ScopeInterface ;
19
20
use Magento \UrlRewrite \Model \Exception \UrlAlreadyExistsException ;
20
21
use Magento \UrlRewrite \Model \OptionProvider ;
@@ -63,6 +64,8 @@ protected function setUp(): void
63
64
}
64
65
65
66
/**
67
+ * Test url rewrite after category save
68
+ *
66
69
* @magentoDataFixture Magento/Catalog/_files/category_with_position.php
67
70
* @dataProvider categoryProvider
68
71
* @param array $data
@@ -80,6 +83,8 @@ public function testUrlRewriteOnCategorySave(array $data): void
80
83
}
81
84
82
85
/**
86
+ * Provider. categoryProvider
87
+ *
83
88
* @return array
84
89
*/
85
90
public function categoryProvider (): array
@@ -123,6 +128,8 @@ public function categoryProvider(): array
123
128
}
124
129
125
130
/**
131
+ * Test category product url rewrite
132
+ *
126
133
* @magentoDataFixture Magento/Catalog/_files/category_tree.php
127
134
* @magentoDataFixture Magento/Catalog/_files/second_product_simple.php
128
135
* @dataProvider productRewriteProvider
@@ -140,6 +147,8 @@ public function testCategoryProductUrlRewrite(array $data): void
140
147
}
141
148
142
149
/**
150
+ * Provider. productRewriteProvider
151
+ *
143
152
* @return array
144
153
*/
145
154
public function productRewriteProvider (): array
@@ -165,6 +174,8 @@ public function productRewriteProvider(): array
165
174
}
166
175
167
176
/**
177
+ * Test url rewrites after category save with existing url key
178
+ *
168
179
* @magentoDataFixture Magento/CatalogUrlRewrite/_files/categories_with_products.php
169
180
* @magentoAppIsolation enabled
170
181
* @dataProvider existingUrlProvider
@@ -179,6 +190,8 @@ public function testUrlRewriteOnCategorySaveWithExistingUrlKey(array $data): voi
179
190
}
180
191
181
192
/**
193
+ * Provider. existingUrlProvider
194
+ *
182
195
* @return array
183
196
*/
184
197
public function existingUrlProvider (): array
@@ -226,6 +239,8 @@ public function existingUrlProvider(): array
226
239
}
227
240
228
241
/**
242
+ * Test url rewrites after category move
243
+ *
229
244
* @magentoDataFixture Magento/Catalog/_files/category_product.php
230
245
* @magentoDataFixture Magento/Catalog/_files/catalog_category_with_slash.php
231
246
* @dataProvider categoryMoveProvider
@@ -287,6 +302,7 @@ public function categoryMoveProvider(): array
287
302
}
288
303
289
304
/**
305
+ * Test url rewrites after category delete
290
306
* @magentoDataFixture Magento/Catalog/_files/category.php
291
307
* @return void
292
308
*/
@@ -302,6 +318,8 @@ public function testUrlRewritesAfterCategoryDelete(): void
302
318
}
303
319
304
320
/**
321
+ * Test url rewrites after category with products delete
322
+ *
305
323
* @magentoAppArea adminhtml
306
324
* @magentoDataFixture Magento/CatalogUrlRewrite/_files/categories_with_product_ids.php
307
325
* @return void
@@ -325,6 +343,8 @@ public function testUrlRewritesAfterCategoryWithProductsDelete(): void
325
343
}
326
344
327
345
/**
346
+ * Test category url rewrite per Store Views
347
+ *
328
348
* @magentoDataFixture Magento/Store/_files/second_store.php
329
349
* @magentoDataFixture Magento/Catalog/_files/category.php
330
350
* @return void
@@ -353,6 +373,53 @@ public function testCategoryUrlRewritePerStoreViews(): void
353
373
}
354
374
}
355
375
376
+ /**
377
+ * Test category url rewrite while reassign store view
378
+ *
379
+ * @magentoAppArea adminhtml
380
+ * @magentoDataFixture Magento/Store/_files/second_store_group_with_second_website.php
381
+ * @magentoDataFixture Magento/Catalog/_files/category.php
382
+ * @return void
383
+ */
384
+ public function testCategoryUrlRewriteMovingToOtherStoreView (): void
385
+ {
386
+ $ categoryId = 333 ;
387
+ $ store = $ this ->storeRepository ->get ('default ' );
388
+ $ storeId = $ store ->getId ();
389
+ $ urlRewrites = [
390
+ ['category-1-updated.html ' , 'category-1.html ' ],
391
+ ['category-1-most-recent.html ' , 'category-1-updated.html ' ],
392
+ ];
393
+ foreach ($ urlRewrites as $ rewrite ) {
394
+ /** @var \Magento\UrlRewrite\Model\UrlRewrite $urlRewrite */
395
+ $ urlRewrite = $ this ->objectManager ->create (\Magento \UrlRewrite \Model \UrlRewrite::class);
396
+ $ urlRewrite ->setEntityType (\Magento \CatalogUrlRewrite \Model \CategoryUrlRewriteGenerator::ENTITY_TYPE )
397
+ ->setEntityId ($ categoryId )
398
+ ->setRequestPath ($ rewrite [0 ])
399
+ ->setTargetPath ($ rewrite [1 ])
400
+ ->setRedirectType (\Magento \UrlRewrite \Model \OptionProvider::PERMANENT )
401
+ ->setStoreId ($ storeId );
402
+ $ urlRewrite ->save ();
403
+ }
404
+
405
+ /** @var WebsiteRepositoryInterface $websiteRepo */
406
+ $ websiteRepo = $ this ->objectManager ->get (WebsiteRepositoryInterface::class);
407
+ $ website = $ websiteRepo ->get ('test ' );
408
+ $ group = $ website ->getDefaultGroup ();
409
+ $ group ->setRootCategoryId (2 );
410
+ $ group ->save ();
411
+ $ groupId = $ group ->getId ();
412
+ $ store ->setStoreGroupId ($ groupId );
413
+ $ store ->save ();
414
+
415
+ $ urlRewriteItems = $ this ->getEntityRewriteCollection ($ categoryId )->getItems ();
416
+ $ this ->assertTrue (count ($ urlRewriteItems ) === 3 );
417
+ $ expectedRewriteRequestPaths = ['category-1.html ' , 'category-1-updated.html ' , 'category-1-most-recent.html ' ];
418
+ foreach ($ urlRewriteItems as $ item ) {
419
+ $ this ->assertTrue (in_array ($ item ->getRequestPath (), $ expectedRewriteRequestPaths ));
420
+ }
421
+ }
422
+
356
423
/**
357
424
* @inheritdoc
358
425
*/
0 commit comments