/**
  * Apply sales rule during backend order creation.
  *
  * @return void
  */
 public function run()
 {
     if ($this->salesRule !== null) {
         if ($this->salesRule->hasData('coupon_code')) {
             $this->orderCreateIndex->getCreateBlock()->getCouponsBlock()->applyCouponsCode($this->salesRule);
         }
     }
 }
 /**
  * Assert that displayed sales rule data on edit page equals passed from fixture.
  *
  * @param PromoQuoteIndex $promoQuoteIndex
  * @param PromoQuoteEdit $promoQuoteEdit
  * @param SalesRule $salesRule
  * @return void
  */
 public function processAssert(PromoQuoteIndex $promoQuoteIndex, PromoQuoteEdit $promoQuoteEdit, SalesRule $salesRule)
 {
     $promoQuoteIndex->open();
     $promoQuoteIndex->getPromoQuoteGrid()->searchAndOpen(['name' => $salesRule->getName()]);
     $formData = $promoQuoteEdit->getSalesRuleForm()->getData();
     $errors = $this->verifyData($salesRule->getData(), $formData);
     \PHPUnit_Framework_Assert::assertEmpty($errors, $errors);
 }
 /**
  * Delete Sales Rule Entity test.
  *
  * @param SalesRule $salesRule
  * @return void
  */
 public function test(SalesRule $salesRule)
 {
     // Preconditions:
     $salesRule->persist();
     // Steps:
     $this->promoQuoteIndex->open();
     $this->promoQuoteIndex->getPromoQuoteGrid()->searchAndOpen(['name' => $salesRule->getName()]);
     $this->promoQuoteEdit->getFormPageActions()->delete();
 }
Example #4
0
 /**
  * Prepare website ids for curl.
  *
  * @param SalesRule $fixture
  * @return array
  */
 protected function prepareWebsiteIds(SalesRule $fixture)
 {
     $websites = $fixture->getDataFieldConfig('website_ids')['source']->getWebsites();
     $data = [];
     /** @var Website $website */
     foreach ($websites as $website) {
         $data[] = $website->getWebsiteId();
     }
     return $data;
 }
 /**
  * Delete sales rule, catalog rule, all tax rules and setup default tax configuration.
  *
  * @return void
  */
 public function tearDown()
 {
     if (isset($this->salesRule)) {
         $this->promoQuoteIndex->open();
         $this->promoQuoteIndex->getPromoQuoteGrid()->searchAndOpen(['name' => $this->salesRule->getName()]);
         $this->promoQuoteEdit->getFormPageActions()->delete();
         $this->salesRule = null;
     }
     if (isset($this->catalogRule)) {
         $this->catalogRuleIndex->open();
         $this->catalogRuleIndex->getCatalogRuleGrid()->searchAndOpen(['name' => $this->catalogRule->getName()]);
         $this->catalogRuleEdit->getFormPageActions()->delete();
         $this->catalogRule = null;
     }
     $this->objectManager->create('Mage\\Tax\\Test\\TestStep\\DeleteAllTaxRulesStep')->run();
 }
 /**
  * Delete sales rule, catalog rule, all tax rules and setup default tax configuration.
  *
  * @return void
  */
 public function tearDown()
 {
     if (isset($this->salesRule)) {
         $this->promoQuoteIndex->open();
         $this->promoQuoteIndex->getPromoQuoteGrid()->searchAndOpen(['name' => $this->salesRule->getName()]);
         $this->promoQuoteEdit->getFormPageActions()->delete();
         $this->salesRule = null;
     }
     if (isset($this->catalogRule)) {
         $this->catalogRuleIndex->open();
         $this->catalogRuleIndex->getCatalogRuleGrid()->searchAndOpen(['name' => $this->catalogRule->getName()]);
         $this->catalogRuleEdit->getFormPageActions()->delete();
         $this->catalogRule = null;
     }
     $this->objectManager->create('Mage\\Tax\\Test\\TestStep\\DeleteAllTaxRulesStep')->run();
     // TODO: Move set default configuration and create default tax rule to "tearDownAfterClass" method after fix bug MAGETWO-29331
     $this->objectManager->create('Mage\\Core\\Test\\TestStep\\SetupConfigurationStep', ['configData' => 'default_tax_configuration'])->run();
     $this->objectManager->create('\\Mage\\Tax\\Test\\TestStep\\CreateTaxRuleStep', ['taxRule' => 'default'])->run();
 }
 /**
  * 1. Navigate to frontend
  * 2. If "Log Out" link is visible and "isLoggedIn" empty
  *    - makes logout
  * 3. If "isLoggedIn" not empty
  *    - login as customer
  * 4. Clear shopping cart
  * 5. Add test product(s) to shopping cart with specify quantity
  * 6. If "salesRule/data/coupon_code" not empty:
  *    - fill "Enter your code" input in DÑ–scount Codes
  *    - click "Apply Coupon" button
  * 7. If "address/data/country_id" not empty:
  *    On Estimate Shipping and Tax:
  *    - fill Country, State/Province, Zip/Postal Code
  *    - click 'Get a Quote' button
  *    - select 'Flat Rate' shipping
  *    - click 'Update Total' button
  * 8. Implementation assert
  *
  * @param CheckoutCart $checkoutCart
  * @param CmsIndex $cmsIndex
  * @param CustomerAccountLogin $customerAccountLogin
  * @param CustomerAccountLogout $customerAccountLogout
  * @param CatalogCategoryView $catalogCategoryView
  * @param CatalogProductView $catalogProductView
  * @param Customer $customer
  * @param SalesRule $salesRule
  * @param Address $address
  * @param Browser $browser
  * @param array $productQuantity
  * @param CatalogProductSimple $productForSalesRule1
  * @param CatalogProductSimple $productForSalesRule2
  * @param array $shipping [optional]
  * @param int|null $isLoggedIn
  * @return void
  *
  * @SuppressWarnings(PHPMD.ExcessiveParameterList)
  */
 public function processAssert(CheckoutCart $checkoutCart, CmsIndex $cmsIndex, CustomerAccountLogin $customerAccountLogin, CustomerAccountLogout $customerAccountLogout, CatalogCategoryView $catalogCategoryView, CatalogProductView $catalogProductView, Customer $customer, SalesRule $salesRule, Address $address, Browser $browser, array $productQuantity, CatalogProductSimple $productForSalesRule1, CatalogProductSimple $productForSalesRule2, array $shipping = [], $isLoggedIn = null)
 {
     $this->checkoutCart = $checkoutCart;
     $this->cmsIndex = $cmsIndex;
     $this->customerAccountLogin = $customerAccountLogin;
     $this->customerAccountLogout = $customerAccountLogout;
     $this->catalogCategoryView = $catalogCategoryView;
     $this->catalogProductView = $catalogProductView;
     $this->customer = $customer;
     $this->browser = $browser;
     $this->productForSalesRule1 = $productForSalesRule1;
     $this->productForSalesRule2 = $productForSalesRule2;
     $isLoggedIn ? $this->login() : $this->customerAccountLogout->open();
     $this->checkoutCart->open()->getCartBlock()->clearShoppingCart();
     $this->addProductsToCart($productQuantity);
     if ($address->hasData('country_id')) {
         $this->checkoutCart->getShippingBlock()->fillEstimateShippingAndTax($address);
         if (!empty($shipping)) {
             $this->checkoutCart->getShippingBlock()->selectShippingMethod($shipping);
         }
     }
     if ($salesRule->getCouponCode()) {
         $this->checkoutCart->getDiscountCodesBlock()->applyCouponCode($salesRule->getCouponCode());
     }
     $this->assert();
 }
 /**
  * Create Sales Rule.
  *
  * @param SalesRule $salesRule
  * @return void
  */
 public function test(SalesRule $salesRule)
 {
     // Prepare data for tearDown
     $this->salesRuleName = $salesRule->getName();
     // Steps
     $this->promoQuoteIndex->open();
     $this->promoQuoteIndex->getGridPageActions()->addNew();
     $this->promoQuoteNew->getSalesRuleForm()->fill($salesRule);
     $this->promoQuoteNew->getFormPageActions()->save();
 }
 /**
  * Apply sales rule before one page checkout.
  *
  * @return void
  */
 public function run()
 {
     if ($this->salesRule !== null) {
         $this->checkoutCart->getDiscountCodesBlock()->applyCouponCode($this->salesRule->getCouponCode());
     }
 }
 /**
  * Assert that sales rule is not present in cart price rules grid.
  *
  * @param PromoQuoteIndex $promoQuoteIndex
  * @param SalesRule $salesRule
  * @return void
  */
 public function processAssert(PromoQuoteIndex $promoQuoteIndex, SalesRule $salesRule)
 {
     $promoQuoteIndex->open();
     \PHPUnit_Framework_Assert::assertFalse($promoQuoteIndex->getPromoQuoteGrid()->isRowVisible(['name' => $salesRule->getName()]), "Sales rule {$salesRule->getName()} is present in cart price rules grid.");
 }
 /**
  * Deleting cart price rule.
  *
  * @return void
  */
 public function tearDown()
 {
     if (!$this->salesRule instanceof SalesRule) {
         return;
     }
     $this->promoQuoteIndex->open();
     $this->promoQuoteIndex->getPromoQuoteGrid()->searchAndOpen(['name' => $this->salesRule->getName()]);
     $this->promoQuoteEdit->getFormPageActions()->delete();
 }