Skip to content

Commit 4d42d64

Browse files
committed
Merge remote-tracking branch 'origin/MAGETWO-74042' into PANDA-FIXES-2.2
2 parents 274971a + 9875225 commit 4d42d64

File tree

4 files changed

+104
-0
lines changed

4 files changed

+104
-0
lines changed

app/code/Magento/ConfigurableImportExport/Model/Import/Product/Type/Configurable.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,13 @@ protected function _parseVariations($rowData)
489489
$additionalRows = [];
490490
if (empty($rowData['configurable_variations'])) {
491491
return $additionalRows;
492+
} elseif(!empty($rowData['store_view_code'])) {
493+
throw new LocalizedException(
494+
__(
495+
'Product with assigned super attributes should not have specified "%1" value',
496+
'store_view_code'
497+
)
498+
);
492499
}
493500
$variations = explode(ImportProduct::PSEUDO_MULTI_LINE_SEPARATOR, $rowData['configurable_variations']);
494501
foreach ($variations as $variation) {

dev/tests/integration/testsuite/Magento/ConfigurableImportExport/Model/Import/Product/Type/ConfigurableTest.php

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
/**
1212
* @magentoAppArea adminhtml
13+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1314
*/
1415
class ConfigurableTest extends \PHPUnit\Framework\TestCase
1516
{
@@ -64,6 +65,7 @@ public function configurableImportDataProvider()
6465
* @param $optionSkuList Name of variations for configurable product
6566
* @magentoDataFixture Magento/ConfigurableProduct/_files/configurable_attribute.php
6667
* @magentoAppArea adminhtml
68+
* @magentoAppIsolation enabled
6769
* @dataProvider configurableImportDataProvider
6870
*/
6971
public function testConfigurableImport($pathToFile, $productName, $optionSkuList)
@@ -148,4 +150,90 @@ public function testConfigurableImport($pathToFile, $productName, $optionSkuList
148150
$this->assertEquals(2, count($valuesData));
149151
}
150152
}
153+
154+
/**
155+
* @magentoDataFixture Magento/Store/_files/second_store.php
156+
* @magentoDataFixture Magento/ConfigurableProduct/_files/configurable_attribute.php
157+
* @magentoAppArea adminhtml
158+
* @magentoAppIsolation enabled
159+
*/
160+
public function testConfigurableImportWithMultipleStores()
161+
{
162+
$productSku = 'Configurable 1';
163+
$products = [
164+
'default' => 'Configurable 1',
165+
'fixture_second_store' => 'Configurable 1 Second Store'
166+
];
167+
$filesystem = $this->objectManager->create(
168+
\Magento\Framework\Filesystem::class
169+
);
170+
171+
$directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
172+
$source = $this->objectManager->create(
173+
\Magento\ImportExport\Model\Import\Source\Csv::class,
174+
[
175+
'file' => __DIR__ . '/../../_files/import_configurable_for_multiple_store_views.csv',
176+
'directory' => $directory
177+
]
178+
);
179+
$errors = $this->model->setSource(
180+
$source
181+
)->setParameters(
182+
[
183+
'behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND,
184+
'entity' => 'catalog_product'
185+
]
186+
)->validateData();
187+
188+
$this->assertTrue($errors->getErrorsCount() == 0);
189+
$this->model->importData();
190+
191+
foreach ($products as $storeCode => $productName) {
192+
$store = $this->objectManager->create(\Magento\Store\Model\Store::class);
193+
$store->load($storeCode, 'code');
194+
/** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */
195+
$productRepository = $this->objectManager->get(\Magento\Catalog\Api\ProductRepositoryInterface::class);
196+
/** @var \Magento\Catalog\Api\Data\ProductInterface $product */
197+
$product = $productRepository->get($productSku, 0, $store->getId());
198+
$this->assertFalse($product->isObjectNew());
199+
$this->assertEquals($productName, $product->getName());
200+
$this->assertEquals(self::TEST_PRODUCT_TYPE, $product->getTypeId());
201+
}
202+
}
203+
204+
/**
205+
* @magentoDataFixture Magento/Store/_files/second_store.php
206+
* @magentoDataFixture Magento/ConfigurableProduct/_files/configurable_attribute.php
207+
* @magentoAppArea adminhtml
208+
*/
209+
public function testConfigurableImportWithStoreSpecifiedMainItem()
210+
{
211+
{
212+
$expectedErrorMessage = 'Product with assigned super attributes should not have specified "store_view_code"'
213+
. ' value';
214+
$filesystem = $this->objectManager->create(
215+
\Magento\Framework\Filesystem::class
216+
);
217+
218+
$directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
219+
$source = $this->objectManager->create(
220+
\Magento\ImportExport\Model\Import\Source\Csv::class,
221+
[
222+
'file' => __DIR__ . '/../../_files/import_configurable_for_multiple_store_views_error.csv',
223+
'directory' => $directory
224+
]
225+
);
226+
$errors = $this->model->setSource(
227+
$source
228+
)->setParameters(
229+
[
230+
'behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND,
231+
'entity' => 'catalog_product'
232+
]
233+
)->validateData();
234+
235+
$this->assertTrue($errors->getErrorsCount() == 1);
236+
$this->assertEquals($expectedErrorMessage, $errors->getAllErrors()[0]->getErrorMessage());
237+
}
238+
}
151239
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
sku,store_view_code,attribute_set_code,product_type,name,description,short_description,weight,product_online,tax_class_name,visibility,price,url_key,display_product_options_in,map_price,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,configurable_variations,configurable_variation_labels,associated_skus
2+
Configurable 1-Option 1,,Default,simple,Configurable 1-Option 1,,,,1,Taxable Goods,Not Visible Individually,10,configurable-1-option-1,Block after Info Column,,"attribute_with_option=Option Label,has_options=0,quantity_and_stock_status=In Stock,required_options=0,test_configurable=Option 1",99999,0,0,0,0,1,1,0,0,0,1,,1,1,0,0,1,0,0,0,1,,,
3+
Configurable 1-Option 2,,Default,simple,Configurable 1-Option 2,,,,1,Taxable Goods,Not Visible Individually,10,configurable-1-option-2,Block after Info Column,,"has_options=0,quantity_and_stock_status=In Stock,required_options=0,test_configurable=Option 2",99999,0,0,0,0,1,1,0,0,0,1,,1,1,0,0,1,0,0,0,1,,,
4+
Configurable 1,,Default,configurable,Configurable 1,,,,1,Taxable Goods,"Catalog, Search",10,configurable-1,Block after Info Column,,"has_options=1,quantity_and_stock_status=In Stock,required_options=0",0,0,0,0,0,1,1,0,0,0,1,,1,0,0,0,1,0,0,0,1,"sku=Configurable 1-Option 1,test_configurable=Option 1|sku=Configurable 1-Option 2,test_configurable=Option 2",test_configurable=test_configurable_custom_label,
5+
Configurable 1,fixture_second_store,Default,configurable,Configurable 1 Second Store,,,,1,Taxable Goods,"Catalog, Search",10,configurable-1,Block after Info Column,,"has_options=1,quantity_and_stock_status=In Stock,required_options=0",0,0,0,0,0,1,1,0,0,0,1,,1,0,0,0,1,0,0,0,1,,test_configurable=test_configurable_custom_label_second_store,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
sku,store_view_code,attribute_set_code,product_type,name,description,short_description,weight,product_online,tax_class_name,visibility,price,url_key,display_product_options_in,map_price,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,configurable_variations,configurable_variation_labels,associated_skus
2+
Configurable 1-Option 1,,Default,simple,Configurable 1-Option 1,,,,1,Taxable Goods,Not Visible Individually,10,configurable-1-option-1,Block after Info Column,,"attribute_with_option=Option Label,has_options=0,quantity_and_stock_status=In Stock,required_options=0,test_configurable=Option 1",99999,0,0,0,0,1,1,0,0,0,1,,1,1,0,0,1,0,0,0,1,,,
3+
Configurable 1-Option 2,,Default,simple,Configurable 1-Option 2,,,,1,Taxable Goods,Not Visible Individually,10,configurable-1-option-2,Block after Info Column,,"has_options=0,quantity_and_stock_status=In Stock,required_options=0,test_configurable=Option 2",99999,0,0,0,0,1,1,0,0,0,1,,1,1,0,0,1,0,0,0,1,,,
4+
Configurable 1,default,Default,configurable,Configurable 1,,,,1,Taxable Goods,"Catalog, Search",10,configurable-1,Block after Info Column,,"has_options=1,quantity_and_stock_status=In Stock,required_options=0",0,0,0,0,0,1,1,0,0,0,1,,1,0,0,0,1,0,0,0,1,"sku=Configurable 1-Option 1,test_configurable=Option 1|sku=Configurable 1-Option 2,test_configurable=Option 2",test_configurable=test_configurable_custom_label,

0 commit comments

Comments
 (0)