diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryHashMap.php b/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryHashMap.php index ece8b2033951df154bd1435feb3476dc6215ad75..668517f46d89775c32ca28d7882cba0e9d7742f7 100644 --- a/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryHashMap.php +++ b/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryHashMap.php @@ -5,7 +5,7 @@ */ namespace Magento\CatalogUrlRewrite\Model\Map; -use Magento\Catalog\Model\ResourceModel\Category; +use Magento\Catalog\Model\ResourceModel\CategoryFactory; use Magento\Catalog\Model\CategoryRepository; use Magento\Catalog\Api\Data\CategoryInterface; @@ -20,19 +20,19 @@ class DataCategoryHashMap implements HashMapInterface /** @var CategoryRepository */ private $categoryRepository; - /** @var Category */ - private $categoryResource; + /** @var CategoryFactory */ + private $categoryResourceFactory; /** * @param CategoryRepository $categoryRepository - * @param Category $categoryResource + * @param CategoryFactory $categoryResourceFactory */ public function __construct( CategoryRepository $categoryRepository, - Category $categoryResource + CategoryFactory $categoryResourceFactory ) { $this->categoryRepository = $categoryRepository; - $this->categoryResource = $categoryResource; + $this->categoryResourceFactory = $categoryResourceFactory; } /** @@ -70,9 +70,10 @@ class DataCategoryHashMap implements HashMapInterface */ private function getAllCategoryChildrenIds(CategoryInterface $category) { - $connection = $this->categoryResource->getConnection(); + $categoryResource = $this->categoryResourceFactory->create(); + $connection = $categoryResource->getConnection(); $select = $connection->select() - ->from($this->categoryResource->getEntityTable(), 'entity_id') + ->from($categoryResource->getEntityTable(), 'entity_id') ->where($connection->quoteIdentifier('path') . ' LIKE :c_path'); $bind = ['c_path' => $category->getPath() . '%']; return $connection->fetchCol($select, $bind); diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryHashMapTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryHashMapTest.php index 1aa6276742b348fd04370169e34c822f929af08a..52d65710fed69a0902f28aacb25a5183fa28e833 100644 --- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryHashMapTest.php +++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryHashMapTest.php @@ -5,7 +5,8 @@ */ namespace Magento\CatalogUrlRewrite\Test\Unit\Model\Map; -use Magento\Catalog\Model\ResourceModel\Category as CategoryResource; +use Magento\Catalog\Model\ResourceModel\CategoryFactory; +use Magento\Catalog\Model\ResourceModel\Category; use Magento\Framework\DB\Select; use Magento\Catalog\Model\CategoryRepository; use Magento\Catalog\Api\Data\CategoryInterface; @@ -21,7 +22,10 @@ class DataCategoryHashMapTest extends \PHPUnit_Framework_TestCase /** @var CategoryRepository|\PHPUnit_Framework_MockObject_MockObject */ private $categoryRepository; - /** @var CategoryResource|\PHPUnit_Framework_MockObject_MockObject */ + /** @var CategoryResourceFactory|\PHPUnit_Framework_MockObject_MockObject */ + private $categoryResourceFactory; + + /** @var Category|\PHPUnit_Framework_MockObject_MockObject */ private $categoryResource; /** @var DataCategoryHashMap|\PHPUnit_Framework_MockObject_MockObject */ @@ -30,19 +34,24 @@ class DataCategoryHashMapTest extends \PHPUnit_Framework_TestCase protected function setUp() { $this->categoryRepository = $this->getMock(CategoryRepository::class, [], [], '', false); + $this->categoryResourceFactory = $this->getMock(CategoryFactory::class, ['create'], [], '', false); $this->categoryResource = $this->getMock( - CategoryResource::class, + Category::class, ['getConnection', 'getEntityTable'], [], '', false ); + $this->categoryResourceFactory->expects($this->any()) + ->method('create') + ->willReturn($this->categoryResource); + $this->model = (new ObjectManager($this))->getObject( DataCategoryHashMap::class, [ 'categoryRepository' => $this->categoryRepository, - 'categoryResource' => $this->categoryResource + 'categoryResourceFactory' => $this->categoryResourceFactory ] ); }