Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8884)

Unified Diff: chrome/browser/ui/views/payments/payment_request_credit_card_editor_interactive_uitest.cc

Issue 2698353002: [Payments] Add the "Cards accepted" row at the top of CC editor. (Closed)
Patch Set: private Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698