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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestCardEditorAutoAdvanceTest.java

Issue 2579373002: [Payments] Add integration tests for auto advance in card editor (Closed)
Patch Set: address comments Created 4 years 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/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestCardEditorAutoAdvanceTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestCardEditorAutoAdvanceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestCardEditorAutoAdvanceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..891cb656527c8c1b2b9a88493f8d038b75d43d52
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestCardEditorAutoAdvanceTest.java
@@ -0,0 +1,191 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.payments;
+
+import android.test.suitebuilder.annotation.MediumTest;
+import android.view.View;
+
+import org.chromium.base.ThreadUtils;
+import org.chromium.base.test.util.Feature;
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.autofill.AutofillTestHelper;
+import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile;
+import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * A payment integration test for auto advancing to next field when typing in card numbers.
+ *
+ * Below valid test card numbers are from https://stripe.com/docs/testing#cards and
+ * https://developers.braintreepayments.com/guides/unionpay/testing/javascript/v3
+ */
+public class PaymentRequestCardEditorAutoAdvanceTest extends PaymentRequestTestBase {
+ public PaymentRequestCardEditorAutoAdvanceTest() {
+ super("payment_request_free_shipping_test.html");
+ }
+
+ @Override
+ public void onMainActivityStarted()
+ throws InterruptedException, ExecutionException, TimeoutException {
+ AutofillTestHelper helper = new AutofillTestHelper();
+ // Set user has a shipping address and valid credit card on disk to make it easy to click in
+ // to the payment section.
+ String billingAddressId = helper.setProfile(new AutofillProfile("", "https://example.com",
+ true, "Jon Doe", "Google", "340 Main St", "CA", "Los Angeles", "", "90291", "",
+ "US", "555-555-5555", "", "en-US"));
+ helper.setCreditCard(new CreditCard("", "https://example.com", true, true, "Jon Doe",
+ "4111111111111111", "1111", "1", "2050", "visa", R.drawable.pr_visa,
+ billingAddressId, "" /* serverId */));
+ }
+
+ @MediumTest
+ @Feature({"Payments"})
+ public void test14DigitsCreditCard()
+ throws InterruptedException, ExecutionException, TimeoutException {
+ triggerUIAndWait(mReadyToPay);
+
+ clickInPaymentMethodAndWait(R.id.payments_section, mReadyForInput);
+ clickInPaymentMethodAndWait(R.id.payments_add_option_button, mReadyToEdit);
+
+ // Diners credit card.
+ final View focusedChildView = getCardEditorFocusedView();
+ setTextInCardEditorAndWait(new String[] {"3056 9309 0259 0"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+
+ // '3056 9309 0259 00' is an invalid 14 digits card number.
+ setTextInCardEditorAndWait(new String[] {"3056 9309 0259 00"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+
+ // '3056 9309 0259 04' is a valid 14 digits card number.
+ setTextInCardEditorAndWait(new String[] {"3056 9309 0259 04"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() != focusedChildView);
+
+ // Request focus to card number field after auto advancing above.
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ focusedChildView.requestFocus();
+ }
+ });
+ setTextInCardEditorAndWait(new String[] {"3056 9309 0259 041"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+ }
+
+ @MediumTest
+ @Feature({"Payments"})
+ public void test15DigitsCreditCard()
+ throws InterruptedException, ExecutionException, TimeoutException {
+ triggerUIAndWait(mReadyToPay);
+
+ clickInPaymentMethodAndWait(R.id.payments_section, mReadyForInput);
+ clickInPaymentMethodAndWait(R.id.payments_add_option_button, mReadyToEdit);
+
+ // American Express credit card.
+ final View focusedChildView = getCardEditorFocusedView();
+ setTextInCardEditorAndWait(new String[] {"3782 822463 1000"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+
+ // '3782 822463 10000' is an invalid 15 digits card number.
+ setTextInCardEditorAndWait(new String[] {"3782 822463 10000"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+
+ // '3782 822463 10005' is a valid 15 digits card number.
+ setTextInCardEditorAndWait(new String[] {"3782 822463 10005"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() != focusedChildView);
+
+ // Request focus to card number field after auto advancing above.
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ focusedChildView.requestFocus();
+ }
+ });
+ setTextInCardEditorAndWait(new String[] {"3782 822463 10005 1"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+ }
+
+ @MediumTest
+ @Feature({"Payments"})
+ public void test16DigitsCreditCard()
+ throws InterruptedException, ExecutionException, TimeoutException {
+ triggerUIAndWait(mReadyToPay);
+
+ clickInPaymentMethodAndWait(R.id.payments_section, mReadyForInput);
+ clickInPaymentMethodAndWait(R.id.payments_add_option_button, mReadyToEdit);
+
+ // DISCOVER, JCB, MASTERCARD, MIR and VISA cards have 16 digits. Takes VISA as test input
+ // which has 13 digits valid card.
+ final View focusedChildView = getCardEditorFocusedView();
+ setTextInCardEditorAndWait(new String[] {"4012 8888 8888 "}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+
+ // '4012 8888 8888 1' is a valid 13 digits card number.
+ setTextInCardEditorAndWait(new String[] {"4012 8888 8888 1"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+
+ setTextInCardEditorAndWait(new String[] {"4012 8888 8888 188"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+
+ // '4012 8888 8888 1880' is an invalid 16 digits card number.
+ setTextInCardEditorAndWait(new String[] {"4012 8888 8888 1880"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+
+ // '4012 8888 8888 1881' is a valid 16 digits card number.
+ setTextInCardEditorAndWait(new String[] {"4012 8888 8888 1881"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() != focusedChildView);
+
+ // Request focus to card number field after auto advancing above.
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ focusedChildView.requestFocus();
+ }
+ });
+ setTextInCardEditorAndWait(new String[] {"4012 8888 8888 1881 1"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+ }
+
+ @MediumTest
+ @Feature({"Payments"})
+ public void test19DigitsCreditCard()
+ throws InterruptedException, ExecutionException, TimeoutException {
+ triggerUIAndWait(mReadyToPay);
+
+ clickInPaymentMethodAndWait(R.id.payments_section, mReadyForInput);
+ clickInPaymentMethodAndWait(R.id.payments_add_option_button, mReadyToEdit);
+
+ // UNIONPAY credit card.
+ final View focusedChildView = getCardEditorFocusedView();
+ setTextInCardEditorAndWait(new String[] {"6250 9410 0652 859"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+
+ // '6250 9410 0652 8599' is a valid 16 digits card number.
+ setTextInCardEditorAndWait(new String[] {"6250 9410 0652 8599"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+
+ setTextInCardEditorAndWait(new String[] {"6212 3456 7890 0000 00"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+
+ // '6212 3456 7890 0000 001' is an invalid 19 digits card number.
+ setTextInCardEditorAndWait(new String[] {"6212 3456 7890 0000 001"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+
+ // '6212 3456 7890 0000 003' is a valid 19 digits card number.
+ setTextInCardEditorAndWait(new String[] {"6212 3456 7890 0000 003"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() != focusedChildView);
+
+ // Request focus to card number field after auto advancing above.
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ focusedChildView.requestFocus();
+ }
+ });
+ setTextInCardEditorAndWait(new String[] {"6212 3456 7890 0000 0031"}, mEditorTextUpdate);
+ assertTrue(getCardEditorFocusedView() == focusedChildView);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698