/** * Assert that displayed sales rule data on edit page(backend) equals passed from fixture. * * @param PromoQuoteIndex $promoQuoteIndex * @param PromoQuoteEdit $promoQuoteEdit * @param FixtureFactory $fixtureFactory * @param SalesRule $salesRule * @param SalesRule $salesRuleOrigin * @return void */ public function processAssert(PromoQuoteIndex $promoQuoteIndex, PromoQuoteEdit $promoQuoteEdit, FixtureFactory $fixtureFactory, SalesRule $salesRule, SalesRule $salesRuleOrigin = null) { $filter = ['name' => $salesRule->hasData('name') ? $salesRule->getName() : $salesRuleOrigin->getName()]; $promoQuoteIndex->open(); $promoQuoteIndex->getPromoQuoteGrid()->searchAndOpen($filter); $fixtureData = $salesRuleOrigin != null ? array_merge($salesRuleOrigin->getData(), $salesRule->getData()) : $salesRule->getData(); $salesRuleMerged = $fixtureFactory->createByCode('salesRule', ['data' => $fixtureData]); $formData = $promoQuoteEdit->getSalesRuleForm()->getData($salesRuleMerged); $fixtureData = $salesRuleOrigin != null ? array_merge($salesRuleOrigin->getData(), $salesRule->getData()) : $salesRule->getData(); $dataDiff = $this->verify($fixtureData, $formData); \PHPUnit_Framework_Assert::assertTrue(empty($dataDiff), 'Sales rule data on edit page(backend) not equals to passed from fixture.' . "\nFailed values:\n " . implode(";\n ", $dataDiff)); }
/** * Prepare data for creating sales rule request. * * @param FixtureInterface $fixture * @return array */ public function prepareData(FixtureInterface $fixture) { $this->fixture = $fixture; $this->data = $this->replaceMappingData($this->fixture->getData()); $this->data['rule'] = []; if (isset($this->data['conditions_serialized'])) { $this->data['rule']['conditions'] = $this->prepareCondition($this->data['conditions_serialized']); unset($this->data['conditions_serialized']); } $this->prepareWebsites(); $this->prepareCustomerGroup(); if (isset($this->data['actions_serialized'])) { $this->mapTypeParams['Conditions combination']['type'] = 'Magento\\SalesRule\\Model\\Rule\\Condition\\Product\\Combine'; $this->data['rule']['actions'] = $this->prepareCondition($this->data['actions_serialized']); unset($this->data['actions_serialized']); } return $this->data; }