Skip to content

Commit c83afc3

Browse files
MTO-127: [Test] Import Advanced Pricing
- Stabilization
1 parent 8c8a3c4 commit c83afc3

File tree

3 files changed

+65
-17
lines changed

3 files changed

+65
-17
lines changed

dev/tests/functional/tests/app/Magento/AdvancedPricingImportExport/Test/TestCase/ImportDataTest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,13 @@
8787
<item name="import_multiple_value_separator" xsi:type="string">,</item>
8888
<item name="import_file" xsi:type="array">
8989
<item name="entities" xsi:type="array">
90-
<item name="0" xsi:type="string">catalogProductSimple::default_in_custom_website</item>
90+
<item name="0" xsi:type="string">catalogProductSimple::default_in_custom_website_and_main_website</item>
9191
</item>
9292
<item name="template" xsi:type="array">
9393
<item name="filename" xsi:type="string">Magento/AdvancedPricingImportExport/Test/_files/template/pricing/advanced_price_variation_4</item>
9494
<item name="count" xsi:type="number">2</item>
9595
<item name="websiteCurrency" xsi:type="string">EUR</item>
96+
<item name="mainWebsiteCurrency" xsi:type="string">USD</item>
9697
</item>
9798
</item>
9899
</data>

dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/CatalogProductSimple.xml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1874,6 +1874,39 @@
18741874
</field>
18751875
</dataset>
18761876

1877+
<dataset name="default_in_custom_website_and_main_website">
1878+
<field name="attribute_set_id" xsi:type="array">
1879+
<item name="dataset" xsi:type="string">default</item>
1880+
</field>
1881+
<field name="name" xsi:type="string">Simple Product %isolation%</field>
1882+
<field name="sku" xsi:type="string">sku_simple_product_%isolation%</field>
1883+
<field name="product_has_weight" xsi:type="string">This item has weight</field>
1884+
<field name="weight" xsi:type="string">1</field>
1885+
<field name="quantity_and_stock_status" xsi:type="array">
1886+
<item name="qty" xsi:type="string">25</item>
1887+
<item name="is_in_stock" xsi:type="string">In Stock</item>
1888+
</field>
1889+
<field name="price" xsi:type="array">
1890+
<item name="value" xsi:type="string">560</item>
1891+
</field>
1892+
<field name="tax_class_id" xsi:type="array">
1893+
<item name="dataset" xsi:type="string">taxable_goods</item>
1894+
</field>
1895+
<field name="website_ids" xsi:type="array">
1896+
<item name="0" xsi:type="array">
1897+
<item name="dataset" xsi:type="string">custom_store</item>
1898+
</item>
1899+
<item name="1" xsi:type="array">
1900+
<item name="dataset" xsi:type="string">custom_group_custom_store</item>
1901+
</item>
1902+
</field>
1903+
<field name="visibility" xsi:type="string">Catalog, Search</field>
1904+
<field name="url_key" xsi:type="string">simple-product-%isolation%</field>
1905+
<field name="checkout_data" xsi:type="array">
1906+
<item name="dataset" xsi:type="string">simple_order_default</item>
1907+
</field>
1908+
</dataset>
1909+
18771910
<dataset name="product_with_additional_website">
18781911
<field name="sku" xsi:type="string">simple_product_with_category_%isolation%</field>
18791912
<field name="name" xsi:type="string">Simple product with category %isolation%</field>

dev/tests/functional/tests/app/Magento/ImportExport/Test/Fixture/Import/File.php

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ class File extends DataSource
2222
*
2323
* @var array
2424
*/
25-
private $codeMapping =[
26-
'base' => 'Main Website'
27-
];
25+
private $mainWebsiteMapping;
2826

2927
/**
3028
* Fixture data.
@@ -207,29 +205,48 @@ private function preparePlaceHolders()
207205
$placeholders = [];
208206
$key = 0;
209207
foreach ($this->entities as $entity) {
210-
$currency = (isset($this->value['template']['websiteCurrency']))
211-
? "[{$this->value['template']['websiteCurrency']}]"
212-
: '[USD]';
213-
$website = $entity->getDataFieldConfig('website_ids')['source']->getWebsites()[0];
214-
$entityData = $entity->getData();
215-
$entityData['code'] = $website->getCode();
208+
$entityData = $this->prepareEntityData($entity);
216209
foreach ($this->csvTemplate['entity_' . $key] as $tierKey => $tier) {
217210
$values = implode('', array_values($tier));
218211
preg_match_all('/\%(.*)\%/U', $values, $indexes);
219-
220212
foreach ($indexes[1] as $index) {
221213
if (isset($entityData[$index])) {
222214
$placeholders['entity_' . $key][$tierKey]["%{$index}%"] = $entityData[$index];
223215
}
224-
$placeholders['entity_' . $key][$tierKey][$entityData['code']] = $website->getName() . $currency;
216+
$placeholders['entity_' . $key][$tierKey][$entityData['code']] = $entityData[$entityData['code']];
225217
}
226218
}
227-
228219
$key++;
229220
}
230221
$this->placeholders = $placeholders;
231222
}
232223

224+
/**
225+
* Prepare entity data.
226+
*
227+
* @param FixtureInterface $entity
228+
* @return array
229+
*/
230+
public function prepareEntityData(FixtureInterface $entity)
231+
{
232+
$currency = (isset($this->value['template']['websiteCurrency']))
233+
? "[{$this->value['template']['websiteCurrency']}]"
234+
: '[USD]';
235+
$entityData = $entity->getData();
236+
237+
$websites = $entity->getDataFieldConfig('website_ids')['source']->getWebsites();
238+
foreach ($websites as $website) {
239+
if ($website->getCode() === 'base') {
240+
$currency = $this->value['template']['mainWebsiteCurrency'];
241+
$this->mainWebsiteMapping['base'] = $website->getName() . "[{$currency}]";
242+
break;
243+
}
244+
$entityData['code'] = $website->getCode();
245+
$entityData[$website->getCode()] = $website->getName() . $currency;
246+
}
247+
return $entityData;
248+
}
249+
233250
/**
234251
* Convert csv to array.
235252
*
@@ -243,10 +260,7 @@ public function convertCsvToArray($csvContent)
243260
$csvContent = strtr($csvContent, $data);
244261
}
245262
}
246-
$this->codeMapping['base'] .= (isset($this->value['template']['mainWebsiteCurrency']))
247-
? "[{$this->value['template']['mainWebsiteCurrency']}]"
248-
: '[USD]';
249-
$csvContent = strtr($csvContent, $this->codeMapping);
263+
$csvContent = strtr($csvContent, $this->mainWebsiteMapping);
250264
$this->csv = array_map(
251265
function ($value) {
252266
return explode(',', str_replace('"', '', $value));

0 commit comments

Comments
 (0)