| Index: chrome/browser/ui/views/payments/payment_request_credit_card_editor_interactive_uitest.cc
|
| diff --git a/chrome/browser/ui/views/payments/payment_request_credit_card_editor_interactive_uitest.cc b/chrome/browser/ui/views/payments/payment_request_credit_card_editor_interactive_uitest.cc
|
| index ac01aa10192528760f35eef1e5bca04a663197c8..3e7b5f34d813583e747aebb1c0d0e614ac4df347 100644
|
| --- a/chrome/browser/ui/views/payments/payment_request_credit_card_editor_interactive_uitest.cc
|
| +++ b/chrome/browser/ui/views/payments/payment_request_credit_card_editor_interactive_uitest.cc
|
| @@ -2,6 +2,8 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include <vector>
|
| +
|
| #include "base/macros.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/time/time.h"
|
| @@ -13,6 +15,7 @@
|
| #include "components/autofill/core/browser/personal_data_manager_observer.h"
|
| #include "components/autofill/core/browser/test_autofill_clock.h"
|
| #include "components/payments/payment_request.h"
|
| +#include "content/public/test/browser_test_utils.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -176,4 +179,144 @@ IN_PROC_BROWSER_TEST_F(PaymentRequestCreditCardEditorTest, EnteringEmptyData) {
|
| EXPECT_TRUE(textfield->invalid());
|
| }
|
|
|
| +class PaymentRequestCreditCardBasicCardTest
|
| + : public PaymentRequestInteractiveTestBase {
|
| + protected:
|
| + PaymentRequestCreditCardBasicCardTest()
|
| + : PaymentRequestInteractiveTestBase(
|
| + "/payment_request_basic_card_test.html") {}
|
| +
|
| + void InvokePaymentRequestWithJs(const std::string& js) {
|
| + ResetEventObserver(DialogEvent::DIALOG_OPENED);
|
| +
|
| + ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), js));
|
| +
|
| + WaitForObservedEvent();
|
| + }
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(PaymentRequestCreditCardBasicCardTest);
|
| +};
|
| +
|
| +// One network is specified in 'basic-card' data, one in supportedMethods.
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestCreditCardBasicCardTest,
|
| + BasicCard_NetworksSpecified) {
|
| + InvokePaymentRequestWithJs("buy();");
|
| +
|
| + std::vector<PaymentRequest*> requests =
|
| + GetPaymentRequests(GetActiveWebContents());
|
| + EXPECT_EQ(1u, requests.size());
|
| + std::vector<std::string> supported_card_networks =
|
| + requests[0]->supported_card_networks();
|
| + EXPECT_EQ(2u, supported_card_networks.size());
|
| + // The networks appear in the order in which they were specified by the
|
| + // merchant.
|
| + EXPECT_EQ("mastercard", supported_card_networks[0]);
|
| + EXPECT_EQ("visa", supported_card_networks[1]);
|
| +}
|
| +
|
| +// Only specifying 'basic-card' with no supportedNetworks means all networks are
|
| +// supported.
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestCreditCardBasicCardTest,
|
| + BasicCard_NoNetworksSpecified) {
|
| + InvokePaymentRequestWithJs("buyBasicCard();");
|
| +
|
| + std::vector<PaymentRequest*> requests =
|
| + GetPaymentRequests(GetActiveWebContents());
|
| + EXPECT_EQ(1u, requests.size());
|
| + std::vector<std::string> supported_card_networks =
|
| + requests[0]->supported_card_networks();
|
| + // The default ordering is alphabetical.
|
| + EXPECT_EQ(8u, supported_card_networks.size());
|
| + EXPECT_EQ("amex", supported_card_networks[0]);
|
| + EXPECT_EQ("diners", supported_card_networks[1]);
|
| + EXPECT_EQ("discover", supported_card_networks[2]);
|
| + EXPECT_EQ("jcb", supported_card_networks[3]);
|
| + EXPECT_EQ("mastercard", supported_card_networks[4]);
|
| + EXPECT_EQ("mir", supported_card_networks[5]);
|
| + EXPECT_EQ("unionpay", supported_card_networks[6]);
|
| + EXPECT_EQ("visa", supported_card_networks[7]);
|
| +}
|
| +
|
| +// Specifying 'basic-card' after having explicitely included a network yields
|
| +// the expected order when in different supportedMethods lists.
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestCreditCardBasicCardTest,
|
| + BasicCard_NetworkThenBasicCard_DifferentList) {
|
| + InvokePaymentRequestWithJs(
|
| + "buyHelper([{"
|
| + " supportedMethods: ['mastercard'],"
|
| + "}, {"
|
| + " supportedMethods: ['basic-card']"
|
| + "}]);");
|
| +
|
| + std::vector<PaymentRequest*> requests =
|
| + GetPaymentRequests(GetActiveWebContents());
|
| + EXPECT_EQ(1u, requests.size());
|
| + std::vector<std::string> supported_card_networks =
|
| + requests[0]->supported_card_networks();
|
| + // 'mastercard' is first because it was explicitely specified first. The rest
|
| + // is alphabetical.
|
| + EXPECT_EQ(8u, supported_card_networks.size());
|
| + EXPECT_EQ("mastercard", supported_card_networks[0]);
|
| + EXPECT_EQ("amex", supported_card_networks[1]);
|
| + EXPECT_EQ("diners", supported_card_networks[2]);
|
| + EXPECT_EQ("discover", supported_card_networks[3]);
|
| + EXPECT_EQ("jcb", supported_card_networks[4]);
|
| + EXPECT_EQ("mir", supported_card_networks[5]);
|
| + EXPECT_EQ("unionpay", supported_card_networks[6]);
|
| + EXPECT_EQ("visa", supported_card_networks[7]);
|
| +}
|
| +
|
| +// Specifying 'basic-card' after having explicitely included a network yields
|
| +// the expected order when in the same supportedMethods list.
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestCreditCardBasicCardTest,
|
| + BasicCard_NetworkThenBasicCard_SameList) {
|
| + InvokePaymentRequestWithJs(
|
| + "buyHelper([{"
|
| + " supportedMethods: ['visa', 'basic-card']"
|
| + "}]);");
|
| +
|
| + std::vector<PaymentRequest*> requests =
|
| + GetPaymentRequests(GetActiveWebContents());
|
| + EXPECT_EQ(1u, requests.size());
|
| + std::vector<std::string> supported_card_networks =
|
| + requests[0]->supported_card_networks();
|
| + // 'visa' is first because it was explicitely specified first. The rest
|
| + // is alphabetical.
|
| + EXPECT_EQ(8u, supported_card_networks.size());
|
| + EXPECT_EQ("visa", supported_card_networks[0]);
|
| + EXPECT_EQ("amex", supported_card_networks[1]);
|
| + EXPECT_EQ("diners", supported_card_networks[2]);
|
| + EXPECT_EQ("discover", supported_card_networks[3]);
|
| + EXPECT_EQ("jcb", supported_card_networks[4]);
|
| + EXPECT_EQ("mastercard", supported_card_networks[5]);
|
| + EXPECT_EQ("mir", supported_card_networks[6]);
|
| + EXPECT_EQ("unionpay", supported_card_networks[7]);
|
| +}
|
| +
|
| +// Specifying 'basic-card' with some networks after having explicitely included
|
| +// the same networks does not yield duplicates and has the expected order.
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestCreditCardBasicCardTest,
|
| + BasicCard_NetworkThenBasicCardWithSameNetwork) {
|
| + InvokePaymentRequestWithJs(
|
| + "buyHelper([{"
|
| + " supportedMethods: ['mastercard', 'visa']"
|
| + "}, {"
|
| + " supportedMethods: ['basic-card'],"
|
| + " data: {"
|
| + " supportedNetworks: ['visa', 'mastercard', 'jcb'],"
|
| + " }"
|
| + "}]);");
|
| +
|
| + std::vector<PaymentRequest*> requests =
|
| + GetPaymentRequests(GetActiveWebContents());
|
| + EXPECT_EQ(1u, requests.size());
|
| + std::vector<std::string> supported_card_networks =
|
| + requests[0]->supported_card_networks();
|
| + EXPECT_EQ(3u, supported_card_networks.size());
|
| + EXPECT_EQ("mastercard", supported_card_networks[0]);
|
| + EXPECT_EQ("visa", supported_card_networks[1]);
|
| + EXPECT_EQ("jcb", supported_card_networks[2]);
|
| +}
|
| +
|
| } // namespace payments
|
|
|