From 0b86f931a9e083a102c3347a7e87ca67c4bdcbc8 Mon Sep 17 00:00:00 2001
From: Rykh Oleksandr <orykh@magento.com>
Date: Fri, 6 Jan 2017 15:46:22 +0200
Subject: [PATCH] MTA-3901: Add variation for Partial Refund an order placed
 through Braintree with Partial capture

- fixed fail with comments
---
 .../Magento/Checkout/Test/Fixture/Cart/Items.php |  4 +---
 .../Test/Fixture/Cart/Item.php                   |  6 +++++-
 .../Test/TestCase/CreateOnlineCreditMemoTest.xml | 16 +++++++++++-----
 .../Order/View/Tab/Info/CommentsHistoryBlock.php |  5 ++++-
 .../AssertCaptureInCommentsHistory.php           |  2 +-
 .../Constraint/AssertRefundInCommentsHistory.php |  2 +-
 .../Sales/Test/TestStep/SubmitOrderStep.php      |  1 -
 .../Block/Product/ProductList/ProductItem.php    |  4 +++-
 .../ConfigurableProduct/CheckoutData.xml         |  4 ++++
 9 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Fixture/Cart/Items.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Fixture/Cart/Items.php
index 1d81b595b9b..117a028d835 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Fixture/Cart/Items.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Fixture/Cart/Items.php
@@ -53,8 +53,6 @@ class Items extends DataSource
      *
      * @param null|string $key
      * @return array
-     *
-     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
     public function getData($key = null)
     {
@@ -65,7 +63,7 @@ class Items extends DataSource
             $this->data[] = $item;
         }
 
-        return $this->data;
+        return parent::getData($key);
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/Cart/Item.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/Cart/Item.php
index 46cf2ceefe8..d317d1686a9 100644
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/Cart/Item.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/Cart/Item.php
@@ -48,7 +48,11 @@ class Item extends \Magento\Catalog\Test\Fixture\Cart\Item
             ];
         }
         $attributeKey = implode(' ', $attributeKey);
-        $cartItem['sku'] = $productData['configurable_attributes_data']['matrix'][$attributeKey]['sku'];
+        if (isset($productData['configurable_attributes_data']['matrix'][$attributeKey])) {
+            $cartItem['sku'] = $productData['configurable_attributes_data']['matrix'][$attributeKey]['sku'];
+        } else {
+            $cartItem['sku'] = $productData['sku'];
+        }
         $cartItem['name'] = $productData['name'];
 
         $cartItem['options'] = isset($cartItem['options'])
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateOnlineCreditMemoTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateOnlineCreditMemoTest.xml
index 215764edfb4..c0bde12b15a 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateOnlineCreditMemoTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateOnlineCreditMemoTest.xml
@@ -8,6 +8,7 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Sales\Test\TestCase\CreateOnlineCreditMemoTest" summary="Create online credit memo for order placed with online payment method">
         <variation name="CreateOnlineCreditMemoPaymentsProTestVariation1" summary="Create Refund for Order Paid with PayPal Payments Pro" ticketId="MAGETWO-13059">
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="customer/dataset" xsi:type="string">default</data>
             <data name="checkoutMethod" xsi:type="string">guest</data>
@@ -38,7 +39,6 @@
                 <item name="transactionType" xsi:type="string">Capture</item>
                 <item name="statusIsClosed" xsi:type="string">Yes</item>
             </data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCommentsHistory" />
@@ -46,11 +46,19 @@
             <constraint name="Magento\Sales\Test\Constraint\AssertTransactionStatus" />
         </variation>
         <variation name="CreateOnlineCreditMemoPayflowProVariation1" summary="Create Refund for Order Paid with PayPal Payflow Pro" ticketId="MAGETWO-13063">
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="customer/dataset" xsi:type="string">default</data>
             <data name="checkoutMethod" xsi:type="string">guest</data>
-            <data name="refundedPrices" xsi:type="array">
-                <item name="0" xsi:type="string">15.00</item>
+            <data name="order/data/refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="invoiceId" xsi:type="string">0</item>
+                </item>
+            </data>
+            <data name="order/data/price/refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="grand_creditmemo_total" xsi:type="string">15.00</item>
+                </item>
             </data>
             <data name="shippingAddress/dataset" xsi:type="string">US_address_1_without_email</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
@@ -58,7 +66,6 @@
             <data name="payment/method" xsi:type="string">payflowpro</data>
             <data name="configData" xsi:type="string">payflowpro</data>
             <data name="creditCard/dataset" xsi:type="string">visa_default</data>
-            <data name="data/items_data/0/qty" xsi:type="string">-</data>
             <data name="status" xsi:type="string">Closed</data>
             <data name="transactions/Authorization" xsi:type="array">
                 <item name="transactionType" xsi:type="string">Authorization</item>
@@ -72,7 +79,6 @@
                 <item name="transactionType" xsi:type="string">Capture</item>
                 <item name="statusIsClosed" xsi:type="string">Yes</item>
             </data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCommentsHistory" />
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/View/Tab/Info/CommentsHistoryBlock.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/View/Tab/Info/CommentsHistoryBlock.php
index ce36ae7324c..61f6f923016 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/View/Tab/Info/CommentsHistoryBlock.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/View/Tab/Info/CommentsHistoryBlock.php
@@ -70,8 +70,11 @@ class CommentsHistoryBlock extends Block
                 'time' => $item->find($this->commentHistoryTime)->getText(),
                 'status' => $item->find($this->commentHistoryStatus)->getText(),
                 'is_customer_notified' => $item->find($this->commentHistoryNotifiedStatus)->getText(),
-                'comment' => $item->find($this->comment)->getText()
+                'comment' => '',
             ];
+            if ($item->find($this->comment)->isVisible()) {
+                $result[$key]['comment'] = $item->find($this->comment)->getText();
+            }
         }
 
         return $result;
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertCaptureInCommentsHistory.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertCaptureInCommentsHistory.php
index cfaf95bbdeb..48670ab4546 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertCaptureInCommentsHistory.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertCaptureInCommentsHistory.php
@@ -43,7 +43,7 @@ class AssertCaptureInCommentsHistory extends AbstractConstraint
         $comments = $infoTab->getCommentsHistoryBlock()->getComments();
 
         foreach ($comments as $key => $comment) {
-            if (stristr($comment['comment'], 'captured') === false) {
+            if (strstr($comment['comment'], 'Captured') === false) {
                 unset($comments[$key]);
             }
         }
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 2b68473a7fb..949fd22e3b2 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
@@ -48,7 +48,7 @@ class AssertRefundInCommentsHistory extends AbstractConstraint
                 unset($comments[$key]);
             }
         }
-        $comments = array_values($comments);
+        $comments = array_reverse(array_values($comments));
 
         $refundedPrices = $order->getPrice()['refund'];
         foreach ($refundedPrices as $key => $refundedPrice) {
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 3967b6571ba..134f7add98f 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
@@ -61,7 +61,6 @@ class SubmitOrderStep implements TestStepInterface
     private $products;
 
     /**
-     * @constructor
      * @param OrderCreateIndex $orderCreateIndex
      * @param SalesOrderView $salesOrderView
      * @param FixtureFactory $fixtureFactory
diff --git a/dev/tests/functional/tests/app/Magento/Swatches/Test/Block/Product/ProductList/ProductItem.php b/dev/tests/functional/tests/app/Magento/Swatches/Test/Block/Product/ProductList/ProductItem.php
index 414d03bc687..a69e9e4f49c 100755
--- a/dev/tests/functional/tests/app/Magento/Swatches/Test/Block/Product/ProductList/ProductItem.php
+++ b/dev/tests/functional/tests/app/Magento/Swatches/Test/Block/Product/ProductList/ProductItem.php
@@ -36,7 +36,9 @@ class ProductItem extends CatalogProductItem
         $attributes = $confAttrSource->getAttributes();
 
         foreach ($options as $option) {
-            if (!isset($attributes[$option['title']])) {
+            if (!isset($attributes[$option['title']])
+                || stripos ($attributes[$option['title']]->getFrontendInput(), "swatch") === false
+            ) {
                 continue;
             }
             $availableOptions = $attributes[$option['title']]->getOptions();
diff --git a/dev/tests/functional/tests/app/Magento/Swatches/Test/Repository/ConfigurableProduct/CheckoutData.xml b/dev/tests/functional/tests/app/Magento/Swatches/Test/Repository/ConfigurableProduct/CheckoutData.xml
index 9b369d5a536..9e909245b88 100644
--- a/dev/tests/functional/tests/app/Magento/Swatches/Test/Repository/ConfigurableProduct/CheckoutData.xml
+++ b/dev/tests/functional/tests/app/Magento/Swatches/Test/Repository/ConfigurableProduct/CheckoutData.xml
@@ -34,6 +34,10 @@
                         <item name="title" xsi:type="string">attribute_key_0</item>
                         <item name="value" xsi:type="string">option_key_1</item>
                     </item>
+                    <item name="1" xsi:type="array">
+                        <item name="title" xsi:type="string">attribute_key_1</item>
+                        <item name="value" xsi:type="string">option_key_1</item>
+                    </item>
                 </item>
             </field>
             <field name="qty" xsi:type="string">1</field>
-- 
GitLab