Index: chrome/browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc |
diff --git a/chrome/browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc b/chrome/browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc |
index 87e82b7804ff11676f1d352a7b703d07c8dab519..08bce0bfdf4c4e9a4c336cbc29368a8b255d886e 100644 |
--- a/chrome/browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc |
+++ b/chrome/browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc |
@@ -10,6 +10,7 @@ |
#include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" |
#include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" |
#include "chrome/browser/ui/views/payments/validating_textfield.h" |
+#include "components/autofill/core/browser/autofill_test_utils.h" |
#include "components/autofill/core/browser/field_types.h" |
#include "components/autofill/core/browser/personal_data_manager.h" |
#include "components/autofill/core/browser/test_autofill_clock.h" |
@@ -24,6 +25,7 @@ namespace payments { |
namespace { |
+const base::Time kJanuary2017 = base::Time::FromDoubleT(1484505871); |
const base::Time kJune2017 = base::Time::FromDoubleT(1497552271); |
} // namespace |
@@ -278,6 +280,64 @@ IN_PROC_BROWSER_TEST_F(PaymentRequestCreditCardEditorTest, |
credit_card->GetRawInfo(autofill::CREDIT_CARD_NAME_FULL)); |
} |
+IN_PROC_BROWSER_TEST_F(PaymentRequestCreditCardEditorTest, EditingExpiredCard) { |
+ // Add expired card. |
+ autofill::CreditCard card = autofill::test::GetCreditCard(); |
+ card.set_use_count(5U); |
+ card.set_use_date(kJanuary2017); |
+ card.SetExpirationMonth(1); |
+ card.SetExpirationYear(2017); |
+ AddCreditCard(card); |
+ autofill::TestAutofillClock test_clock; |
+ test_clock.SetNow(kJune2017); |
+ |
+ InvokePaymentRequestUI(); |
+ |
+ OpenPaymentMethodScreen(); |
+ |
+ ResetEventObserver(DialogEvent::CREDIT_CARD_EDITOR_OPENED); |
+ ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, |
+ DialogViewID::PAYMENT_METHOD_SHEET_LIST_VIEW); |
+ |
+ EXPECT_EQ(base::ASCIIToUTF16("Test User"), |
+ GetEditorTextfieldValue(autofill::CREDIT_CARD_NAME_FULL)); |
+ EXPECT_EQ(base::ASCIIToUTF16("4111111111111111"), |
+ GetEditorTextfieldValue(autofill::CREDIT_CARD_NUMBER)); |
+ EXPECT_EQ(base::ASCIIToUTF16("01"), |
+ GetComboboxValue(autofill::CREDIT_CARD_EXP_MONTH)); |
+ EXPECT_EQ(base::ASCIIToUTF16("2017"), |
+ GetComboboxValue(autofill::CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
+ |
+ // Fixing the expiration date. |
+ SetComboboxValue(base::ASCIIToUTF16("11"), autofill::CREDIT_CARD_EXP_MONTH); |
+ |
+ // Verifying the data is in the DB. |
+ autofill::PersonalDataManager* personal_data_manager = GetDataManager(); |
+ personal_data_manager->AddObserver(&personal_data_observer_); |
+ |
+ ResetEventObserver(DialogEvent::BACK_NAVIGATION); |
+ |
+ // Wait until the web database has been updated and the notification sent. |
+ base::RunLoop data_loop; |
+ EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) |
+ .WillOnce(QuitMessageLoop(&data_loop)); |
+ ClickOnDialogViewAndWait(DialogViewID::EDITOR_SAVE_BUTTON); |
+ data_loop.Run(); |
+ |
+ EXPECT_EQ(1u, personal_data_manager->GetCreditCards().size()); |
+ autofill::CreditCard* credit_card = |
+ personal_data_manager->GetCreditCards()[0]; |
+ EXPECT_EQ(11, credit_card->expiration_month()); |
+ EXPECT_EQ(2017, credit_card->expiration_year()); |
+ // It retains other properties. |
+ EXPECT_EQ(card.guid(), credit_card->guid()); |
+ EXPECT_EQ(5U, credit_card->use_count()); |
+ EXPECT_EQ(kJanuary2017, credit_card->use_date()); |
+ EXPECT_EQ(base::ASCIIToUTF16("4111111111111111"), credit_card->number()); |
+ EXPECT_EQ(base::ASCIIToUTF16("Test User"), |
+ credit_card->GetRawInfo(autofill::CREDIT_CARD_NAME_FULL)); |
+} |
+ |
IN_PROC_BROWSER_TEST_F(PaymentRequestCreditCardEditorTest, EnteringEmptyData) { |
InvokePaymentRequestUI(); |