/** * Assert that displayed sales rule data on edit page(backend) equals passed from fixture. * * @param PromoQuoteIndex $promoQuoteIndex * @param PromoQuoteEdit $promoQuoteEdit * @param SalesRule $salesRule * @param SalesRule $salesRuleOrigin * @return void */ public function processAssert(PromoQuoteIndex $promoQuoteIndex, PromoQuoteEdit $promoQuoteEdit, SalesRule $salesRule, SalesRule $salesRuleOrigin = null) { $filter = ['name' => $salesRule->hasData('name') ? $salesRule->getName() : $salesRuleOrigin->getName()]; $promoQuoteIndex->open(); $promoQuoteIndex->getPromoQuoteGrid()->searchAndOpen($filter); $formData = $promoQuoteEdit->getSalesRuleForm()->getData(); $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)); }
/** * Create coupon related to sales rule . * * @param int $ruleId * @return void * @throws \Exception */ protected function createCoupon($ruleId) { if (!$this->fixture->hasData('coupon_code')) { return; } $url = $_ENV['app_frontend_url'] . 'rest/V1/coupons'; $data = ['coupon' => array_filter(['rule_id' => $ruleId, 'code' => $this->fixture->getCouponCode(), 'type' => $this->data['coupon_type'], 'usage_limit' => isset($this->data['uses_per_coupon']) ? $this->data['uses_per_coupon'] : null, 'usage_per_customer' => isset($this->data['usage_per_customer']) ? $this->data['usage_per_customer'] : null, 'is_primary' => true])]; $this->webapiTransport->write($url, $data); $response = json_decode($this->webapiTransport->read(), true); $this->webapiTransport->close(); if (empty($response['coupon_id'])) { $this->eventManager->dispatchEvent(['webapi_failed'], [$response]); throw new \Exception('Coupon creation by webapi handler was not successful!'); } }
/** * Update Sales Rule Entity. * * @param SalesRule $salesRule * @param SalesRule $salesRuleOrigin * @return void */ public function testUpdateSalesRule(SalesRule $salesRule, SalesRule $salesRuleOrigin) { // Preconditions $salesRuleOrigin->persist(); $filter = ['name' => $salesRuleOrigin->getName()]; $this->salesRuleName = $salesRule->hasData('name') ? $salesRule->getName() : $salesRuleOrigin->getName(); // Steps $this->promoQuoteIndex->open(); $this->promoQuoteIndex->getPromoQuoteGrid()->searchAndOpen($filter); $this->promoQuoteEdit->getSalesRuleForm()->fill($salesRule); $this->promoQuoteEdit->getFormPageActions()->save(); }