|
| 1 | +<?php |
| 2 | +/** |
| 3 | + * Copyright © Magento, Inc. All rights reserved. |
| 4 | + * See COPYING.txt for license details. |
| 5 | + */ |
| 6 | + |
| 7 | +use Magento\Catalog\Api\CategoryLinkManagementInterface; |
| 8 | +use Magento\Catalog\Api\CategoryLinkRepositoryInterface; |
| 9 | +use Magento\Catalog\Api\Data\CategoryInterfaceFactory; |
| 10 | +use Magento\Catalog\Api\ProductRepositoryInterface; |
| 11 | +use Magento\Catalog\Model\Product; |
| 12 | +use Magento\Eav\Model\Config; |
| 13 | +use Magento\Store\Api\WebsiteRepositoryInterface; |
| 14 | +use Magento\Store\Model\StoreManagerInterface; |
| 15 | +use Magento\TestFramework\Helper\Bootstrap; |
| 16 | + |
| 17 | +$objectManager = Bootstrap::getObjectManager(); |
| 18 | + |
| 19 | +/** @var WebsiteRepositoryInterface $websiteRepository */ |
| 20 | +$websiteRepository = $objectManager->get(WebsiteRepositoryInterface::class); |
| 21 | +$baseWebsite = $websiteRepository->get('base'); |
| 22 | +$rootCategoryId = $baseWebsite->getDefaultStore()->getRootCategoryId(); |
| 23 | + |
| 24 | +/** @var StoreManagerInterface $storeManager */ |
| 25 | +$storeManager = $objectManager->get(StoreManagerInterface::class); |
| 26 | + |
| 27 | +$defaultAttributeSet = $objectManager->get(Config::class)->getEntityType(Product::ENTITY)->getDefaultAttributeSetId(); |
| 28 | +$productRepository = $objectManager->get(ProductRepositoryInterface::class); |
| 29 | +$categoryFactory = $objectManager->get(CategoryInterfaceFactory::class); |
| 30 | + |
| 31 | +$categoryLinkRepository = $objectManager->create( |
| 32 | + CategoryLinkRepositoryInterface::class, |
| 33 | + [ |
| 34 | + 'productRepository' => $productRepository, |
| 35 | + ] |
| 36 | +); |
| 37 | + |
| 38 | +/** @var Magento\Catalog\Api\CategoryLinkManagementInterface $categoryLinkManagement */ |
| 39 | +$categoryLinkManagement = $objectManager->get(CategoryLinkManagementInterface::class); |
| 40 | +$reflectionClass = new \ReflectionClass(get_class($categoryLinkManagement)); |
| 41 | +$properties = [ |
| 42 | + 'productRepository' => $productRepository, |
| 43 | + 'categoryLinkRepository' => $categoryLinkRepository, |
| 44 | +]; |
| 45 | +foreach ($properties as $key => $value) { |
| 46 | + if ($reflectionClass->hasProperty($key)) { |
| 47 | + $reflectionProperty = $reflectionClass->getProperty($key); |
| 48 | + $reflectionProperty->setAccessible(true); |
| 49 | + $reflectionProperty->setValue($categoryLinkManagement, $value); |
| 50 | + } |
| 51 | +} |
| 52 | + |
| 53 | +/** |
| 54 | + * After installation system has two categories: root one with ID:1 and Default category with ID:2 |
| 55 | + */ |
| 56 | +/** @var $category \Magento\Catalog\Model\Category */ |
| 57 | +$category = $categoryFactory->create(); |
| 58 | +$category->isObjectNew(true); |
| 59 | +$category->setId(3) |
| 60 | + ->setName('Category 1') |
| 61 | + ->setParentId(2) |
| 62 | + ->setPath('1/2/3') |
| 63 | + ->setLevel(2) |
| 64 | + ->setAvailableSortBy('name') |
| 65 | + ->setDefaultSortBy('name') |
| 66 | + ->setIsActive(true) |
| 67 | + ->setPosition(2) |
| 68 | + ->save(); |
| 69 | + |
| 70 | +$category = $categoryFactory->create(); |
| 71 | +$category->isObjectNew(true); |
| 72 | +$category->setId(4) |
| 73 | + ->setName('Category 1.1') |
| 74 | + ->setParentId(3) |
| 75 | + ->setPath('1/2/3/4') |
| 76 | + ->setLevel(3) |
| 77 | + ->setAvailableSortBy('name') |
| 78 | + ->setDefaultSortBy('name') |
| 79 | + ->setIsActive(true) |
| 80 | + ->setIsAnchor(true) |
| 81 | + ->setPosition(2) |
| 82 | + ->setDescription('Category 1.1 description.') |
| 83 | + ->save(); |
| 84 | + |
| 85 | +$category = $categoryFactory->create(); |
| 86 | +$category->isObjectNew(true); |
| 87 | +$category->setId(6) |
| 88 | + ->setName('Category 2') |
| 89 | + ->setParentId(2) |
| 90 | + ->setPath('1/2/6') |
| 91 | + ->setLevel(2) |
| 92 | + ->setAvailableSortBy('name') |
| 93 | + ->setDefaultSortBy('name') |
| 94 | + ->setIsActive(true) |
| 95 | + ->setPosition(3) |
| 96 | + ->save(); |
| 97 | + |
| 98 | +$category = $categoryFactory->create(); |
| 99 | +$category->isObjectNew(true); |
| 100 | +$category->setId(12) |
| 101 | + ->setName('Category 12') |
| 102 | + ->setParentId(2) |
| 103 | + ->setPath('1/2/12') |
| 104 | + ->setLevel(2) |
| 105 | + ->setAvailableSortBy('name') |
| 106 | + ->setDefaultSortBy('name') |
| 107 | + ->setIsActive(true) |
| 108 | + ->setPosition(1) |
| 109 | + ->save(); |
| 110 | + |
| 111 | +$category = $categoryFactory->create(); |
| 112 | +$category->isObjectNew(true); |
| 113 | +$category->setId(13) |
| 114 | + ->setName('Category 1.2') |
| 115 | + ->setParentId(3) |
| 116 | + ->setPath('1/2/3/13') |
| 117 | + ->setLevel(3) |
| 118 | + ->setDescription('Its a description of Test Category 1.2') |
| 119 | + ->setAvailableSortBy('name') |
| 120 | + ->setDefaultSortBy('name') |
| 121 | + ->setIsActive(true) |
| 122 | + ->setIsAnchor(true) |
| 123 | + ->setPosition(1) |
| 124 | + ->save(); |
0 commit comments