diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Actions.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Actions.php index 398553b2abd3c3da0691a9c26890ce2c5ef19c80..beb4d2219a68b17bc7507c1648a69764f0efe256 100644 --- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Actions.php +++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Actions.php @@ -178,10 +178,7 @@ class Actions extends Block public function cancel() { $this->_rootElement->find($this->cancel)->click(); - $element = $this->browser->find($this->confirmModal); - /** @var \Magento\Ui\Test\Block\Adminhtml\Modal $modal */ - $modal = $this->blockFactory->create(\Magento\Ui\Test\Block\Adminhtml\Modal::class, ['element' => $element]); - $modal->acceptAlert(); + $this->acceptAlert(); } /** @@ -202,6 +199,7 @@ class Actions extends Block public function void() { $this->_rootElement->find($this->void)->click(); + $this->acceptAlert(); } /** @@ -266,27 +264,36 @@ class Actions extends Block } /** - * Accept order + * Accept order. + * * @return void */ public function accept() { $acceptPayment = '#accept_payment'; $this->_rootElement->find($acceptPayment)->click(); - $element = $this->browser->find($this->confirmModal); - /** @var Modal $modal */ - $modal = $this->blockFactory->create(Modal::class, ['element' => $element]); - $modal->acceptAlert(); + $this->acceptAlert(); } /** - * Deny order + * Deny order. + * * @return void */ public function deny() { $denyPayment = '#deny_payment'; $this->_rootElement->find($denyPayment)->click(); + $this->acceptAlert(); + } + + /** + * Accept alert. + * + * @return void + */ + private function acceptAlert() + { $element = $this->browser->find($this->confirmModal); /** @var Modal $modal */ $modal = $this->blockFactory->create(Modal::class, ['element' => $element]); diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/History.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/History.php index 740f8f03fe6394a18ceed667a0ba695262229cf2..8ae8bbb31584ef6ab7859b1c08ac62eb09f52016 100644 --- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/History.php +++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/History.php @@ -56,6 +56,13 @@ class History extends Block */ protected $refundedAmount = '//div[@class="note-list-comment"][contains(text(), "We refunded")]'; + /** + * Voided Amount. + * + * @var string + */ + protected $voidedAmount = '//div[@class="note-list-comment"][contains(text(), "Voided authorization")]'; + /** * Note list locator. * @@ -117,6 +124,17 @@ class History extends Block return $result; } + /** + * Get the voided amount from the comments history. + * + * @return string + */ + public function getVoidedAmount() + { + $this->waitCommentsHistory(); + return $this->_rootElement->find($this->voidedAmount, Locator::SELECTOR_XPATH)->getText(); + } + /** * Gets the status which presented in comment * diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertOrderSuccessVoidedMessage.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertOrderSuccessVoidedMessage.php new file mode 100644 index 0000000000000000000000000000000000000000..99afc944edb959cb5d27d3391a1d6f34cc131741 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertOrderSuccessVoidedMessage.php @@ -0,0 +1,54 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Sales\Test\Constraint; + +use Magento\Sales\Test\Page\Adminhtml\OrderStatusIndex; +use Magento\Mtf\Constraint\AbstractConstraint; + +/** + * Assert that success message about order void is present. + * + */ +class AssertOrderSuccessVoidedMessage extends AbstractConstraint +{ + /* tags */ + const SEVERITY = 'low'; + /* end tags */ + + /** + * Message about successful void. + */ + const SUCCESS_MESSAGE = 'The payment has been voided.'; + + /** + * Assert that success message is displayed after order is voided. + * + * @param OrderStatusIndex $orderStatusIndexPage + * @return void + */ + public function processAssert(OrderStatusIndex $orderStatusIndexPage) + { + $actualMessage = $orderStatusIndexPage->getMessagesBlock()->getSuccessMessage(); + \PHPUnit_Framework_Assert::assertEquals( + self::SUCCESS_MESSAGE, + $actualMessage, + 'Wrong success message is displayed.' + . "\nExpected: " . self::SUCCESS_MESSAGE + . "\nActual: " . $actualMessage + ); + } + + /** + * Text of voided order message assert. + * + * @return string + */ + public function toString() + { + return 'Order successful void message is present.'; + } +} diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertVoidInCommentsHistory.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertVoidInCommentsHistory.php new file mode 100644 index 0000000000000000000000000000000000000000..bc3e90ee7f776c74fa8b55fb95be6ac19d49ffca --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertVoidInCommentsHistory.php @@ -0,0 +1,57 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Sales\Test\Constraint; + +use Magento\Sales\Test\Page\Adminhtml\SalesOrderView; +use Magento\Sales\Test\Page\Adminhtml\OrderIndex; +use Magento\Mtf\Constraint\AbstractConstraint; + +/** + * Assert that comment about voided amount exists in Comments History section on order page in Admin. + */ +class AssertVoidInCommentsHistory extends AbstractConstraint +{ + /** + * Message about voided amount in order. + */ + const VOIDED_AMOUNT = 'Voided authorization. Amount: $'; + + /** + * Assert that comment about voided amount exist in Comments History section on order page in Admin. + * + * @param SalesOrderView $salesOrderView + * @param OrderIndex $salesOrder + * @param string $orderId + * @param array $prices + * @return void + */ + public function processAssert( + SalesOrderView $salesOrderView, + OrderIndex $salesOrder, + $orderId, + array $prices + ) { + $salesOrder->open(); + $salesOrder->getSalesOrderGrid()->searchAndOpen(['id' => $orderId]); + + \PHPUnit_Framework_Assert::assertContains( + self::VOIDED_AMOUNT . $prices['grandTotal'], + $salesOrderView->getOrderHistoryBlock()->getVoidedAmount(), + 'Incorrect voided amount value for the order #' . $orderId + ); + } + + /** + * Returns string representation of successful assertion. + * + * @return string + */ + public function toString() + { + return "Message about voided amount is available in Comments History section."; + } +} diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/VoidAuthorizationTest.php b/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/VoidAuthorizationTest.php new file mode 100644 index 0000000000000000000000000000000000000000..27de6bdd5ea2c296dd46c5d53d68b64b14802756 --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/VoidAuthorizationTest.php @@ -0,0 +1,49 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Sales\Test\TestCase; + +use Magento\Mtf\TestCase\Scenario; + +/** + * Preconditions: + * 1. Configure shipping method. + * 2. Configure payment method. + * 3. Create products. + * + * Steps: + * 1. Go to Storefront. + * 2. Add products to the cart. + * 3. Click the 'Proceed to Checkout' button. + * 4. Select checkout method according to dataset. + * 5. Fill billing information and select the 'Ship to this address' option. + * 6. Select shipping method. + * 7. Select payment method. + * 8. Place order. + * 9. Open created order. + * 10. Click 'Void' button. + * 11. Perform assertions. + * + * @group Order_Management + * @ZephyrId MAGETWO-39444 + */ +class VoidAuthorizationTest extends Scenario +{ + /* tags */ + const MVP = 'yes'; + const TEST_TYPE = '3rd_party_test'; + /* end tags */ + + /** + * Void order authorization. + * + * @return void + */ + public function test() + { + $this->executeScenario(); + } +} diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/VoidAuthorizationStep.php b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/VoidAuthorizationStep.php new file mode 100644 index 0000000000000000000000000000000000000000..6897233c7242cf3a2289a93111912c6021a99f2d --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/VoidAuthorizationStep.php @@ -0,0 +1,63 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Sales\Test\TestStep; + +use Magento\Sales\Test\Fixture\OrderInjectable; +use Magento\Sales\Test\Page\Adminhtml\OrderIndex; +use Magento\Mtf\TestStep\TestStepInterface; +use Magento\Sales\Test\Page\Adminhtml\SalesOrderView; + +/** + * Void authorization for created order. + */ +class VoidAuthorizationStep implements TestStepInterface +{ + /** + * Sales order index page. + * + * @var OrderIndex + */ + protected $orderIndex; + + /** + * Order instance. + * + * @var OrderInjectable + */ + protected $order; + + /** + * Order view page. + * + * @var SalesOrderView + */ + private $salesOrderView; + + /** + * @param OrderInjectable $order + * @param OrderIndex $orderIndex + * @param SalesOrderView $salesOrderView + */ + public function __construct(OrderInjectable $order, OrderIndex $orderIndex, SalesOrderView $salesOrderView) + { + $this->orderIndex = $orderIndex; + $this->order = $order; + $this->salesOrderView = $salesOrderView; + } + + /** + * Void authorization. + * + * @return void + */ + public function run() + { + $this->orderIndex->open(); + $this->orderIndex->getSalesOrderGrid()->searchAndOpen(['id' => $this->order->getId()]); + $this->salesOrderView->getPageActions()->void(); + } +} diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/etc/testcase.xml b/dev/tests/functional/tests/app/Magento/Sales/Test/etc/testcase.xml index eebdf2128dc70e8dc90a0867040e1e3682462768..030b0f4f32df0eacd76c99cbe55537df1c734cf5 100644 --- a/dev/tests/functional/tests/app/Magento/Sales/Test/etc/testcase.xml +++ b/dev/tests/functional/tests/app/Magento/Sales/Test/etc/testcase.xml @@ -35,6 +35,22 @@ <step name="selectPaymentMethodForOrder" module="Magento_Sales" next="submitOrder" /> <step name="submitOrder" module="Magento_Sales" /> </scenario> + <scenario name="VoidAuthorizationTest" firstStep="setupConfiguration"> + <step name="setupConfiguration" module="Magento_Config" next="createProducts" /> + <step name="createProducts" module="Magento_Catalog" next="createTaxRule" /> + <step name="createTaxRule" module="Magento_Tax" next="addProductsToTheCart" /> + <step name="addProductsToTheCart" module="Magento_Checkout" next="estimateShippingAndTax" /> + <step name="estimateShippingAndTax" module="Magento_Checkout" next="clickProceedToCheckout" /> + <step name="clickProceedToCheckout" module="Magento_Checkout" next="createCustomer" /> + <step name="createCustomer" module="Magento_Customer" next="selectCheckoutMethod" /> + <step name="selectCheckoutMethod" module="Magento_Checkout" next="fillShippingAddress" /> + <step name="fillShippingAddress" module="Magento_Checkout" next="fillShippingMethod" /> + <step name="fillShippingMethod" module="Magento_Checkout" next="selectPaymentMethod" /> + <step name="selectPaymentMethod" module="Magento_Checkout" next="fillBillingInformation" /> + <step name="fillBillingInformation" module="Magento_Checkout" next="placeOrder" /> + <step name="placeOrder" module="Magento_Checkout" next="voidAuthorization" /> + <step name="voidAuthorization" module="Magento_Sales" /> + </scenario> <scenario name="PrintOrderFrontendGuestTest" firstStep="createProducts"> <step name="createProducts" module="Magento_Catalog" next="createCustomer" /> <step name="createCustomer" module="Magento_Customer" next="openSalesOrders" />