6 declare(strict_types=1);
23 private $objectManager;
35 public function testProductUrlResolver()
38 $urlPath =
'p002.html';
45 $urlFinder = $this->objectManager->get(UrlFinderInterface::class);
46 $actualUrls = $urlFinder->findOneByData(
48 'request_path' => $urlPath,
52 $targetPath = $actualUrls->getTargetPath();
53 $expectedType = $actualUrls->getEntityType();
57 urlResolver(url:
"{$urlPath}")
66 $this->assertArrayHasKey(
'urlResolver',
$response);
68 $this->assertEquals($targetPath,
$response[
'urlResolver'][
'canonical_url']);
69 $this->assertEquals(strtoupper($expectedType),
$response[
'urlResolver'][
'type']);
77 public function testProductUrlWithCanonicalUrlInput()
80 $urlPath =
'p002.html';
88 $urlFinder = $this->objectManager->get(UrlFinderInterface::class);
89 $actualUrls = $urlFinder->findOneByData(
91 'request_path' => $urlPath,
95 $targetPath = $actualUrls->getTargetPath();
96 $expectedType = $actualUrls->getEntityType();
97 $canonicalPath = $actualUrls->getTargetPath();
101 urlResolver(url:
"{$canonicalPath}")
110 $this->assertArrayHasKey(
'urlResolver',
$response);
112 $this->assertEquals($targetPath,
$response[
'urlResolver'][
'canonical_url']);
113 $this->assertEquals(strtoupper($expectedType),
$response[
'urlResolver'][
'type']);
121 public function testCategoryUrlResolver()
123 $productSku =
'p002';
124 $urlPath2 =
'cat-1.html';
131 $urlFinder = $this->objectManager->get(UrlFinderInterface::class);
132 $actualUrls = $urlFinder->findOneByData(
134 'request_path' => $urlPath2,
138 $categoryId = $actualUrls->getEntityId();
139 $targetPath = $actualUrls->getTargetPath();
140 $expectedType = $actualUrls->getEntityType();
144 urlResolver(url:
"{$urlPath2}")
153 $this->assertArrayHasKey(
'urlResolver',
$response);
154 $this->assertEquals($categoryId,
$response[
'urlResolver'][
'id']);
155 $this->assertEquals($targetPath,
$response[
'urlResolver'][
'canonical_url']);
156 $this->assertEquals(strtoupper($expectedType),
$response[
'urlResolver'][
'type']);
162 public function testCMSPageUrlResolver()
165 $page = $this->objectManager->get(\
Magento\Cms\Model\Page::class);
166 $page->load(
'page100');
167 $cmsPageId =
$page->getId();
168 $requestPath =
$page->getIdentifier();
171 $urlPathGenerator = $this->objectManager->get(\
Magento\CmsUrlRewrite\Model\CmsPageUrlPathGenerator::class);
174 $targetPath = $urlPathGenerator->getCanonicalUrlPath(
$page);
180 urlResolver(url:
"{$requestPath}")
189 $this->assertEquals($cmsPageId,
$response[
'urlResolver'][
'id']);
190 $this->assertEquals($targetPath,
$response[
'urlResolver'][
'canonical_url']);
191 $this->assertEquals(strtoupper(str_replace(
'-',
'_', $expectedEntityType)),
$response[
'urlResolver'][
'type']);
199 public function testProductUrlRewriteResolver()
201 $productSku =
'p002';
206 $product->setUrlKey(
'p002-new')->save();
207 $urlPath =
$product->getUrlKey() .
'.html';
208 $this->assertEquals($urlPath,
'p002-new.html');
211 $urlFinder = $this->objectManager->get(UrlFinderInterface::class);
212 $actualUrls = $urlFinder->findOneByData(
214 'request_path' => $urlPath,
218 $targetPath = $actualUrls->getTargetPath();
219 $expectedType = $actualUrls->getEntityType();
223 urlResolver(url:
"{$urlPath}")
232 $this->assertArrayHasKey(
'urlResolver',
$response);
234 $this->assertEquals($targetPath,
$response[
'urlResolver'][
'canonical_url']);
235 $this->assertEquals(strtoupper($expectedType),
$response[
'urlResolver'][
'type']);
243 public function testInvalidUrlResolverInput()
245 $productSku =
'p002';
253 $urlFinder = $this->objectManager->get(UrlFinderInterface::class);
254 $urlFinder->findOneByData(
256 'request_path' => $urlPath,
263 urlResolver(url:
"{$urlPath}")
272 $this->assertArrayHasKey(
'urlResolver',
$response);
273 $this->assertNull(
$response[
'urlResolver']);
281 public function testCategoryUrlWithLeadingSlash()
283 $productSku =
'p002';
284 $urlPath =
'cat-1.html';
291 $urlFinder = $this->objectManager->get(UrlFinderInterface::class);
292 $actualUrls = $urlFinder->findOneByData(
294 'request_path' => $urlPath,
298 $categoryId = $actualUrls->getEntityId();
299 $targetPath = $actualUrls->getTargetPath();
300 $expectedType = $actualUrls->getEntityType();
304 urlResolver(url:
"/{$urlPath}")
313 $this->assertArrayHasKey(
'urlResolver',
$response);
314 $this->assertEquals($categoryId,
$response[
'urlResolver'][
'id']);
315 $this->assertEquals($targetPath,
$response[
'urlResolver'][
'canonical_url']);
316 $this->assertEquals(strtoupper($expectedType),
$response[
'urlResolver'][
'type']);
337 $this->assertArrayHasKey(
'urlResolver',
$response);
338 $this->assertEquals(2,
$response[
'urlResolver'][
'id']);
339 $this->assertEquals(
'cms/page/view/page_id/2',
$response[
'urlResolver'][
'canonical_url']);
340 $this->assertEquals(
'CMS_PAGE',
$response[
'urlResolver'][
'type']);
graphQlQuery(string $query, array $variables=[], string $operationName='', array $headers=[])
static getObjectManager()