/** * @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); }