/** * Select shipping method * * @return void */ public function run() { if ($this->shipping['shipping_service'] !== '-') { $this->checkoutOnepage->getShippingMethodBlock()->selectShippingMethod($this->shipping); $this->checkoutOnepage->getShippingMethodBlock()->clickContinue(); } }
/** * Run step that selecting payment method * * @return void */ public function run() { if ($this->payment['method'] !== 'free') { $this->checkoutOnepage->getPaymentMethodsBlock()->selectPaymentMethod($this->payment, $this->creditCard); } $this->checkoutOnepage->getPaymentMethodsBlock()->clickContinue(); }
/** * Assert that prices on order review and customer order pages are equal to specified in dataset. * * @param array $prices * @param InjectableFixture $product * @param CheckoutCart $checkoutCart * @param CheckoutOnepage $checkoutOnepage * @param CheckoutOnepageSuccess $checkoutOnepageSuccess * @param CustomerOrderView $customerOrderView * @return void */ public function processAssert(array $prices, InjectableFixture $product, CheckoutCart $checkoutCart, CheckoutOnepage $checkoutOnepage, CheckoutOnepageSuccess $checkoutOnepageSuccess, CustomerOrderView $customerOrderView) { $this->checkoutOnepage = $checkoutOnepage; $this->customerOrderView = $customerOrderView; $checkoutCart->getProceedToCheckoutBlock()->proceedToCheckout(); $checkoutOnepage->getBillingBlock()->clickContinue(); $checkoutOnepage->getPaymentMethodsBlock()->selectPaymentMethod(['method' => 'check_money_order']); $checkoutOnepage->getPaymentMethodsBlock()->clickContinue(); $actualPrices = []; $actualPrices = $this->getReviewPrices($actualPrices, $product); $actualPrices = $this->getReviewTotals($actualPrices); $prices = $this->preparePrices($prices); //Order review prices verification $message = 'Prices on order review should be equal to defined in dataset.'; \PHPUnit_Framework_Assert::assertEquals($prices, $actualPrices, $message); $checkoutOnepage->getReviewBlock()->placeOrder(); $checkoutOnepageSuccess->getSuccessBlock()->getGuestOrderId(); $checkoutOnepageSuccess->getSuccessBlock()->openOrder(); $actualPrices = []; $actualPrices = $this->getOrderPrices($actualPrices, $product); $actualPrices = $this->getOrderTotals($actualPrices); //Frontend order prices verification $message = 'Prices on order view page should be equal to defined in dataset.'; \PHPUnit_Framework_Assert::assertEquals($prices, $actualPrices, $message); }
/** * Select shipping method * * @return void */ public function run() { if (!empty($this->shipping)) { $this->checkoutOnepage->getShippingMethodBlock()->selectShippingMethod($this->shipping); $this->checkoutOnepage->getShippingMethodBlock()->clickContinue(); } }
/** * Place order after checking order totals on review step. * * @return array */ public function run() { if (!empty($this->prices)) { $this->assertOrderTotalOnReviewPage->processAssert($this->checkoutOnepage, $this->prices); } $this->checkoutOnepage->getReviewBlock()->placeOrder(); return ['orderId' => $this->checkoutOnepageSuccess->getSuccessBlock()->getGuestOrderId()]; }
/** * Place order after checking order totals on review step. * * @return array */ public function run() { if (isset($this->prices['grandTotal'])) { $this->assertGrandTotalOrderReview->processAssert($this->checkoutOnepage, $this->prices['grandTotal']); } $this->checkoutOnepage->getPaymentBlock()->getSelectedPaymentMethodBlock()->clickPlaceOrder(); return ['orderId' => $this->checkoutOnepageSuccess->getSuccessBlock()->getGuestOrderId()]; }
/** * Place order after checking order totals on review step. * * @return array */ public function run() { if (isset($this->prices['grandTotal'])) { $this->assertGrandTotalOrderReview->processAssert($this->checkoutOnepage, $this->prices['grandTotal']); } $this->checkoutOnepage->getPaymentBlock()->getSelectedPaymentMethodBlock()->clickPlaceOrder(); $order = $this->fixtureFactory->createByCode('orderInjectable', ['data' => ['entity_id' => ['products' => $this->products]]]); return ['orderId' => $this->checkoutOnepageSuccess->getSuccessBlock()->getGuestOrderId(), 'order' => $order]; }
/** * Fill billing address. * * @return void */ public function run() { if ($this->billingCheckboxState) { $this->assertBillingAddressCheckbox->processAssert($this->checkoutOnepage, $this->billingCheckboxState); } if ($this->billingAddress) { $selectedPaymentMethod = $this->checkoutOnepage->getPaymentBlock()->getSelectedPaymentMethodBlock(); $selectedPaymentMethod->getBillingBlock()->fillBilling($this->billingAddress); } }
/** * Assert that Catalog Price Rule is applied & it impacts on product's discount price on OnePage Checkout page. * * @param CheckoutOnepage $checkoutOnepage * @param Customer $customer * @param array $products * @param array $cartPrice * @param array $shipping * @param array $payment * @return void */ public function processAssert(CheckoutOnepage $checkoutOnepage, Customer $customer, array $products, array $cartPrice, array $shipping, array $payment) { $this->objectManager->create('\\Magento\\Customer\\Test\\TestStep\\LoginCustomerOnFrontendStep', ['customer' => $customer])->run(); $this->objectManager->create('\\Magento\\Checkout\\Test\\TestStep\\AddProductsToTheCartStep', ['products' => $products])->run(); $this->objectManager->create('\\Magento\\Checkout\\Test\\TestStep\\ProceedToCheckoutStep')->run(); $this->objectManager->create('\\Magento\\Checkout\\Test\\TestStep\\FillBillingInformationStep', ['customer' => $customer, 'checkoutMethod' => 'register'])->run(); $this->objectManager->create('\\Magento\\Checkout\\Test\\TestStep\\FillShippingMethodStep', ['shipping' => $shipping])->run(); $this->objectManager->create('\\Magento\\Checkout\\Test\\TestStep\\SelectPaymentMethodStep', ['payment' => $payment])->run(); $actualPrices['grand_total'] = $checkoutOnepage->getReviewBlock()->getGrandTotal(); $actualPrices['sub_total'] = $checkoutOnepage->getReviewBlock()->getSubtotal(); $expectedPrices['grand_total'] = $cartPrice['grand_total'] + $cartPrice['shipping_price']; $expectedPrices['sub_total'] = $cartPrice['sub_total']; \PHPUnit_Framework_Assert::assertEquals($expectedPrices, $actualPrices, 'Wrong total cart prices are displayed.'); }
/** * Verify Terms and Conditions checkbox is absent on checkout page. * * @param ObjectManager $objectManager * @param $products * @param CheckoutOnepage $checkoutOnepage * @param $shipping * @param $payment * @param CheckoutAgreement $agreement * * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function processAssert(ObjectManager $objectManager, $products, CheckoutOnepage $checkoutOnepage, $shipping, $payment, CheckoutAgreement $agreement) { $shippingAddressData = ['shippingAddress' => ['dataSet' => 'US_address_1']]; $productsData = ['products' => $products]; $shippingMethodData = ['shipping' => $shipping]; $paymentData = ['payment' => $payment]; $products = $objectManager->create('Magento\\Catalog\\Test\\TestStep\\CreateProductsStep', $productsData)->run(); $objectManager->create('Magento\\Checkout\\Test\\TestStep\\AddProductsToTheCartStep', $products)->run(); $objectManager->create('Magento\\Checkout\\Test\\TestStep\\ProceedToCheckoutStep')->run(); $objectManager->create('Magento\\Checkout\\Test\\TestStep\\FillShippingAddressStep', $shippingAddressData)->run(); $objectManager->create('Magento\\Checkout\\Test\\TestStep\\FillShippingMethodStep', $shippingMethodData)->run(); $objectManager->create('Magento\\Checkout\\Test\\TestStep\\SelectPaymentMethodStep', $paymentData)->run(); \PHPUnit_Framework_Assert::assertFalse($checkoutOnepage->getAgreementReview()->checkAgreement($agreement), 'Checkout Agreement \'' . $agreement->getName() . '\' is present in the Place order step.'); }
/** * Run step that selecting checkout method. * * @return void * @throws \Exception */ public function run() { $checkoutMethodBlock = $this->checkoutOnepage->getLoginBlock(); switch ($this->checkoutMethod) { case 'guest': $checkoutMethodBlock->clickContinue(); break; case 'login': $checkoutMethodBlock->loginCustomer($this->customer); break; default: throw new \Exception("Undefined checkout method."); break; } }
/** * Get review product prices. * * @param InjectableFixture $product * @param $actualPrices * @return array */ public function getReviewPrices($actualPrices, InjectableFixture $product) { $reviewBlock = $this->checkoutOnepage->getReviewBlock(); $actualPrices['cart_item_price_excl_tax'] = $reviewBlock->getItemPriceExclTax($product->getName()); $actualPrices['cart_item_price_incl_tax'] = $reviewBlock->getItemPriceInclTax($product->getName()); $actualPrices['cart_item_subtotal_excl_tax'] = $reviewBlock->getItemSubExclTax($product->getName()); $actualPrices['cart_item_subtotal_incl_tax'] = $reviewBlock->getItemSubInclTax($product->getName()); return $actualPrices; }
/** * Check that checkbox is present on the last checkout step - Order Review. * Check that after Place order without click on checkbox "Terms and Conditions" order was not successfully placed. * Check that after clicking on "Terms and Conditions" checkbox and "Place Order" button success place order message * appears. * * @param ObjectManager $objectManager * @param string $products * @param CheckoutOnepage $checkoutOnepage * @param CheckoutOnepageSuccess $checkoutOnepageSuccess * @param AssertOrderSuccessPlacedMessage $assertOrderSuccessPlacedMessage * @param array $shipping * @param array $payment * @param CheckoutAgreement $agreement * @return void */ public function processAssert(ObjectManager $objectManager, $products, CheckoutOnepage $checkoutOnepage, CheckoutOnepageSuccess $checkoutOnepageSuccess, AssertOrderSuccessPlacedMessage $assertOrderSuccessPlacedMessage, $shipping, $payment, CheckoutAgreement $agreement) { $paymentBlock = $checkoutOnepage->getPaymentBlock(); $shippingAddressData = ['shippingAddress' => ['dataSet' => 'US_address_1']]; $productsData = ['products' => $products]; $shippingMethodData = ['shipping' => $shipping]; $paymentData = ['payment' => $payment]; $products = $objectManager->create('Magento\\Catalog\\Test\\TestStep\\CreateProductsStep', $productsData)->run(); $objectManager->create('Magento\\Checkout\\Test\\TestStep\\AddProductsToTheCartStep', $products)->run(); $objectManager->create('Magento\\Checkout\\Test\\TestStep\\ProceedToCheckoutStep')->run(); $objectManager->create('Magento\\Checkout\\Test\\TestStep\\FillShippingAddressStep', $shippingAddressData)->run(); $objectManager->create('Magento\\Checkout\\Test\\TestStep\\FillShippingMethodStep', $shippingMethodData)->run(); $objectManager->create('Magento\\Checkout\\Test\\TestStep\\SelectPaymentMethodStep', $paymentData)->run(); $paymentBlock->getSelectedPaymentMethodBlock()->clickPlaceOrder(); \PHPUnit_Framework_Assert::assertEquals(self::NOTIFICATION_MESSAGE, $checkoutOnepage->getAgreementReview()->getNotificationMassage(), 'Notification required message of Terms and Conditions is absent.'); $checkoutOnepage->getAgreementReview()->setAgreement('Yes', $agreement); $paymentBlock->getSelectedPaymentMethodBlock()->clickPlaceOrder(); $assertOrderSuccessPlacedMessage->processAssert($checkoutOnepageSuccess); }
/** * Place order and verify there is no checkbox Terms and Conditions. * * @param FixtureFactory $fixtureFactory * @param ObjectManager $objectManager * @param string $product * @param BrowserInterface $browser * @param CatalogProductView $catalogProductView * @param CheckoutCart $checkoutCart * @param CheckoutOnepage $checkoutOnepage * @param CheckoutAgreement $agreement * @param array $shipping * @param array $payment * @return void * * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function processAssert(FixtureFactory $fixtureFactory, ObjectManager $objectManager, $product, BrowserInterface $browser, CatalogProductView $catalogProductView, CheckoutCart $checkoutCart, CheckoutOnepage $checkoutOnepage, CheckoutAgreement $agreement, $shipping, $payment) { $createProductsStep = $objectManager->create('Magento\\Catalog\\Test\\TestStep\\CreateProductsStep', ['products' => $product]); $product = $createProductsStep->run(); $billingAddress = $fixtureFactory->createByCode('address', ['dataSet' => 'default']); $browser->open($_ENV['app_frontend_url'] . $product['products'][0]->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->clickAddToCartButton(); $catalogProductView->getMessagesBlock()->waitSuccessMessage(); $checkoutCart->open(); $checkoutCart->getCartBlock()->getOnepageLinkBlock()->proceedToCheckout(); $checkoutOnepage->getLoginBlock()->guestCheckout(); $checkoutOnepage->getLoginBlock()->clickContinue(); $checkoutOnepage->getBillingBlock()->fill($billingAddress); $checkoutOnepage->getBillingBlock()->clickContinue(); $checkoutOnepage->getShippingMethodBlock()->selectShippingMethod($shipping); $checkoutOnepage->getShippingMethodBlock()->clickContinue(); $checkoutOnepage->getPaymentMethodsBlock()->selectPaymentMethod($payment); $checkoutOnepage->getPaymentMethodsBlock()->clickContinue(); \PHPUnit_Framework_Assert::assertFalse($checkoutOnepage->getAgreementReview()->checkAgreement($agreement), 'Checkout Agreement \'' . $agreement->getName() . '\' is present in the Place order step.'); }
/** * Assert that credit card is not present on checkout. * * @param CheckoutOnepage $checkoutOnepage * @param $deletedCreditCard */ public function processAssert(CheckoutOnepage $checkoutOnepage, $deletedCreditCard) { \PHPUnit_Framework_Assert::assertFalse($checkoutOnepage->getVaultPaymentBlock()->isSavedCreditCardPresent($deletedCreditCard), 'Credit card is present on checkout.'); }
/** * Add gift message to order * * @return void */ public function run() { $this->checkoutOnepage->getGiftMessagesBlock()->fillGiftMessage($this->giftMessage, $this->products); }
/** * Assert that "Same as Shipping" checkbox of Billing Address selection block is in correct state. * * @param CheckoutOnepage $checkoutOnepage * @param string $billingCheckboxState * @return void */ public function processAssert(CheckoutOnepage $checkoutOnepage, $billingCheckboxState) { $actualResult = $checkoutOnepage->getPaymentBlock()->getSelectedPaymentMethodBlock()->getBillingBlock()->getSameAsShippingCheckboxValue(); \PHPUnit_Framework_Assert::assertEquals($billingCheckboxState, $actualResult, '"Same as Shipping" checkbox has wrong value'); }
/** * Check that checkbox is present on the last checkout step - Order Review. * Check that after Place order without click on checkbox "Terms and Conditions" order was not successfully placed. * Check that after clicking on "Terms and Conditions" checkbox and "Place Order" button success place order message * appears. * * @param FixtureFactory $fixtureFactory * @param ObjectManager $objectManager * @param string $product * @param BrowserInterface $browser * @param CatalogProductView $catalogProductView * @param CheckoutCart $checkoutCart * @param CheckoutOnepage $checkoutOnepage * @param CheckoutOnepageSuccess $checkoutOnepageSuccess * @param AssertOrderSuccessPlacedMessage $assertOrderSuccessPlacedMessage * @param array $shipping * @param array $payment * @return void * * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function processAssert(FixtureFactory $fixtureFactory, ObjectManager $objectManager, $product, BrowserInterface $browser, CatalogProductView $catalogProductView, CheckoutCart $checkoutCart, CheckoutOnepage $checkoutOnepage, CheckoutOnepageSuccess $checkoutOnepageSuccess, AssertOrderSuccessPlacedMessage $assertOrderSuccessPlacedMessage, $shipping, $payment) { $createProductsStep = $objectManager->create('Magento\\Catalog\\Test\\TestStep\\CreateProductsStep', ['products' => $product]); $product = $createProductsStep->run(); $billingAddress = $fixtureFactory->createByCode('address', ['dataSet' => 'default']); $browser->open($_ENV['app_frontend_url'] . $product['products'][0]->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->clickAddToCartButton(); $catalogProductView->getMessagesBlock()->waitSuccessMessage(); $checkoutCart->open(); $checkoutCart->getCartBlock()->getOnepageLinkBlock()->proceedToCheckout(); $checkoutOnepage->getLoginBlock()->clickContinue(); $checkoutOnepage->getBillingBlock()->fill($billingAddress); $checkoutOnepage->getBillingBlock()->clickContinue(); $checkoutOnepage->getShippingMethodBlock()->selectShippingMethod($shipping); $checkoutOnepage->getShippingMethodBlock()->clickContinue(); $checkoutOnepage->getPaymentMethodsBlock()->selectPaymentMethod($payment); $checkoutOnepage->getPaymentMethodsBlock()->clickContinue(); $checkoutOnepage->getAgreementReview()->placeOrder(); \PHPUnit_Framework_Assert::assertEquals(self::NOTIFICATION_MESSAGE, $checkoutOnepage->getAgreementReview()->getNotificationMassage(), 'Notification required message of Terms and Conditions is absent.'); $checkoutOnepage->getAgreementReview()->setAgreement('Yes'); $checkoutOnepage->getAgreementReview()->placeOrder(); $assertOrderSuccessPlacedMessage->processAssert($checkoutOnepageSuccess); }
/** * Run step that selecting checkout method. * * @return void */ public function run() { if ($this->checkoutMethod === 'login') { $this->checkoutOnepage->getLoginBlock()->loginCustomer($this->customer); } }
/** * Click Continue to PayPal button. * * @return array */ public function run() { $this->checkoutOnepage->getPaymentBlock()->getSelectedPaymentMethodBlock()->clickPlaceOrder(); }
/** * Click Continue to PayPal button. * * @return array */ public function run() { $this->checkoutOnepage->getPaymentBlock()->getSelectedPaymentMethodBlock()->inContextPaypalCheckout(); }
/** * Assert that Order Grand Total is correct on checkoutOnePage * * @param CheckoutOnepage $checkoutOnepage * @param string $grandTotal * @return void */ public function processAssert(CheckoutOnepage $checkoutOnepage, $grandTotal) { $checkoutReviewGrandTotal = $checkoutOnepage->getReviewBlock()->getGrandTotal(); \PHPUnit_Framework_Assert::assertEquals($checkoutReviewGrandTotal, number_format($grandTotal, 2), "Grand Total price: {$checkoutReviewGrandTotal} not equals with price from data set: " . $grandTotal); }
/** * Fill shipping address. * * @return void */ public function run() { if ($this->shippingAddress) { $this->checkoutOnepage->getShippingBlock()->fill($this->shippingAddress); } }
/** * Assert that Order Subtotal is correct on Review page. * * @param CheckoutOnepage $checkoutOnepage * @param string $subTotal * @return void */ public function processAssert(CheckoutOnepage $checkoutOnepage, $subTotal) { $reviewSubTotal = $checkoutOnepage->getReviewBlock()->getSubtotal(); \PHPUnit_Framework_Assert::assertEquals($reviewSubTotal, number_format($subTotal, 2), 'Subtotal price: \'' . $reviewSubTotal . '\' not equals with price from data set: \'' . $reviewSubTotal . '\''); }
/** * Fill billing address * * @return void */ public function run() { $this->checkoutOnepage->getBillingBlock()->fillBilling($this->billingAddress); $this->checkoutOnepage->getBillingBlock()->clickContinue(); }
/** * Run step that saves credit card. * * @return void */ public function run() { $this->checkoutOnepage->getPaymentBlock()->getSelectedPaymentMethodBlock()->saveCreditCard($this->payment['method'], $this->creditCardSave); }
/** * Fill billing address * * @return void */ public function run() { $customer = $this->checkoutMethod === 'register' ? $this->customer : null; $this->checkoutOnepage->getBillingBlock()->fillBilling($this->billingAddress, $customer); $this->checkoutOnepage->getBillingBlock()->clickContinue(); }
/** * Assert that total tax price is correct on Review page. * * @param CheckoutOnepage $checkoutOnepage * @param string $taxTotal * @return void */ public function processAssert(CheckoutOnepage $checkoutOnepage, $taxTotal) { $reviewTaxTotal = $checkoutOnepage->getReviewBlock()->getTax(); \PHPUnit_Framework_Assert::assertEquals($reviewTaxTotal, number_format($taxTotal, 2), "Tax price '{$reviewTaxTotal}' not equals with price from data set '{$taxTotal}'."); }
/** * Assert that Order Grand Total is correct on checkoutOnePage * * @param CheckoutOnepage $checkoutOnepage * @param string $grandTotal * @return void */ public function processAssert(CheckoutOnepage $checkoutOnepage, $grandTotal) { $checkoutReviewGrandTotal = $checkoutOnepage->getReviewBlock()->getGrandTotal(); \PHPUnit_Framework_Assert::assertEquals($checkoutReviewGrandTotal, $grandTotal, 'Grand Total price: \'' . $checkoutReviewGrandTotal . '\' not equals with price from data set: \'' . $grandTotal . '\''); }
/** * Run step that selects saved credit card. * * @return void */ public function run() { $this->payment['method'] .= '_item_'; $this->checkoutOnepage->getPaymentBlock()->selectPaymentMethod($this->payment); }