/** * Create instance of entity adapter and return it * * @throws \Magento\Framework\Exception\LocalizedException * @return \Magento\ImportExport\Model\Import\Entity\AbstractEntity|\Magento\ImportExport\Model\Import\AbstractEntity */ protected function _getEntityAdapter() { if (!$this->_entityAdapter) { $entities = $this->_importConfig->getEntities(); if (isset($entities[$this->getEntity()])) { try { $this->_entityAdapter = $this->_entityFactory->create($entities[$this->getEntity()]['model']); } catch (\Exception $e) { $this->_logger->critical($e); throw new \Magento\Framework\Exception\LocalizedException(__('Please enter a correct entity model.')); } if (!$this->_entityAdapter instanceof \Magento\ImportExport\Model\Import\Entity\AbstractEntity && !$this->_entityAdapter instanceof \Magento\ImportExport\Model\Import\AbstractEntity) { throw new \Magento\Framework\Exception\LocalizedException(__('The entity adapter object must be an instance of %1 or %2.', 'Magento\\ImportExport\\Model\\Import\\Entity\\AbstractEntity', 'Magento\\ImportExport\\Model\\Import\\AbstractEntity')); } // check for entity codes integrity if ($this->getEntity() != $this->_entityAdapter->getEntityTypeCode()) { throw new \Magento\Framework\Exception\LocalizedException(__('The input entity code is not equal to entity adapter code.')); } } else { throw new \Magento\Framework\Exception\LocalizedException(__('Please enter a correct entity.')); } $this->_entityAdapter->setParameters($this->getData()); } return $this->_entityAdapter; }
/** * Cover isReportEntityType(). * * @dataProvider isReportEntityTypeExceptionDataProvider * @expectedException \Magento\Framework\Exception\LocalizedException */ public function testIsReportEntityTypeException($entity, $getEntitiesResult, $getEntityResult, $expectedResult) { $importMock = $this->getMockBuilder('\\Magento\\ImportExport\\Model\\Import')->disableOriginalConstructor()->setMethods(['getEntity', '_getEntityAdapter', 'getEntityTypeCode', 'isNeedToLogInHistory'])->getMock(); $importMock->expects($this->any())->method('_getEntityAdapter')->willReturnSelf(); $importMock->expects($this->any())->method('getEntityTypeCode')->willReturn('catalog_product'); $this->_importConfig->expects($this->any())->method('getEntities')->willReturn($getEntitiesResult); $this->_entityFactory->expects($this->any())->method('create')->willReturn(''); $this->setPropertyValue($importMock, '_importConfig', $this->_importConfig); $this->setPropertyValue($importMock, '_entityFactory', $this->_entityFactory); $importMock->expects($this->any())->method('getEntity')->willReturn($getEntityResult); $actualResult = $importMock->isReportEntityType($entity); $this->assertEquals($expectedResult, $actualResult); }
/** * Retrieve processed reports entity types * * @param string|null $entity * @return bool * @throws \Magento\Framework\Exception\LocalizedException */ public function isReportEntityType($entity = null) { $result = false; if ($entity !== null && $this->_getEntityAdapter()->getEntityTypeCode() != $entity) { $entities = $this->_importConfig->getEntities(); if (isset($entities[$this->getEntity()])) { try { $adapter = $this->_entityFactory->create($entities[$entity]['model']); $result = $adapter->isNeedToLogInHistory(); } catch (\Exception $e) { throw new \Magento\Framework\Exception\LocalizedException(__('Please enter a correct entity model')); } } else { throw new \Magento\Framework\Exception\LocalizedException(__('Please enter a correct entity model')); } } else { $result = $this->_getEntityAdapter()->isNeedToLogInHistory(); } return $result; }