Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AssertCustomOptions.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductEdit;
10 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductIndex;
11 use Magento\Mtf\Fixture\FixtureInterface;
12 
17 {
26  public function processAssert(
27  FixtureInterface $product,
28  CatalogProductIndex $productGrid,
29  CatalogProductEdit $productPage
30  ) {
31  $expectedCustomOptions = $this->arguments['expectedCustomOptions'];
32  $filter = ['sku' => $product->getSku()];
33  $productGrid->open();
34  $productGrid->getProductGrid()->searchAndOpen($filter);
35  $productData = [];
36  if ($product->hasData('custom_options')) {
37  $productData = $this->addExpectedOptionValues($product, $expectedCustomOptions);
38  }
39  $fixtureData = $this->prepareFixtureData($productData, $this->sortFields);
40  $formData = $this->prepareFormData($productPage->getProductForm()->getData($product), $this->sortFields);
41  $errors = $this->verifyData($fixtureData, $formData);
42 
43  \PHPUnit\Framework\Assert::assertEmpty($errors, $errors);
44  }
45 
53  private function addExpectedOptionValues(FixtureInterface $product, array $expectedCustomOptions)
54  {
56  $customOptionsSource = $product->getDataFieldConfig('custom_options')['source']->getCustomOptions();
57  foreach (array_keys($customOptionsSource) as $optionKey) {
58  foreach ($expectedCustomOptions as $expectedCustomOption) {
59  if ($customOptionsSource[$optionKey]['type'] === $expectedCustomOption['optionType']) {
60  $options = array_keys($customOptionsSource[$optionKey]['options']);
61  $optionField = $expectedCustomOption['optionField'];
62  $optionValue = $expectedCustomOption['optionValue'];
63  foreach ($options as $optionsKey) {
64  $customOptionsSource[$optionKey]['options'][$optionsKey][$optionField] = $optionValue;
65  }
66  }
67  }
68  }
69 
70  return ['custom_options' => $customOptionsSource];
71  }
72 
78  public function toString()
79  {
80  return 'Custom option values are same as expected.';
81  }
82 }
prepareFormData(array $data, array $sortFields=[])
verifyData(array $fixtureData, array $formData, $isStrict=false, $isPrepareError=true)
processAssert(FixtureInterface $product, CatalogProductIndex $productGrid, CatalogProductEdit $productPage)
prepareFixtureData(array $data, array $sortFields=[])
$productData
$errors
Definition: overview.phtml:9