Example #1
0
 /**
  * @magentoDataIsolation enabled
  * @magentoDataFixture mediaImportImageFixture
  *
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function testSaveMediaImage()
 {
     $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
     $filesystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(\Magento\Framework\Filesystem::class);
     $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
     $source = $this->objectManager->create(\Magento\ImportExport\Model\Import\Source\Csv::class, ['file' => __DIR__ . '/_files/import_media.csv', 'directory' => $directory]);
     $this->_model->setParameters(['behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND, 'entity' => 'catalog_product', 'import_images_file_dir' => 'pub/media/import']);
     $appParams = \Magento\TestFramework\Helper\Bootstrap::getInstance()->getBootstrap()->getApplication()->getInitParams()[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS];
     $uploader = $this->_model->getUploader();
     $destDir = $directory->getRelativePath($appParams[DirectoryList::MEDIA][DirectoryList::PATH] . '/catalog/product');
     $tmpDir = $directory->getRelativePath($appParams[DirectoryList::MEDIA][DirectoryList::PATH] . '/import');
     $directory->create($destDir);
     $this->assertTrue($uploader->setDestDir($destDir));
     $this->assertTrue($uploader->setTmpDir($tmpDir));
     $errors = $this->_model->setSource($source)->validateData();
     $this->assertTrue($errors->getErrorsCount() == 0);
     $this->_model->importData();
     $this->assertTrue($this->_model->getErrorAggregator()->getErrorsCount() == 0);
     $resource = $objectManager->get(\Magento\Catalog\Model\ResourceModel\Product::class);
     $productId = $resource->getIdBySku('simple_new');
     $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(\Magento\Catalog\Model\Product::class);
     $product->load($productId);
     $this->assertEquals('/m/a/magento_image.jpg', $product->getData('swatch_image'));
     $gallery = $product->getMediaGalleryImages();
     $this->assertInstanceOf(\Magento\Framework\Data\Collection::class, $gallery);
     $items = $gallery->getItems();
     $this->assertCount(1, $items);
     $item = array_pop($items);
     $this->assertInstanceOf(\Magento\Framework\DataObject::class, $item);
     $this->assertEquals('/m/a/magento_image.jpg', $item->getFile());
     $this->assertEquals('Image Label', $item->getLabel());
 }
 /**
  * Test for validation of ambiguous data
  *
  * @param array $rowData
  * @param array $errors
  * @param string|null $behavior
  * @param int $numberOfValidations
  *
  * @covers \Magento\CatalogImportExport\Model\Import\Product\Option::validateAmbiguousData
  * @covers \Magento\CatalogImportExport\Model\Import\Product\Option::_findNewOptionsWithTheSameTitles
  * @covers \Magento\CatalogImportExport\Model\Import\Product\Option::_findOldOptionsWithTheSameTitles
  * @covers \Magento\CatalogImportExport\Model\Import\Product\Option::_findNewOldOptionsTypeMismatch
  * @covers \Magento\CatalogImportExport\Model\Import\Product\Option::_saveNewOptionData
  * @dataProvider validateAmbiguousDataDataProvider
  */
 public function testValidateAmbiguousData(array $rowData, array $errors, $behavior = null, $numberOfValidations = 1)
 {
     $this->_testStores = ['admin' => 0];
     $this->setUp();
     if ($behavior) {
         $this->_modelMock->setParameters(['behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND]);
     }
     $this->_bypassModelMethodGetMultiRowFormat($rowData);
     for ($i = 0; $i < $numberOfValidations; $i++) {
         $this->_modelMock->validateRow($rowData, $i);
     }
     if (empty($errors)) {
         $this->assertTrue($this->_modelMock->validateAmbiguousData());
     } else {
         $this->assertFalse($this->_modelMock->validateAmbiguousData());
     }
     $resultErrors = $this->_productEntity->getErrorAggregator()->getRowsGroupedByErrorCode([], [], false);
     $this->assertEquals($errors, $resultErrors);
 }