/** * 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(); }
/** * Fill estimate block. * * @param Address $address * @param array $shipping * @return void */ protected function fillEstimateBlock(Address $address, array $shipping) { $this->checkoutCart->getShippingBlock()->fillEstimateShippingAndTax($address); $this->checkoutCart->getShippingBlock()->selectShippingMethod($shipping); }