/** * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ protected function setUp() { $this->setCollectionFactory = $this->getMock('Magento\\Eav\\Model\\Resource\\Entity\\Attribute\\Set\\CollectionFactory', ['create'], [], '', false); $this->setCollection = $this->getMock('Magento\\Eav\\Model\\Resource\\Entity\\Attribute\\Set\\Collection', ['setEntityTypeFilter'], [], '', false); $this->setCollectionFactory->expects($this->any())->method('create')->will($this->returnValue($this->setCollection)); $item = new \Magento\Framework\Object(['id' => 1, 'attribute_set_name' => 'Default', '_attribute_set' => 'Default']); $this->setCollection->expects($this->any())->method('setEntityTypeFilter')->will($this->returnValue([$item])); $this->attrCollectionFactory = $this->getMock('Magento\\Catalog\\Model\\Resource\\Product\\Attribute\\CollectionFactory', ['create'], [], '', false); $this->attrCollection = $this->getMock('\\Magento\\Catalog\\Model\\Resource\\Product\\Attribute\\Collection', ['setAttributeSetFilter'], [], '', false); $superAttributes = []; foreach ($this->_getSuperAttributes() as $superAttribute) { $item = $this->getMock('\\Magento\\Eav\\Model\\Entity\\Attribute\\AbstractAttribute', ['isStatic'], $superAttribute, '', false); $item->setData($superAttribute); $item->method('isStatic')->will($this->returnValue(false)); $superAttributes[] = $item; } $this->attrCollectionFactory->expects($this->any())->method('create')->will($this->returnValue($this->attrCollection)); $this->attrCollection->expects($this->any())->method('setAttributeSetFilter')->will($this->returnValue($superAttributes)); $this->_entityModel = $this->getMock('Magento\\CatalogImportExport\\Model\\Import\\Product', ['getNewSku', 'getOldSku', 'getNextBunch', 'isRowAllowedToImport', 'getConnection', 'getAttrSetIdToName', 'getAttributeOptions'], [], '', false); $this->params = [0 => $this->_entityModel, 1 => 'configurable']; $this->objectManagerHelper = new ObjectManagerHelper($this); $this->_connection = $this->getMock('Magento\\Framework\\DB\\Adapter\\Pdo\\Mysql', ['select', 'fetchAll', 'fetchPairs', 'joinLeft', 'insertOnDuplicate', 'delete', 'quoteInto'], [], '', false); $this->select = $this->getMock('Magento\\Framework\\DB\\Select', ['from', 'where', 'joinLeft', 'getAdapter'], [], '', false); $this->select->expects($this->any())->method('from')->will($this->returnSelf()); $this->select->expects($this->any())->method('where')->will($this->returnSelf()); $this->select->expects($this->any())->method('joinLeft')->will($this->returnSelf()); $this->_connection->expects($this->any())->method('select')->will($this->returnValue($this->select)); $adapter = $this->getMock('Magento\\Framework\\DB\\Adapter\\Pdo\\Mysql', [], [], '', false); $adapter->expects($this->any())->method('quoteInto')->will($this->returnValue('query')); $this->select->expects($this->any())->method('getAdapter')->willReturn($adapter); $this->_connection->expects($this->any())->method('insertOnDuplicate')->willReturnSelf(); $this->_connection->expects($this->any())->method('delete')->willReturnSelf(); $this->_connection->expects($this->any())->method('quoteInto')->willReturn(''); $this->_connection->expects($this->any())->method('fetchPairs')->will($this->returnValue([])); $this->resource = $this->getMock('\\Magento\\Framework\\App\\Resource', ['getConnection', 'getTableName'], [], '', false); $this->resource->expects($this->any())->method('getConnection')->will($this->returnValue($this->_connection)); $this->resource->expects($this->any())->method('getTableName')->will($this->returnValue('tableName')); $this->_entityModel->expects($this->any())->method('getConnection')->will($this->returnValue($this->_connection)); $this->productCollectionFactory = $this->getMock('\\Magento\\Catalog\\Model\\Resource\\Product\\CollectionFactory', ['create'], [], '', false); $this->productCollection = $this->getMock('\\Magento\\Catalog\\Model\\Resource\\Product\\Collection', ['addFieldToFilter', 'addAttributeToSelect'], [], '', false); $products = []; $testProducts = [['id' => 1, 'attribute_set_id' => 4, 'testattr2' => 1, 'testattr3' => 1], ['id' => 2, 'attribute_set_id' => 4, 'testattr2' => 1, 'testattr3' => 1], ['id' => 20, 'attribute_set_id' => 4, 'testattr2' => 1, 'testattr3' => 1]]; foreach ($testProducts as $product) { $item = $this->getMock('\\Magento\\Framework\\Object', ['getAttributeSetId'], [], '', false); $item->setData($product); $item->expects($this->any())->method('getAttributeSetId')->willReturn(4); $products[] = $item; } $this->productCollectionFactory->expects($this->any())->method('create')->will($this->returnValue($this->productCollection)); $this->productCollection->expects($this->any())->method('addFieldToFilter')->will($this->returnValue($this->productCollection)); $this->productCollection->expects($this->any())->method('addAttributeToSelect')->will($this->returnValue($products)); $this->_entityModel->expects($this->any())->method('getAttributeOptions')->will($this->returnValue(['attr2val1' => '1', 'attr2val2' => '2', 'attr2val3' => '3', 'testattr3v1' => '4', 'testattr30v1' => '4', 'testattr3v2' => '5', 'testattr3v3' => '6'])); $this->configurable = $this->objectManagerHelper->getObject('Magento\\ConfigurableImportExport\\Model\\Import\\Product\\Type\\Configurable', ['attrSetColFac' => $this->setCollectionFactory, 'prodAttrColFac' => $this->attrCollectionFactory, 'params' => $this->params, 'resource' => $this->resource, 'productColFac' => $this->productCollectionFactory]); }
/** * {@inheritdoc} */ public function getData() { $items = []; $skippedItems = 0; foreach ($this->getCollection()->getItems() as $attribute) { if ($this->configurableAttributeHandler->isAttributeApplicable($attribute)) { $items[] = $attribute->toArray(); } else { $skippedItems++; } } return ['totalRecords' => $this->collection->getSize() - $skippedItems, 'items' => $items]; }
/** * {@inheritdoc} */ public function resolve(array $fields) { $resolvedFields = []; foreach ($fields as $field) { if ('*' === $field) { $resolvedFields = [$this->fieldFactory->create(['attributeId' => null, 'column' => 'data_index', 'type' => FieldInterface::TYPE_FULLTEXT])]; break; } $attribute = $this->attributeCollection->getItemByColumnValue('attribute_code', $field); $attributeId = $attribute ? $attribute->getId() : 0; $resolvedFields[$field] = $this->fieldFactory->create(['attributeId' => $attributeId, 'column' => 'data_index', 'type' => FieldInterface::TYPE_FULLTEXT]); } return $resolvedFields; }
public function testGetPrefixes() { $entityTypeId = 3; /** @var \Magento\Eav\Model\Entity\Type|\PHPUnit_Framework_MockObject_MockObject $entityType */ $entityType = $this->getMockBuilder('Magento\\Eav\\Model\\Entity\\Type')->disableOriginalConstructor()->getMock(); $entityType->expects($this->once())->method('getId')->will($this->returnValue($entityTypeId)); /** @var AbstractFrontend|\PHPUnit_Framework_MockObject_MockObject $frontend */ $frontend = $this->getMockBuilder('Magento\\Eav\\Model\\Entity\\Attribute\\Frontend\\AbstractFrontend')->setMethods(['getLabel'])->disableOriginalConstructor()->getMockForAbstractClass(); $frontend->expects($this->once())->method('getLabel')->will($this->returnValue('testLabel')); $this->attributeCollection->expects($this->once())->method('setEntityTypeFilter')->with($this->equalTo($entityTypeId)); $this->attributeCollection->expects($this->once())->method('setFrontendInputTypeFilter')->with($this->equalTo('media_image')); $this->attribute->expects($this->once())->method('getAttributeCode')->will($this->returnValue('attributeCode')); $this->attribute->expects($this->once())->method('getFrontend')->will($this->returnValue($frontend)); $this->attributeCollection->expects($this->any())->method('getIterator')->will($this->returnValue(new \ArrayIterator([$this->attribute]))); $this->eavConfig->expects($this->any())->method('getEntityType')->with($this->equalTo(Product::ENTITY))->will($this->returnValue($entityType)); $this->assertEquals([['field' => 'attributeCode_', 'label' => 'testLabel']], $this->model->getPrefixes()); }
/** * Initialize attributes parameters for all attributes' sets. * * @return $this */ protected function _initAttributes() { // temporary storage for attributes' parameters to avoid double querying inside the loop $attributesCache = []; foreach ($this->_attrSetColFac->create()->setEntityTypeFilter($this->_entityModel->getEntityTypeId()) as $attributeSet) { foreach ($this->_prodAttrColFac->create()->setAttributeSetFilter($attributeSet->getId()) as $attribute) { $attributeCode = $attribute->getAttributeCode(); $attributeId = $attribute->getId(); if ($attribute->getIsVisible() || in_array($attributeCode, $this->_forcedAttributesCodes)) { if (!isset($attributesCache[$attributeId])) { $attributesCache[$attributeId] = ['id' => $attributeId, 'code' => $attributeCode, 'is_global' => $attribute->getIsGlobal(), 'is_required' => $attribute->getIsRequired(), 'is_unique' => $attribute->getIsUnique(), 'frontend_label' => $attribute->getFrontendLabel(), 'is_static' => $attribute->isStatic(), 'apply_to' => $attribute->getApplyTo(), 'type' => \Magento\ImportExport\Model\Import::getAttributeType($attribute), 'default_value' => strlen($attribute->getDefaultValue()) ? $attribute->getDefaultValue() : null, 'options' => $this->_entityModel->getAttributeOptions($attribute, $this->_indexValueAttributes)]; } $this->_addAttributeParams($attributeSet->getAttributeSetName(), $attributesCache[$attributeId], $attribute); } } } return $this; }
/** * Entity attributes collection getter. * * @return \Magento\Catalog\Model\Resource\Product\Attribute\Collection */ public function getAttributeCollection() { return $this->_attributeColFactory->create(); }
/** * Add filters to attribute collection * * @param \Magento\Catalog\Model\Resource\Product\Attribute\Collection $collection * @return \Magento\Catalog\Model\Resource\Product\Attribute\Collection */ protected function _prepareAttributeCollection($collection) { $collection->addIsFilterableFilter(); return $collection; }
/** * @param \Magento\Catalog\Model\Resource\Product\Attribute\Collection $collection * @return \Magento\Catalog\Model\Resource\Product\Attribute\Collection */ protected function _prepareAttributeCollection($collection) { $collection->addDisplayInAdvancedSearchFilter()->addVisibleFilter(); return $collection; }
/** * Attach Attributes By Id * * @param string $attributeSetName * @param array $attributeIds * @return void */ protected function attachAttributesById($attributeSetName, $attributeIds) { foreach ($this->_prodAttrColFac->create()->addFieldToFilter('main_table.attribute_id', ['in' => $attributeIds]) as $attribute) { $attributeCode = $attribute->getAttributeCode(); $attributeId = $attribute->getId(); if ($attribute->getIsVisible() || in_array($attributeCode, $this->_forcedAttributesCodes)) { self::$commonAttributesCache[$attributeId] = ['id' => $attributeId, 'code' => $attributeCode, 'is_global' => $attribute->getIsGlobal(), 'is_required' => $attribute->getIsRequired(), 'is_unique' => $attribute->getIsUnique(), 'frontend_label' => $attribute->getFrontendLabel(), 'is_static' => $attribute->isStatic(), 'apply_to' => $attribute->getApplyTo(), 'type' => \Magento\ImportExport\Model\Import::getAttributeType($attribute), 'default_value' => strlen($attribute->getDefaultValue()) ? $attribute->getDefaultValue() : null, 'options' => $this->_entityModel->getAttributeOptions($attribute, $this->_indexValueAttributes)]; $this->_addAttributeParams($attributeSetName, self::$commonAttributesCache[$attributeId], $attribute); } } }