![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/magento/module-catalog/Test/Unit/Model/Product/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Catalog\Test\Unit\Model\Product; use Magento\Catalog\Helper\Category; use Magento\Catalog\Model\Product; use Magento\Catalog\Model\Product\Url; use Magento\Catalog\Model\Product\Url as ProductUrl; use Magento\Framework\Filter\FilterManager; use Magento\Framework\Session\SidResolverInterface; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Framework\UrlFactory; use Magento\Store\Model\Store; use Magento\Store\Model\StoreManagerInterface; use Magento\UrlRewrite\Model\UrlFinderInterface; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; class UrlTest extends TestCase { /** * @var Url */ protected $model; /** * @var FilterManager|MockObject */ protected $filter; /** * @var UrlFinderInterface|MockObject */ protected $urlFinder; /** * @var Category|MockObject */ protected $catalogCategory; /** * @var \Magento\Framework\Url|MockObject */ protected $url; /** * @var SidResolverInterface|MockObject */ protected $sidResolver; protected function setUp(): void { $this->filter = $this->getMockBuilder( FilterManager::class )->disableOriginalConstructor() ->setMethods( ['translitUrl'] )->getMock(); $this->urlFinder = $this->getMockBuilder( UrlFinderInterface::class )->disableOriginalConstructor() ->getMock(); $this->url = $this->getMockBuilder( \Magento\Framework\Url::class )->disableOriginalConstructor() ->setMethods( ['setScope', 'getUrl'] )->getMock(); $this->sidResolver = $this->getMockForAbstractClass(SidResolverInterface::class); $store = $this->createPartialMock(Store::class, ['getId']); $store->expects($this->any())->method('getId')->willReturn(1); $storeManager = $this->getMockForAbstractClass(StoreManagerInterface::class); $storeManager->expects($this->any())->method('getStore')->willReturn($store); $urlFactory = $this->getMockBuilder(UrlFactory::class) ->disableOriginalConstructor() ->getMock(); $urlFactory->method('create') ->willReturn($this->url); $objectManager = new ObjectManager($this); $this->model = $objectManager->getObject( ProductUrl::class, [ 'filter' => $this->filter, 'catalogCategory' => $this->catalogCategory, 'storeManager' => $storeManager, 'urlFactory' => $urlFactory, 'sidResolver' => $this->sidResolver, ] ); } public function testFormatUrlKey() { $strIn = 'Some string'; $resultString = 'some'; $this->filter->expects( $this->once() )->method( 'translitUrl' )->with( $strIn )->willReturn( $resultString ); $this->assertEquals($resultString, $this->model->formatUrlKey($strIn)); } /** * @dataProvider getUrlDataProvider * @covers \Magento\Catalog\Model\Product\Url::getUrl * @covers \Magento\Catalog\Model\Product\Url::getUrlInStore * @covers \Magento\Catalog\Model\Product\Url::getProductUrl * * @param $getUrlMethod * @param $routePath * @param $requestPathProduct * @param $storeId * @param $categoryId * @param $routeParams * @param $routeParamsUrl * @param $productId * @param $productUrlKey * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function testGetUrl( $getUrlMethod, $routePath, $requestPathProduct, $storeId, $categoryId, $routeParams, $routeParamsUrl, $productId, $productUrlKey ) { $product = $this->getMockBuilder( Product::class )->disableOriginalConstructor() ->setMethods( [ 'getStoreId', 'getEntityId', 'getId', 'getUrlKey', 'setRequestPath', 'hasUrlDataObject', 'getRequestPath', 'getCategoryId', 'getDoNotUseCategoryId', ] )->getMock(); $product->expects($this->any())->method('getStoreId')->willReturn($storeId); $product->expects($this->any())->method('getCategoryId')->willReturn($categoryId); $product->expects($this->any())->method('getRequestPath')->willReturn($requestPathProduct); $product->expects($this->any()) ->method('setRequestPath') ->with(false)->willReturnSelf(); $product->expects($this->any())->method('getId')->willReturn($productId); $product->expects($this->any())->method('getUrlKey')->willReturn($productUrlKey); $this->url->expects($this->any())->method('setScope')->with($storeId)->willReturnSelf(); $this->url->expects($this->any()) ->method('getUrl') ->with($routePath, $routeParamsUrl) ->willReturn($requestPathProduct); $this->urlFinder->expects($this->any())->method('findOneByData')->willReturn(false); switch ($getUrlMethod) { case 'getUrl': $this->assertEquals($requestPathProduct, $this->model->getUrl($product, $routeParams)); break; case 'getUrlInStore': $this->assertEquals($requestPathProduct, $this->model->getUrlInStore($product, $routeParams)); break; case 'getProductUrl': $this->assertEquals($requestPathProduct, $this->model->getProductUrl($product, null)); $this->sidResolver ->expects($this->never()) ->method('getUseSessionInUrl') ->willReturn(true); break; } } /** * @return array */ public function getUrlDataProvider() { return [ [ 'getUrl', '', '/product/url/path', 1, 1, ['_scope' => 1], ['_scope' => 1, '_direct' => '/product/url/path', '_query' => []], null, null, ], [ 'getUrl', 'catalog/product/view', false, 1, 1, ['_scope' => 1], ['_scope' => 1, '_query' => [], 'id' => 1, 's' => 'urlKey', 'category' => 1], 1, 'urlKey', ], [ 'getUrlInStore', '', '/product/url/path', 1, 1, ['_scope' => 1], ['_scope' => 1, '_direct' => '/product/url/path', '_query' => [], '_scope_to_url' => true], null, null, ], [ 'getProductUrl', '', '/product/url/path', 1, 1, [], ['_direct' => '/product/url/path', '_query' => [], '_nosid' => true], null, null, ] ]; } }