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

Unified Diff: ios/chrome/browser/payments/payment_request_unittest.mm

Issue 2956453003: [Payment Request] Makes sure only complete credit cards can be selected (Closed)
Patch Set: Fixed unit test Created 3 years, 6 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
« no previous file with comments | « ios/chrome/browser/payments/payment_request.mm ('k') | ios/chrome/browser/payments/payment_request_util.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/payments/payment_request_unittest.mm
diff --git a/ios/chrome/browser/payments/payment_request_unittest.mm b/ios/chrome/browser/payments/payment_request_unittest.mm
index 2ae1798b91db8ec5d46b292462efaf6c0644adec..0ce80550da3668445b7444b93b29291cc2df559a 100644
--- a/ios/chrome/browser/payments/payment_request_unittest.mm
+++ b/ios/chrome/browser/payments/payment_request_unittest.mm
@@ -12,6 +12,7 @@
#include "components/payments/core/currency_formatter.h"
#include "components/payments/core/payment_method_data.h"
#include "ios/chrome/browser/application_context.h"
+#include "ios/chrome/browser/payments/payment_request_test_util.h"
#include "ios/web/public/payments/payment_request.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -442,3 +443,78 @@ TEST_F(PaymentRequestTest,
EXPECT_EQ(address1.guid(),
payment_request.selected_contact_profile()->guid());
}
+
+// Test that loading payment methods when none are available works as expected.
+TEST_F(PaymentRequestTest, SelectedPaymentMethod_NoPaymentMethods) {
+ autofill::TestPersonalDataManager personal_data_manager;
+ web::PaymentRequest web_payment_request =
+ payment_request_test_util::CreateTestWebPaymentRequest();
+
+ // No payment methods are selected because none are available!
+ PaymentRequest payment_request(web_payment_request, &personal_data_manager);
+ EXPECT_EQ(nullptr, payment_request.selected_credit_card());
+}
+
+// Test that loading expired credit cards works as expected.
+TEST_F(PaymentRequestTest, SelectedPaymentMethod_ExpiredCard) {
+ autofill::TestPersonalDataManager personal_data_manager;
+ autofill::AutofillProfile billing_address = autofill::test::GetFullProfile();
+ personal_data_manager.AddTestingProfile(&billing_address);
+ autofill::CreditCard credit_card = autofill::test::GetCreditCard();
+ personal_data_manager.AddTestingCreditCard(&credit_card);
+ credit_card.SetExpirationYear(2016); // Expired.
+ credit_card.set_billing_address_id(billing_address.guid());
+
+ web::PaymentRequest web_payment_request =
+ payment_request_test_util::CreateTestWebPaymentRequest();
+
+ // credit_card is selected because expired cards are valid for payment.
+ PaymentRequest payment_request(web_payment_request, &personal_data_manager);
+ EXPECT_EQ(credit_card.guid(), payment_request.selected_credit_card()->guid());
+}
+
+// Test that loading complete payment methods works as expected.
+TEST_F(PaymentRequestTest, SelectedPaymentMethod_Complete) {
+ autofill::TestPersonalDataManager personal_data_manager;
+ autofill::AutofillProfile billing_address = autofill::test::GetFullProfile();
+ personal_data_manager.AddTestingProfile(&billing_address);
+ autofill::CreditCard credit_card = autofill::test::GetCreditCard();
+ credit_card.set_use_count(5U);
+ personal_data_manager.AddTestingCreditCard(&credit_card);
+ credit_card.set_billing_address_id(billing_address.guid());
+ autofill::CreditCard credit_card2 = autofill::test::GetCreditCard2();
+ credit_card2.set_use_count(15U);
+ personal_data_manager.AddTestingCreditCard(&credit_card2);
+ credit_card2.set_billing_address_id(billing_address.guid());
+
+ web::PaymentRequest web_payment_request =
+ payment_request_test_util::CreateTestWebPaymentRequest();
+
+ // credit_card2 is selected because it has the most use count (Frecency
+ // model).
+ PaymentRequest payment_request(web_payment_request, &personal_data_manager);
+ EXPECT_EQ(credit_card2.guid(),
+ payment_request.selected_credit_card()->guid());
+}
+
+// Test that loading incomplete payment methods works as expected.
+TEST_F(PaymentRequestTest, SelectedPaymentMethod_Incomplete) {
+ autofill::TestPersonalDataManager personal_data_manager;
+ autofill::AutofillProfile billing_address = autofill::test::GetFullProfile();
+ personal_data_manager.AddTestingProfile(&billing_address);
+ autofill::CreditCard credit_card = autofill::test::GetCreditCard();
+ credit_card.set_use_count(5U);
+ personal_data_manager.AddTestingCreditCard(&credit_card);
+ credit_card.set_billing_address_id(billing_address.guid());
+ autofill::CreditCard credit_card2 = autofill::test::GetCreditCard2();
+ credit_card2.set_use_count(15U);
+ personal_data_manager.AddTestingCreditCard(&credit_card2);
+
+ web::PaymentRequest web_payment_request =
+ payment_request_test_util::CreateTestWebPaymentRequest();
+
+ // Even though credit_card2 has more use counts, credit_card is selected
+ // because it is complete.
+ PaymentRequest payment_request(web_payment_request, &personal_data_manager);
+ EXPECT_EQ(credit_card.guid(), payment_request.selected_credit_card()->guid());
+}
« no previous file with comments | « ios/chrome/browser/payments/payment_request.mm ('k') | ios/chrome/browser/payments/payment_request_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698