Skip to content

Commit 8b39ecc

Browse files
Added testGetNonExistentUrlRewrite Test case to cover custom type URL rewrite rule
1 parent 57d8908 commit 8b39ecc

File tree

4 files changed

+59
-1
lines changed

4 files changed

+59
-1
lines changed

app/code/Magento/UrlRewriteGraphQl/Model/Resolver/EntityUrl.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ private function findCanonicalUrl(string $requestPath) : ?\Magento\UrlRewrite\Se
106106
if (!$urlRewrite) {
107107
$urlRewrite = $this->findUrlFromTargetPath($requestPath);
108108
}
109-
if (!$urlRewrite->getEntityId() && !$urlRewrite->getIsAutogenerated()) {
109+
if ($urlRewrite && !$urlRewrite->getEntityId() && !$urlRewrite->getIsAutogenerated()) {
110110
$urlRewrite = $this->findUrlFromTargetPath($urlRewrite->getTargetPath());
111111
}
112112

dev/tests/api-functional/testsuite/Magento/GraphQl/UrlRewrite/UrlResolverTest.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Magento\Cms\Helper\Page as PageHelper;
1616
use Magento\Store\Model\ScopeInterface;
1717
use Magento\Framework\App\Config\ScopeConfigInterface;
18+
use Magento\UrlRewrite\Model\UrlRewrite;
1819

1920
/**
2021
* Test the GraphQL endpoint's URLResolver query to verify canonical URL's are correctly returned.
@@ -355,4 +356,42 @@ public function testResolveSlash()
355356
$this->assertEquals($targetPath, $response['urlResolver']['relative_url']);
356357
$this->assertEquals('CMS_PAGE', $response['urlResolver']['type']);
357358
}
359+
360+
/**
361+
* Test for custom type which point to the valid product/category/cms page.
362+
*
363+
* @magentoApiDataFixture Magento/CatalogUrlRewrite/_files/product_with_category.php
364+
*/
365+
public function testGetNonExistentUrlRewrite()
366+
{
367+
$urlPath = 'non-exist-product.html';
368+
/** @var UrlRewrite $urlRewrite */
369+
$urlRewrite = $this->objectManager->create(UrlRewrite::class);
370+
$urlRewrite->load($urlPath, 'request_path');
371+
372+
/** @var UrlFinderInterface $urlFinder */
373+
$urlFinder = $this->objectManager->get(UrlFinderInterface::class);
374+
$actualUrls = $urlFinder->findOneByData(
375+
[
376+
'request_path' => $urlPath,
377+
'store_id' => 1
378+
]
379+
);
380+
$targetPath = $actualUrls->getTargetPath();
381+
382+
$query = <<<QUERY
383+
{
384+
urlResolver(url:"{$urlPath}")
385+
{
386+
id
387+
relative_url
388+
type
389+
}
390+
}
391+
QUERY;
392+
$response = $this->graphQlQuery($query);
393+
$this->assertArrayHasKey('urlResolver', $response);
394+
$this->assertEquals('PRODUCT', $response['urlResolver']['type']);
395+
$this->assertEquals($targetPath, $response['urlResolver']['relative_url']);
396+
}
358397
}

dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/_files/product_with_category.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Magento\Framework\Indexer\IndexerRegistry;
1515
use Magento\Store\Model\StoreManagerInterface;
1616
use Magento\TestFramework\Helper\Bootstrap;
17+
use Magento\UrlRewrite\Model\UrlRewrite;
1718

1819
/**
1920
* @var \Magento\Store\Model\Store $store
@@ -80,3 +81,15 @@
8081
/** @var CategoryLinkManagementInterface $linkManagement */
8182
$linkManagement = $objectManager->get(CategoryLinkManagementInterface::class);
8283
$linkManagement->assignProductToCategories($product->getSku(), [Category::TREE_ROOT_ID, $category->getEntityId()]);
84+
85+
/** @var UrlRewrite $urlRewrite */
86+
$urlRewrite = $objectManager->create(UrlRewrite::class);
87+
$urlRewrite->setEntityType('custom')
88+
->setRequestPath('non-exist-product.html')
89+
->setTargetPath('catalog/product/view/id/' . $product->getId())
90+
->setRedirectType(0)
91+
->setStoreId(1)
92+
->setDescription(null)
93+
->setIsAutogenerated(0);
94+
95+
$urlRewrite->save();

dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/_files/product_with_category_rollback.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Magento\Catalog\Api\ProductRepositoryInterface;
1010
use Magento\Framework\Api\SearchCriteriaBuilder;
1111
use Magento\TestFramework\Helper\Bootstrap;
12+
use Magento\UrlRewrite\Model\UrlRewrite;
1213

1314
$objectManager = Bootstrap::getObjectManager();
1415
/** @var \Magento\Framework\Registry $registry */
@@ -41,6 +42,11 @@
4142
$categoryRepository->delete($category);
4243
}
4344

45+
/** @var UrlRewrite $urlRewrite */
46+
$urlRewrite = $objectManager->create(UrlRewrite::class);
47+
$urlRewrite->load('non-exist-product.html', 'request_path');
48+
$urlRewrite->delete();
49+
4450
$registry->unregister('isSecureArea');
4551
$registry->register('isSecureArea', false);
4652

0 commit comments

Comments
 (0)