Skip to content

Commit dec4f2a

Browse files
author
OlgaVasyltsun
committed
MC-20449: [Integration Test]Hide product images via hide_from_product_page attribute during import CSV
1 parent 0714971 commit dec4f2a

File tree

3 files changed

+112
-20
lines changed

3 files changed

+112
-20
lines changed

dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php

Lines changed: 99 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -917,15 +917,15 @@ public function testSaveMediaImageError()
917917
*/
918918
public static function mediaImportImageFixture()
919919
{
920-
/** @var \Magento\Framework\Filesystem\Directory\Write $mediaDirectory */
921-
$mediaDirectory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
920+
/** @var \Magento\Framework\Filesystem\Directory\Write $varDirectory */
921+
$varDirectory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
922922
\Magento\Framework\Filesystem::class
923923
)->getDirectoryWrite(
924-
DirectoryList::MEDIA
924+
DirectoryList::VAR_DIR
925925
);
926926

927-
$mediaDirectory->create('import');
928-
$dirPath = $mediaDirectory->getAbsolutePath('import');
927+
$varDirectory->create('import' . DIRECTORY_SEPARATOR . 'images');
928+
$dirPath = $varDirectory->getAbsolutePath('import' . DIRECTORY_SEPARATOR . 'images');
929929

930930
$items = [
931931
[
@@ -968,13 +968,15 @@ public static function mediaImportImageFixture()
968968
*/
969969
public static function mediaImportImageFixtureRollback()
970970
{
971-
/** @var \Magento\Framework\Filesystem\Directory\Write $mediaDirectory */
972-
$mediaDirectory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
971+
$fileSystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
973972
\Magento\Framework\Filesystem::class
974-
)->getDirectoryWrite(
975-
DirectoryList::MEDIA
976973
);
977-
$mediaDirectory->delete('import');
974+
/** @var \Magento\Framework\Filesystem\Directory\Write $mediaDirectory */
975+
$mediaDirectory = $fileSystem->getDirectoryWrite(DirectoryList::MEDIA);
976+
977+
/** @var \Magento\Framework\Filesystem\Directory\Write $varDirectory */
978+
$varDirectory = $fileSystem->getDirectoryWrite(DirectoryList::VAR_DIR);
979+
$varDirectory->delete('import' . DIRECTORY_SEPARATOR . 'images');
978980
$mediaDirectory->delete('catalog');
979981
}
980982

@@ -983,13 +985,13 @@ public static function mediaImportImageFixtureRollback()
983985
*/
984986
public static function mediaImportImageFixtureError()
985987
{
986-
/** @var \Magento\Framework\Filesystem\Directory\Write $mediaDirectory */
987-
$mediaDirectory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
988+
/** @var \Magento\Framework\Filesystem\Directory\Write $varDirectory */
989+
$varDirectory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
988990
\Magento\Framework\Filesystem::class
989991
)->getDirectoryWrite(
990-
DirectoryList::MEDIA
992+
DirectoryList::VAR_DIR
991993
);
992-
$dirPath = $mediaDirectory->getAbsolutePath('import');
994+
$dirPath = $varDirectory->getAbsolutePath('import' . DIRECTORY_SEPARATOR . 'images');
993995
$items = [
994996
[
995997
'source' => __DIR__ . '/_files/magento_additional_image_error.jpg',
@@ -2133,8 +2135,13 @@ private function importDataForMediaTest(string $fileName, int $expectedErrors =
21332135
$uploader = $this->_model->getUploader();
21342136

21352137
$mediaPath = $appParams[DirectoryList::MEDIA][DirectoryList::PATH];
2136-
$destDir = $directory->getRelativePath($mediaPath . '/catalog/product');
2137-
$tmpDir = $directory->getRelativePath($mediaPath . '/import');
2138+
$varPath = $appParams[DirectoryList::VAR_DIR][DirectoryList::PATH];
2139+
$destDir = $directory->getRelativePath(
2140+
$mediaPath . DIRECTORY_SEPARATOR . 'catalog' . DIRECTORY_SEPARATOR . 'product'
2141+
);
2142+
$tmpDir = $directory->getRelativePath(
2143+
$varPath . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'images'
2144+
);
21382145

21392146
$directory->create($destDir);
21402147
$this->assertTrue($uploader->setDestDir($destDir));
@@ -2581,4 +2588,80 @@ private function importFile(string $fileName): void
25812588

25822589
$this->_model->importData();
25832590
}
2591+
2592+
/**
2593+
* Hide product images via hide_from_product_page attribute during import CSV.
2594+
*
2595+
* @magentoAppIsolation enabled
2596+
* @magentoDataFixture mediaImportImageFixture
2597+
* @magentoDataFixture Magento/Catalog/_files/product_with_image.php
2598+
*/
2599+
public function testImagesAreHiddenAfterImport()
2600+
{
2601+
$expectedActiveImages = [
2602+
[
2603+
'file' => '/m/a/magento_additional_image_one.jpg',
2604+
'label' => 'Additional Image Label One',
2605+
'disabled' => '0'
2606+
],
2607+
[
2608+
'file' => '/m/a/magento_additional_image_two.jpg',
2609+
'label' => 'Additional Image Label Two',
2610+
'disabled' => '0'
2611+
],
2612+
];
2613+
2614+
$expectedHiddenImage = [
2615+
'file' => '/m/a/magento_image.jpg',
2616+
'label' => 'Image Alt Text',
2617+
'disabled' => '1'
2618+
];
2619+
$expectedAllProductImages = array_merge(
2620+
[$expectedHiddenImage],
2621+
$expectedActiveImages
2622+
);
2623+
2624+
$this->importDataForMediaTest('hide_from_product_page_images.csv');
2625+
$actualAllProductImages = [];
2626+
$product = $this->getProductBySku('simple');
2627+
2628+
// Check that new images are imported and existing image is disabled after import
2629+
$productMediaData = $product->getData('media_gallery');
2630+
2631+
if (is_array($productMediaData['images'])) {
2632+
$allProductImages = $productMediaData['images'];
2633+
$this->assertCount(3, $productMediaData['images'], 'Images are imported incorrect');
2634+
2635+
foreach($productMediaData['images'] as $image) {
2636+
$actualAllProductImages[] = [
2637+
'file' => $image['file'],
2638+
'label' => $image['label'],
2639+
'disabled' => $image['disabled'],
2640+
];
2641+
}
2642+
}
2643+
2644+
$this->assertEquals(
2645+
$expectedAllProductImages,
2646+
$actualAllProductImages,
2647+
'Images statuses are incorrect after import'
2648+
);
2649+
2650+
// Check that on storefront only enabled images are shown
2651+
$actualActiveImages = array_values($product->getMediaGalleryImages()->getItems());
2652+
$this->assertCount(2, $actualActiveImages);
2653+
2654+
foreach ($actualActiveImages as $actualActiveImage) {
2655+
$this->assertNotEquals(
2656+
$expectedHiddenImage['file'],
2657+
$actualActiveImage->getFile(),
2658+
'Image should be hidden after import'
2659+
);
2660+
$this->assertNotEquals(
2661+
$expectedHiddenImage['label'],
2662+
$actualActiveImage->getLabel(),
2663+
'Image should be hidden after import'
2664+
);
2665+
}
2666+
}
25842667
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
sku,store_view_code,attribute_set_code,product_type,categories,product_websites,name,description,short_description,weight,product_online,tax_class_name,visibility,price,special_price,special_price_from_date,special_price_to_date,url_key,meta_title,meta_keywords,meta_description,base_image,base_image_label,small_image,small_image_label,thumbnail_image,thumbnail_image_label,swatch_image,swatch_image_label1,created_at,updated_at,new_from_date,new_to_date,display_product_options_in,map_price,msrp_price,map_enabled,gift_message_available,custom_design,custom_design_from,custom_design_to,custom_layout_update,page_layout,product_options_container,msrp_display_actual_price_type,country_of_manufacture,additional_attributes,qty,out_of_stock_qty,use_config_min_qty,is_qty_decimal,allow_backorders,use_config_backorders,min_cart_qty,use_config_min_sale_qty,max_cart_qty,use_config_max_sale_qty,is_in_stock,notify_on_stock_below,use_config_notify_stock_qty,manage_stock,use_config_manage_stock,use_config_qty_increments,qty_increments,use_config_enable_qty_inc,enable_qty_increments,is_decimal_divided,website_id,related_skus,crosssell_skus,upsell_skus,additional_images,additional_image_labels,hide_from_product_page,custom_options,bundle_price_type,bundle_sku_type,bundle_price_view,bundle_weight_type,bundle_values
2+
simple,,Default,simple,,base,Simple Product,,,,1,Taxable Goods,"Catalog, Search",10,,,,,meta title,meta keyword,meta description,magento_additional_image_one.jpg,Additional Image Label One,magento_additional_image_one.jpg,Small Additional Image Label One,magento_additional_image_one.jpg,Thumbnail Label,magento_additional_image_one.jpg,Additional Image Label One,,,,,Block after Info Column,,,,,,,,,,,,,"has_options=1,quantity_and_stock_status=In Stock,required_options=1",100,0,1,0,0,1,1,1,10000,1,1,1,1,1,0,1,1,0,0,0,1,,,,"magento_additional_image_one.jpg,magento_additional_image_two.jpg","Additional Image Label One,Additional Image Label Two",/m/a/magento_image.jpg,,,,,,

dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/import_with_filesystem_images.php

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,23 @@
44
* See COPYING.txt for license details.
55
*/
66

7-
/** @var \Magento\Framework\Filesystem\Directory\Write $mediaDirectory */
8-
$mediaDirectory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
7+
/** @var \Magento\Framework\Filesystem $fileSystem */
8+
$fileSystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
99
\Magento\Framework\Filesystem::class
10-
)->getDirectoryWrite(
10+
);
11+
/** @var \Magento\Framework\Filesystem\Directory\Write $mediaDirectory */
12+
$mediaDirectory = $fileSystem->getDirectoryWrite(
1113
\Magento\Framework\App\Filesystem\DirectoryList::MEDIA
1214
);
15+
/** @var \Magento\Framework\Filesystem\Directory\Write $varDirectory */
16+
$varDirectory = $fileSystem->getDirectoryWrite(
17+
\Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR
18+
);
1319

1420
$path = 'catalog' . DIRECTORY_SEPARATOR . 'product';
21+
$varImagesPath = 'import' . DIRECTORY_SEPARATOR . 'images';
1522
// Is required for using importDataForMediaTest method.
16-
$mediaDirectory->create('import');
23+
$varDirectory->create($varImagesPath);
1724
$mediaDirectory->create($path);
1825
$dirPath = $mediaDirectory->getAbsolutePath($path);
1926

0 commit comments

Comments
 (0)