From 87d9218c0985c5d97dd586a99a78ffdec71c9220 Mon Sep 17 00:00:00 2001
From: Vasyl Kozyrenko <vkozyrenko@magento.com>
Date: Wed, 4 Jan 2017 14:45:38 +0200
Subject: [PATCH] MTA-3901: Add variation for Partial Refund an order placed
 through Braintree with Partial capture

---
 ...ateOnlineCreditMemoBraintreePaypalTest.xml |  3 ++
 .../CreateOnlineCreditMemoBraintreeTest.xml   |  4 +--
 .../Block/Adminhtml/Order/AbstractItems.php   |  4 +--
 .../Adminhtml/Order/Shipment/View/Items.php   | 10 +++----
 .../AssertRefundInCommentsHistory.php         |  2 +-
 .../Sales/Test/TestStep/SubmitOrderStep.php   | 28 ++++++-------------
 .../Shipping/Test/Block/Adminhtml/Form.php    |  2 +-
 7 files changed, 23 insertions(+), 30 deletions(-)

diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml
index c0ffd06eb47..c791dfb10b6 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml
@@ -54,6 +54,9 @@
             </data>
             <data name="order/data/price/refund" xsi:type="array">
                 <item name="0" xsi:type="array">
+                    <item name="grand_creditmemo_total" xsi:type="string">621.20</item>
+                </item>
+                <item name="1" xsi:type="array">
                     <item name="grand_creditmemo_total" xsi:type="string">606.20</item>
                 </item>
             </data>
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreeTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreeTest.xml
index fd4dd405ba0..2c1deb13024 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreeTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreeTest.xml
@@ -83,10 +83,10 @@
             </data>
             <data name="order/data/price/refund" xsi:type="array">
                 <item name="0" xsi:type="array">
-                    <item name="grand_creditmemo_total" xsi:type="string">1.08</item>
+                    <item name="grand_creditmemo_total" xsi:type="string">134.07</item>
                 </item>
                 <item name="1" xsi:type="array">
-                    <item name="grand_creditmemo_total" xsi:type="string">134.07</item>
+                    <item name="grand_creditmemo_total" xsi:type="string">1.08</item>
                 </item>
             </data>
             <data name="transactions/refund" xsi:type="array">
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractItems.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractItems.php
index 38ad9139d4f..012cac3848a 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractItems.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractItems.php
@@ -111,7 +111,7 @@ class AbstractItems extends Block
      * @param ElementInterface $item
      * @return null|int
      */
-    private function getQty(ElementInterface $item)
+    protected function getQty(ElementInterface $item)
     {
         $qty = null;
         $elements = $item->getElements($this->qty);
@@ -127,7 +127,7 @@ class AbstractItems extends Block
      * @param ElementInterface $item
      * @return string
      */
-    private function getSku(ElementInterface $item)
+    protected function getSku(ElementInterface $item)
     {
         $itemContent = $item->find($this->sku)->getText();
         $itemContent = preg_replace('/\n|\r/', '', $itemContent);
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Shipment/View/Items.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Shipment/View/Items.php
index 0988649b5df..8ba05c57137 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Shipment/View/Items.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Shipment/View/Items.php
@@ -9,13 +9,12 @@ namespace Magento\Sales\Test\Block\Adminhtml\Order\Shipment\View;
 use Magento\Sales\Test\Block\Adminhtml\Order\AbstractItems;
 
 /**
- * Class Items
- * Shipment Items block on Shipment view page
+ * Shipment Items block on Shipment view page.
  */
 class Items extends AbstractItems
 {
     /**
-     * Get items data
+     * Get items data.
      *
      * @return array
      */
@@ -27,8 +26,9 @@ class Items extends AbstractItems
         foreach ($items as $item) {
             $itemData = [];
 
-            $itemData += $this->parseProductName($item->find($this->product)->getText());
-            $itemData['qty'] = $item->find($this->qty)->getText();
+            $itemData['product'] = preg_replace('/\n|\r/', '', $item->find($this->title)->getText());
+            $itemData['sku'] = $this->getSku($item);
+            $itemData['qty'] = $this->getQty($item);
 
             $data[] = $itemData;
         }
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInCommentsHistory.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInCommentsHistory.php
index 97e99eb9f7b..17bc5332f3d 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInCommentsHistory.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInCommentsHistory.php
@@ -39,7 +39,7 @@ class AssertRefundInCommentsHistory extends AbstractConstraint
         $salesOrder->open();
         $salesOrder->getSalesOrderGrid()->searchAndOpen(['id' => $orderId]);
         $refundedPrices = $order->getPrice()['refund'];
-        $actualRefundedAmount = $salesOrderView->getOrderHistoryBlock()->getRefundedAmount();
+        $actualRefundedAmount = array_reverse($salesOrderView->getOrderHistoryBlock()->getRefundedAmount());
         foreach ($refundedPrices as $key => $refundedPrice) {
             \PHPUnit_Framework_Assert::assertRegExp(
                 sprintf(self::REFUNDED_AMOUNT_PATTERN, $refundedPrice['grand_creditmemo_total']),
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/SubmitOrderStep.php b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/SubmitOrderStep.php
index ef35728207a..3390d579cc3 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/SubmitOrderStep.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/SubmitOrderStep.php
@@ -8,7 +8,6 @@ namespace Magento\Sales\Test\TestStep;
 
 use Magento\Customer\Test\Fixture\Address;
 use Magento\Customer\Test\Fixture\Customer;
-use Magento\Sales\Test\Fixture\OrderInjectable;
 use Magento\Sales\Test\Page\Adminhtml\OrderCreateIndex;
 use Magento\Sales\Test\Page\Adminhtml\SalesOrderView;
 use Magento\Mtf\Fixture\FixtureFactory;
@@ -61,20 +60,12 @@ class SubmitOrderStep implements TestStepInterface
      */
     private $products;
 
-    /**
-     * Fixture OrderInjectable.
-     *
-     * @var OrderInjectable
-     */
-    private $order;
-
     /**
      * @param OrderCreateIndex $orderCreateIndex
      * @param SalesOrderView $salesOrderView
      * @param FixtureFactory $fixtureFactory
      * @param Customer $customer
      * @param \Magento\Mtf\Fixture\FixtureInterface[] $products
-     * @param OrderInjectable|null $order
      * @param Address|null $billingAddress
      */
     public function __construct(
@@ -83,7 +74,6 @@ class SubmitOrderStep implements TestStepInterface
         FixtureFactory $fixtureFactory,
         Customer $customer,
         array $products,
-        OrderInjectable $order = null,
         Address $billingAddress = null
     ) {
         $this->orderCreateIndex = $orderCreateIndex;
@@ -91,8 +81,8 @@ class SubmitOrderStep implements TestStepInterface
         $this->fixtureFactory = $fixtureFactory;
         $this->customer = $customer;
         $this->products = $products;
-        $this->order = $order;
         $this->billingAddress = $billingAddress;
+        $this->products = $products;
     }
 
     /**
@@ -105,16 +95,16 @@ class SubmitOrderStep implements TestStepInterface
         $this->orderCreateIndex->getCreateBlock()->submitOrder();
         $this->salesOrderView->getMessagesBlock()->waitSuccessMessage();
         $orderId = trim($this->salesOrderView->getTitleBlock()->getTitle(), '#');
-        $data = [
-            'id' => $orderId,
-            'customer_id' => ['customer' => $this->customer],
-            'entity_id' => ['products' => $this->products],
-            'billing_address_id' => ['billingAddress' => $this->billingAddress],
-        ];
-        $orderData = $this->order !== null ? $this->order->getData() : [];
         $order = $this->fixtureFactory->createByCode(
             'orderInjectable',
-            ['data' => array_merge($data, $orderData)]
+            [
+                'data' => [
+                    'id' => $orderId,
+                    'customer_id' => ['customer' => $this->customer],
+                    'entity_id' => ['products' => $this->products],
+                    'billing_address_id' => ['billingAddress' => $this->billingAddress],
+                ]
+            ]
         );
 
         return ['orderId' => $orderId, 'order' => $order];
diff --git a/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form.php b/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form.php
index f46b812ef0d..38fcff9a1de 100644
--- a/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form.php
+++ b/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form.php
@@ -74,7 +74,7 @@ class Form extends AbstractForm
         }
         if (isset($data['items_data']) && $products !== null) {
             foreach ($products as $key => $product) {
-                $this->getItemsBlock()->getItemProductBlock($product)->fillProduct($data['items_data'][$key]);
+                $this->getItemsBlock()->getItemProductBlock($product->getSku())->fillProduct($data['items_data'][$key]);
             }
         }
     }
-- 
GitLab