Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
All Data Structures Namespaces Files Functions Variables Pages
AssertCartPriceRuleForm.php
Go to the documentation of this file.
1 <?php
8 
10 use Magento\SalesRule\Test\Page\Adminhtml\PromoQuoteEdit;
11 use Magento\SalesRule\Test\Page\Adminhtml\PromoQuoteIndex;
12 use Magento\Mtf\Constraint\AbstractConstraint;
13 use Magento\Mtf\Fixture\FixtureFactory;
14 
18 class AssertCartPriceRuleForm extends AbstractConstraint
19 {
25  protected $skippedFields = [
26  'conditions_serialized',
27  'actions_serialized',
28  'rule_id'
29  ];
30 
42  public function processAssert(
43  PromoQuoteIndex $promoQuoteIndex,
44  PromoQuoteEdit $promoQuoteEdit,
45  FixtureFactory $fixtureFactory,
46  SalesRule $salesRule,
47  SalesRule $salesRuleOrigin = null,
48  SalesRule $salesRuleAdditional = null
49  ) {
50  $filter = [
51  'name' => $salesRule->hasData('name') ? $salesRule->getName() : $salesRuleOrigin->getName(),
52  ];
53 
54  $promoQuoteIndex->open();
55  $promoQuoteIndex->getPromoQuoteGrid()->searchAndOpen($filter);
56  $fixtureData = $salesRuleOrigin != null
57  ? array_merge($salesRuleOrigin->getData(), $salesRule->getData())
58  : $salesRule->getData();
59  $salesRuleMerged = $fixtureFactory->createByCode('salesRule', ['data' => $fixtureData]);
60  $formData = $promoQuoteEdit->getSalesRuleForm()->getData($salesRuleMerged);
61  $fixtureData = $salesRuleOrigin != null
62  ? array_merge($salesRuleOrigin->getData(), $salesRule->getData())
63  : $salesRule->getData();
64  if ($salesRuleAdditional) {
65  $fixtureData = array_merge($fixtureData, $salesRuleAdditional->getData());
66  }
67  $dataDiff = $this->verify($fixtureData, $formData);
68  \PHPUnit\Framework\Assert::assertTrue(
69  empty($dataDiff),
70  'Sales rule data on edit page(backend) not equals to passed from fixture.'
71  . "\nFailed values:\n " . implode(";\n ", $dataDiff)
72  );
73  }
74 
82  protected function verify(array $fixtureData, array $formData)
83  {
84  $errorMessage = [];
85 
86  foreach ($fixtureData as $key => $value) {
87  if (is_array($value)) {
88  $diff = array_diff($value, $formData[$key]);
89  $diff = array_merge($diff, array_diff($formData[$key], $value));
90  if (!empty($diff)) {
91  $errorMessage[] = "Data in " . $key . " field is not equal."
92  . "\nExpected: " . implode(", ", $value)
93  . "\nActual: " . implode(", ", $formData[$key]);
94  }
95  } else {
96  if (!in_array($key, $this->skippedFields) && $value !== $formData[$key]) {
97  $errorMessage[] = "Data in " . $key . " field not equal."
98  . "\nExpected: " . $value
99  . "\nActual: " . $formData[$key];
100  }
101  }
102  }
103 
104  return $errorMessage;
105  }
106 
112  public function toString()
113  {
114  return 'Displayed sales rule data on edit page(backend) equals to passed from fixture.';
115  }
116 }
$value
Definition: gender.phtml:16
processAssert(PromoQuoteIndex $promoQuoteIndex, PromoQuoteEdit $promoQuoteEdit, FixtureFactory $fixtureFactory, SalesRule $salesRule, SalesRule $salesRuleOrigin=null, SalesRule $salesRuleAdditional=null)