Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AssertConfigurableProductForm.php
Go to the documentation of this file.
1 <?php
8 
10 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductEdit;
11 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductIndex;
12 use Magento\Mtf\Fixture\FixtureInterface;
13 
19 {
25  protected $skippedFixtureFields = [
26  'id',
27  'affected_attribute_set',
28  'checkout_data',
29  'price'
30  ];
31 
38  'frontend_input',
39  'frontend_label',
40  'attribute_code',
41  'attribute_id',
42  'is_required',
43  ];
44 
50  protected $skippedOptionFields = [
51  'admin',
52  'id',
53  'is_default',
54  ];
55 
62  'configurable_attribute',
63  ];
64 
72  protected function prepareFixtureData(array $data, array $sortFields = [])
73  {
74  // Attribute is no longer displayed on product page
75  unset($data['configurable_attributes_data']['attributes_data']);
76 
77  // prepare and filter values, reset keys in variation matrix
78  $variationsMatrix = $data['configurable_attributes_data']['matrix'];
79  foreach ($variationsMatrix as $key => $variationMatrix) {
80  $variationsMatrix[$key] = array_diff_key($variationMatrix, array_flip($this->skippedVariationMatrixFields));
81  }
82  $data['configurable_attributes_data']['matrix'] = array_values($variationsMatrix);
83 
84  return parent::prepareFixtureData($data, $sortFields);
85  }
86 
94  protected function prepareFormData(array $data, array $sortFields = [])
95  {
96  // filter values and reset keys in variation matrix
97  $variationsMatrix = $this->trimCurrencyForPriceInMatrix($data['configurable_attributes_data']['matrix']);
98  foreach ($variationsMatrix as $key => $variationMatrix) {
99  $variationsMatrix[$key] = array_diff_key($variationMatrix, array_flip($this->skippedVariationMatrixFields));
100  }
101  $data['configurable_attributes_data']['matrix'] = array_values($variationsMatrix);
102 
103  foreach ($sortFields as $path) {
104  $data = $this->sortDataByPath($data, $path);
105  }
106  return $data;
107  }
108 
116  protected function trimCurrencyForPriceInMatrix($variationsMatrix, $currency = '$')
117  {
118  foreach ($variationsMatrix as &$variation) {
119  if (isset($variation['price'])) {
120  $variation['price'] = str_replace($currency, '', $variation['price']);
121  }
122  }
123  return $variationsMatrix;
124  }
125 
134  public function processAssert(
135  FixtureInterface $product,
136  CatalogProductIndex $productGrid,
137  CatalogProductEdit $productPage
138  ) {
139  $product = $this->processFixture($product);
140  parent::processAssert($product, $productGrid, $productPage);
141  }
142 
149  protected function processFixture(FixtureInterface $product)
150  {
151  $data = array_diff_key($product->getData(), ['price' => 0, 'special_price' => 0]);
152  return $this->objectManager->create(
153  \Magento\ConfigurableProduct\Test\Fixture\ConfigurableProduct::class,
154  ['data' => $data]
155  );
156  }
157 }
processAssert(FixtureInterface $product, CatalogProductIndex $productGrid, CatalogProductEdit $productPage)