Ejemplo n.º 1
0
 /**
  * Construct
  *
  * @param \Magento\Framework\App\Helper\Context $context
  * @param \Magento\Downloadable\Helper\File $fileHelper
  * @param \Magento\CatalogImportExport\Model\Import\UploaderFactory $uploaderFactory
  * @param \Magento\Framework\App\ResourceConnection $resource
  * @param \Magento\Framework\Filesystem $filesystem
  */
 public function __construct(\Magento\Framework\App\Helper\Context $context, \Magento\Downloadable\Helper\File $fileHelper, \Magento\CatalogImportExport\Model\Import\UploaderFactory $uploaderFactory, \Magento\Framework\App\ResourceConnection $resource, \Magento\Framework\Filesystem $filesystem)
 {
     parent::__construct($context);
     $this->fileHelper = $fileHelper;
     $this->fileUploader = $uploaderFactory->create();
     $this->fileUploader->init();
     $this->fileUploader->setAllowedExtensions($this->getAllowedExtensions());
     $this->fileUploader->removeValidateCallback('catalog_product_image');
     $this->connection = $resource->getConnection('write');
     $this->mediaDirectory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
 }
Ejemplo n.º 2
0
 /**
  * @magentoDataIsolation enabled
  * @magentoDataFixture mediaImportImageFixture
  *
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function testSaveMediaImage()
 {
     $this->markTestSkipped('The test is skipped due to incomplete story https://jira.corp.x.com/browse/MAGETWO-15713');
     $attribute = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Catalog\\Model\\Entity\\Attribute');
     $attribute->loadByCode('catalog_product', 'media_gallery');
     $data = implode(',', ['sku', '_attribute_set', '_type', '_product_websites', 'name', 'price', 'description', 'short_description', 'weight', 'status', 'visibility', 'tax_class_id', '_media_attribute_id', '_media_image', '_media_label', '_media_position', '_media_is_disabled']) . "\n";
     $data .= implode(',', ['test_sku', 'Default', \Magento\Catalog\Model\Product\Type::DEFAULT_TYPE, 'base', 'Product Name', '9.99', 'Product description', 'Short desc.', '1', \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED, \Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH, 0, $attribute->getId(), 'magento_image.jpg', 'Image Label', '1', '0']) . "\n";
     $data = 'data://text/plain;base64,' . base64_encode($data);
     $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
     $fixture = $objectManager->create('Magento\\ImportExport\\Model\\Import\\Source\\Csv', ['$fileOrStream' => $data]);
     foreach (\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Catalog\\Model\\Resource\\Product\\Collection') as $product) {
         $this->fail("Unexpected precondition - product exists: '{$product->getId()}'.");
     }
     $uploader = $this->getMock('Magento\\CatalogImportExport\\Model\\Import\\Uploader', ['init'], [$objectManager->create('Magento\\MediaStorage\\Helper\\File\\Storage\\Database'), $objectManager->create('Magento\\MediaStorage\\Helper\\File\\Storage'), $objectManager->create('Magento\\Framework\\Image\\AdapterFactory'), $objectManager->create('Magento\\MediaStorage\\Model\\File\\Validator\\NotProtectedExtension')]);
     $this->_uploaderFactory->expects($this->any())->method('create')->will($this->returnValue($uploader));
     $this->_model->setSource($fixture)->setParameters(['behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND])->isDataValid();
     $this->_model->importData();
     $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
     $resource = $objectManager->get('Magento\\Catalog\\Model\\Resource\\Product');
     $productId = $resource->getIdBySku('test_sku');
     // fixture
     $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Catalog\\Model\\Product');
     $product->load($productId);
     $gallery = $product->getMediaGalleryImages();
     $this->assertInstanceOf('Magento\\Framework\\Data\\Collection', $gallery);
     $items = $gallery->getItems();
     $this->assertCount(1, $items);
     $item = array_pop($items);
     $this->assertInstanceOf('Magento\\Framework\\Object', $item);
     $this->assertEquals('magento_image.jpg', $item->getFile());
     $this->assertEquals('Image Label', $item->getLabel());
 }
Ejemplo n.º 3
0
 /**
  * Returns an object for upload a media files
  *
  * @return \Magento\CatalogImportExport\Model\Import\Uploader
  * @throws \Magento\Framework\Exception\LocalizedException
  */
 protected function _getUploader()
 {
     if (is_null($this->_fileUploader)) {
         $this->_fileUploader = $this->_uploaderFactory->create();
         $this->_fileUploader->init();
         $dirConfig = DirectoryList::getDefaultConfig();
         $dirAddon = $dirConfig[DirectoryList::MEDIA][DirectoryList::PATH];
         $DS = DIRECTORY_SEPARATOR;
         if (!empty($this->_parameters[\Magento\ImportExport\Model\Import::FIELD_NAME_IMG_FILE_DIR])) {
             $tmpPath = $this->_parameters[\Magento\ImportExport\Model\Import::FIELD_NAME_IMG_FILE_DIR];
         } else {
             $tmpPath = $dirAddon . $DS . $this->_mediaDirectory->getRelativePath('import');
         }
         if (!$this->_fileUploader->setTmpDir($tmpPath)) {
             throw new \Magento\Framework\Exception\LocalizedException(__('File directory \'%1\' is not readable.', $tmpPath));
         }
         $destinationDir = "catalog/product";
         $destinationPath = $dirAddon . $DS . $this->_mediaDirectory->getRelativePath($destinationDir);
         $this->_mediaDirectory->create($destinationPath);
         if (!$this->_fileUploader->setDestDir($destinationPath)) {
             throw new \Magento\Framework\Exception\LocalizedException(__('File directory \'%1\' is not writable.', $destinationPath));
         }
     }
     return $this->_fileUploader;
 }
Ejemplo n.º 4
0
 /**
  * Returns an object for upload a media files
  *
  * @return \Magento\CatalogImportExport\Model\Import\Uploader
  * @throws \Magento\Framework\Model\Exception
  */
 protected function _getUploader()
 {
     if (is_null($this->_fileUploader)) {
         $this->_fileUploader = $this->_uploaderFactory->create();
         $this->_fileUploader->init();
         $tmpPath = $this->_mediaDirectory->getAbsolutePath('import');
         if (!$this->_fileUploader->setTmpDir($tmpPath)) {
             throw new \Magento\Framework\Model\Exception(sprintf("File directory '%s' is not readable.", $tmpPath));
         }
         $destinationDir = "catalog/product";
         $destinationPath = $this->_mediaDirectory->getAbsolutePath($destinationDir);
         $this->_mediaDirectory->create($destinationDir);
         if (!$this->_fileUploader->setDestDir($destinationPath)) {
             throw new \Magento\Framework\Model\Exception(sprintf("File directory '%s' is not writable.", $destinationPath));
         }
     }
     return $this->_fileUploader;
 }