Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
All Data Structures Namespaces Files Functions Variables Pages
AssertImportAdvancedPricing.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductEdit;
10 use Magento\ImportExport\Test\Fixture\ImportData;
11 use Magento\Mtf\Constraint\AbstractConstraint;
12 
16 class AssertImportAdvancedPricing extends AbstractConstraint
17 {
23  private $mappingData = [
24  'sku' => 'sku',
25  'tier_price' => 'price',
26  'tier_price_qty' => 'price_qty',
27  'tier_price_website' => 'website',
28  'tier_price_customer_group' => 'customer_group',
29  'tier_price_value_type' => 'value_type'
30  ];
31 
37  private $catalogProductEdit;
38 
44  private $import;
45 
53  public function processAssert(
54  CatalogProductEdit $catalogProductEdit,
55  ImportData $import
56  ) {
57  $this->catalogProductEdit = $catalogProductEdit;
58  $this->import = $import;
59 
60  $resultArrays = $this->getPreparePrices();
61 
62  \PHPUnit\Framework\Assert::assertEquals(
63  $resultArrays['pageData'],
64  $resultArrays['csvData'],
65  'Tier prices from page and csv are not match.'
66  );
67  }
68 
74  private function getPreparePrices()
75  {
76  $products = $this->import->getDataFieldConfig('import_file')['source']->getEntities();
77 
78  // Prepare tier prices data from page form.
79  $resultProductArray = [];
80  foreach ($products as $product) {
81  $this->catalogProductEdit->open(['id' => $product->getId()]);
82  $advancedPricing = $this->catalogProductEdit->getProductForm()->openSection('advanced-pricing')
83  ->getSection('advanced-pricing');
84  $tierPrices = $advancedPricing->getTierPriceForm()->getFieldsData();
85  $productSku = $product->getSku();
86  foreach ($tierPrices as $tierPrice) {
87  $resultProductArray[$productSku][] = $tierPrice;
88  }
89  }
90 
91  // Prepare tier prices data from csv file.
92  $resultCsvArray = [];
93  if ($this->import->getBehavior() !== 'Delete') {
94  $resultCsvArray = $this->getResultCsv();
95  }
96 
97  return ['pageData' => $resultProductArray, 'csvData' => $resultCsvArray];
98  }
99 
105  private function getResultCsv()
106  {
107  $csvData = $this->import->getDataFieldConfig('import_file')['source']->getCsv();
108 
109  $csvKeys = [];
110  foreach (array_shift($csvData) as $csvKey) {
111  $csvKeys[] = isset($this->mappingData[$csvKey]) ? $this->mappingData[$csvKey] : $csvKey;
112  }
113 
114  $resultCsvData = [];
115  foreach ($csvData as $csvRowData) {
116  $csvRowData = array_combine($csvKeys, $csvRowData);
117  $sku = $csvRowData['sku'];
118  unset($csvRowData['sku']);
119  $resultCsvData[$sku][] = $csvRowData;
120  }
121  return $resultCsvData;
122  }
123 
129  public function toString()
130  {
131  return 'Imported advanced prices are correct.';
132  }
133 }
processAssert(CatalogProductEdit $catalogProductEdit, ImportData $import)