public function testGetTreeHasLevelField()
 {
     $rootId = \Magento\Catalog\Model\Category::TREE_ROOT_ID;
     $storeGroups = [];
     $storeId = 1;
     $rootLevel = 2;
     $level = 3;
     $this->collection->expects($this->any())->method('addAttributeToSelect')->willReturnMap([['url_key', false, $this->collection], ['is_anchor', false, $this->collection]]);
     $this->childNode->expects($this->atLeastOnce())->method('getLevel')->willReturn($level);
     $this->rootNode->expects($this->atLeastOnce())->method('getLevel')->willReturn($rootLevel);
     $this->rootNode->expects($this->once())->method('hasChildren')->willReturn(true);
     $this->rootNode->expects($this->once())->method('getChildren')->willReturn([$this->childNode]);
     $this->categoryTree->expects($this->once())->method('load')->with(null, 3)->willReturnSelf();
     $this->categoryTree->expects($this->atLeastOnce())->method('addCollectionData')->with($this->collection)->willReturnSelf();
     $this->categoryTree->expects($this->once())->method('getNodeById')->with($rootId)->willReturn($this->rootNode);
     $this->store->expects($this->atLeastOnce())->method('getId')->willReturn($storeId);
     $this->storeManager->expects($this->once())->method('getGroups')->willReturn($storeGroups);
     $this->storeManager->expects($this->atLeastOnce())->method('getStore')->willReturn($this->store);
     $this->context->expects($this->once())->method('getStoreManager')->willReturn($this->storeManager);
     $this->context->expects($this->once())->method('getRequest')->willReturn($this->request);
     $this->context->expects($this->once())->method('getEscaper')->willReturn($this->escaper);
     $this->context->expects($this->once())->method('getEventManager')->willReturn($this->eventManager);
     /** @var \Magento\Widget\Block\Adminhtml\Widget\Catalog\Category\Chooser $chooser */
     $chooser = (new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this))->getObject('Magento\\Widget\\Block\\Adminhtml\\Widget\\Catalog\\Category\\Chooser', ['categoryTree' => $this->categoryTree, 'context' => $this->context]);
     $chooser->setData('category_collection', $this->collection);
     $result = $chooser->getTree();
     $this->assertEquals($level, $result[0]['level']);
 }
 protected function _toOptionArray()
 {
     if (is_null($this->options)) {
         // Create options
         $this->options = array();
         $categories = $this->categoryCollection->getItems();
         foreach ($categories as $category) {
             $pathIds = $category->getPathIds();
             // skip root and default categories
             if (count($pathIds) < 3) {
                 continue;
             }
             // remove root and default from path
             $pathIds = array_slice($pathIds, 2);
             $path = [];
             foreach ($pathIds as $pathId) {
                 if (isset($categories[$pathId])) {
                     $path[] = $categories[$pathId]->getName();
                 }
             }
             $fullName = implode('/', $path);
             $this->options[] = ['value' => $category->getId(), 'label' => $fullName];
         }
         // Sort options
         usort($this->options, function ($option1, $option2) {
             return strcmp($option1['label'], $option2['label']);
         });
     }
     return $this->options;
 }
Beispiel #3
0
 /**
  * @return \Magento\Catalog\Model\ResourceModel\Category\Collection
  */
 public function getCategoryCollection()
 {
     if (is_null($this->categoryCollection)) {
         $this->categoryCollection = $this->getArticle()->getSelectedCategoriesCollection()->setStore($this->_storeManager->getStore())->addAttributeToSelect(array('name', 'url_key', 'url_path'))->addAttributeToFilter('is_active', 1);
         $this->categoryCollection->getSelect()->order('at_position.position');
     }
     return $this->categoryCollection;
 }
 public function testToOptionArray()
 {
     $expect = [['label' => __('-- Please Select a Category --'), 'value' => ''], ['label' => 'name', 'value' => 3]];
     $this->categoryCollection->expects($this->once())->method('addAttributeToSelect')->with($this->equalTo('name'))->will($this->returnValue($this->categoryCollection));
     $this->categoryCollection->expects($this->once())->method('addRootLevelFilter')->will($this->returnValue($this->categoryCollection));
     $this->categoryCollection->expects($this->once())->method('load');
     $this->categoryCollection->expects($this->any())->method('getIterator')->will($this->returnValue(new \ArrayIterator([$this->category])));
     $this->category->expects($this->once())->method('getName')->will($this->returnValue('name'));
     $this->category->expects($this->once())->method('getId')->will($this->returnValue(3));
     $this->assertEquals($expect, $this->model->toOptionArray());
 }
 protected function setUp()
 {
     parent::setUp();
     $this->categoryCollectionFactoryMock = $this->getMockBuilder(CategoryCollectionFactory::class)->setMethods(['create'])->disableOriginalConstructor()->getMock();
     $this->dbHelperMock = $this->getMockBuilder(DbHelper::class)->disableOriginalConstructor()->getMock();
     $this->urlBuilderMock = $this->getMockBuilder(UrlInterface::class)->getMockForAbstractClass();
     $this->storeMock = $this->getMockBuilder(Store::class)->disableOriginalConstructor()->getMock();
     $this->categoryCollectionMock = $this->getMockBuilder(CategoryCollection::class)->disableOriginalConstructor()->getMock();
     $this->categoryCollectionFactoryMock->expects($this->any())->method('create')->willReturn($this->categoryCollectionMock);
     $this->categoryCollectionMock->expects($this->any())->method('addAttributeToSelect')->willReturnSelf();
     $this->categoryCollectionMock->expects($this->any())->method('addAttributeToFilter')->willReturnSelf();
     $this->categoryCollectionMock->expects($this->any())->method('setStoreId')->willReturnSelf();
     $this->categoryCollectionMock->expects($this->any())->method('getIterator')->willReturn(new \ArrayIterator([]));
 }
Beispiel #6
0
 /**
  * @SuppressWarnings(PHPMD.CamelCaseMethodName)
  * {@inheritDoc}
  */
 protected function _afterLoad()
 {
     parent::_afterLoad();
     foreach ($this->_items as $item) {
         $this->getVirtualAttributeBackend()->afterLoad($item);
     }
     return $this;
 }
 /**
  * Test method
  */
 public function testSkipGenerationForNotStoreRootCategory()
 {
     $this->product->expects($this->any())->method('getStoreId')->will($this->returnValue(1));
     $this->product->expects($this->never())->method('getStoreIds');
     $category = $this->getMock('Magento\\Catalog\\Model\\Category', [], [], '', false);
     $category->expects($this->any())->method('getParentIds')->will($this->returnValue(['root-id', 'root-for-store-id']));
     $store = $this->getMockBuilder('Magento\\Store\\Model\\Store')->disableOriginalConstructor()->getMock();
     $store->expects($this->any())->method('getRootCategoryId')->will($this->returnValue('not-root-id'));
     $this->storeManager->expects($this->any())->method('getStore')->will($this->returnValue($store));
     $this->categoriesCollection->expects($this->any())->method('getIterator')->willReturn(new \ArrayIterator([$category]));
     $this->initObjectRegistryFactory([]);
     $canonical = new \Magento\UrlRewrite\Service\V1\Data\UrlRewrite();
     $canonical->setTargetPath('category-1')->setStoreId(1);
     $this->canonicalUrlRewriteGenerator->expects($this->any())->method('generate')->will($this->returnValue([$canonical]));
     $this->categoriesUrlRewriteGenerator->expects($this->any())->method('generate')->will($this->returnValue([]));
     $this->currentUrlRewritesRegenerator->expects($this->any())->method('generate')->will($this->returnValue([]));
     $this->assertEquals(['category-1-1' => $canonical], $this->productUrlRewriteGenerator->generate($this->product));
 }
Beispiel #8
0
 /**
  * Initialize categories ID to text-path hash.
  *
  * @return $this
  */
 protected function initCategories()
 {
     $collection = $this->_categoryColFactory->create()->addNameToResult();
     /* @var $collection \Magento\Catalog\Model\ResourceModel\Category\Collection */
     foreach ($collection as $category) {
         $structure = preg_split('#/+#', $category->getPath());
         $pathSize = count($structure);
         if ($pathSize > 1) {
             $path = [];
             for ($i = 1; $i < $pathSize; $i++) {
                 $path[] = $collection->getItemById($structure[$i])->getName();
             }
             $this->_rootCategories[$category->getId()] = array_shift($path);
             if ($pathSize > 2) {
                 $this->_categories[$category->getId()] = implode('/', $path);
             }
         }
     }
     return $this;
 }
 /**
  * Retrieve inactive category item ids
  *
  * @param Collection $collection
  * @param int $storeId
  * @return array
  */
 protected function _getInactiveItemIds($collection, $storeId)
 {
     $linkField = $this->metadataPool->getMetadata(CategoryInterface::class)->getLinkField();
     $intTable = $this->_coreResource->getTableName('catalog_category_entity_int');
     $select = $collection->getAllIdsSql()->joinInner(['d' => $intTable], "e.{$linkField} = d.{$linkField}", [])->joinLeft(['c' => $intTable], "c.attribute_id = :attribute_id AND c.store_id = :store_id AND c.{$linkField} = d.{$linkField}", [])->where('d.attribute_id = :attribute_id')->where('d.store_id = :zero_store_id')->where($this->_conn->getCheckSql('c.value_id > 0', 'c.value', 'd.value') . ' = :cond');
     return $this->_conn->fetchCol($select, ['attribute_id' => $this->_catalogCategory->getIsActiveAttributeId(), 'store_id' => $storeId, 'zero_store_id' => 0, 'cond' => 0]);
 }
Beispiel #10
0
 /**
  * @SuppressWarnings(PHPMD.CamelCaseMethodName)
  *
  * {@inheritDoc}
  */
 protected function _afterLoad()
 {
     // Resort items according the search response.
     $originalItems = $this->_items;
     $this->_items = [];
     foreach ($this->queryResponse->getIterator() as $document) {
         $documentId = $document->getId();
         if (isset($originalItems[$documentId])) {
             $originalItems[$documentId]->setDocumentScore($document->getScore());
             $originalItems[$documentId]->setDocumentSource($document->getSource());
             $this->_items[$documentId] = $originalItems[$documentId];
         }
     }
     return parent::_afterLoad();
 }
Beispiel #11
0
 /**
  * @return void
  */
 protected function prepareCollection()
 {
     $storeId = $this->storeManager->getStore()->getId();
     $this->categoryCollection->addAttributeToSelect('name')->addAttributeToSelect('is_active')->setProductStoreId($storeId)->setLoadProductCount(true)->setStoreId($storeId);
 }