Chromium Code Reviews| 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 5b75fb3dcabf2866576ebb997ddc8a7ca6518158..41dead48de0be30fa8bd4c55ac4a98e639c8ea05 100644 |
| --- a/ios/chrome/browser/payments/payment_request_unittest.mm |
| +++ b/ios/chrome/browser/payments/payment_request_unittest.mm |
| @@ -65,6 +65,164 @@ TEST(PaymentRequestTest, AcceptedPaymentNetworks) { |
| EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]); |
| } |
| +// Test that parsing supported methods (with invalid values and duplicates) |
| +// works as expected. |
| +TEST(PaymentRequestTest, SupportedMethods) { |
| + web::PaymentRequest web_payment_request; |
| + autofill::TestPersonalDataManager personal_data_manager; |
| + |
| + payments::PaymentMethodData method_datum1; |
| + method_datum1.supported_methods.push_back("visa"); |
| + method_datum1.supported_methods.push_back("mastercard"); |
| + method_datum1.supported_methods.push_back("invalid"); |
| + method_datum1.supported_methods.push_back(""); |
| + method_datum1.supported_methods.push_back("visa"); |
| + web_payment_request.method_data.push_back(method_datum1); |
| + |
| + PaymentRequest payment_request(web_payment_request, &personal_data_manager); |
| + ASSERT_EQ(2U, payment_request.supported_card_networks().size()); |
| + EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); |
| + EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]); |
| +} |
| + |
| +// Test that parsing supported methods in different method data entries (with |
| +// invalid values and duplicates) works as expected. |
| +TEST(PaymentRequestTest, SupportedMethods_MultipleEntries) { |
| + web::PaymentRequest web_payment_request; |
| + autofill::TestPersonalDataManager personal_data_manager; |
| + |
| + payments::PaymentMethodData method_datum1; |
| + method_datum1.supported_methods.push_back("visa"); |
| + web_payment_request.method_data.push_back(method_datum1); |
| + payments::PaymentMethodData method_datum2; |
| + method_datum2.supported_methods.push_back("mastercard"); |
| + web_payment_request.method_data.push_back(method_datum2); |
| + payments::PaymentMethodData method_datum3; |
| + method_datum3.supported_methods.push_back("visa"); |
| + web_payment_request.method_data.push_back(method_datum3); |
| + |
| + PaymentRequest payment_request(web_payment_request, &personal_data_manager); |
| + ASSERT_EQ(2U, payment_request.supported_card_networks().size()); |
| + EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); |
| + EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]); |
| +} |
| + |
| +// Test that parsing supported methods in different method data entries fails as |
| +// soon as one entry doesn't specify anything in supported_methods. |
|
Moe
2017/04/06 20:51:03
Should we combine this test with the previous one?
Mathieu
2017/04/06 21:04:41
Good point
|
| +TEST(PaymentRequestTest, SupportedMethods_MultipleEntries_OneEmpty) { |
| + web::PaymentRequest web_payment_request; |
| + autofill::TestPersonalDataManager personal_data_manager; |
| + |
| + payments::PaymentMethodData method_datum1; |
| + method_datum1.supported_methods.push_back("visa"); |
| + web_payment_request.method_data.push_back(method_datum1); |
| + payments::PaymentMethodData method_datum2; |
| + method_datum2.supported_methods.push_back(""); |
| + web_payment_request.method_data.push_back(method_datum2); |
| + payments::PaymentMethodData method_datum3; |
| + method_datum3.supported_methods.push_back("mastercard"); |
| + web_payment_request.method_data.push_back(method_datum3); |
| + |
| + PaymentRequest payment_request(web_payment_request, &personal_data_manager); |
| + ASSERT_EQ(2U, payment_request.supported_card_networks().size()); |
| + EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); |
| + EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]); |
| +} |
| + |
| +// Test that only specifying basic-card means that all are supported. |
| +TEST(PaymentRequestTest, SupportedMethods_OnlyBasicCard) { |
| + web::PaymentRequest web_payment_request; |
| + autofill::TestPersonalDataManager personal_data_manager; |
| + |
| + payments::PaymentMethodData method_datum1; |
| + method_datum1.supported_methods.push_back("basic-card"); |
| + web_payment_request.method_data.push_back(method_datum1); |
| + |
| + PaymentRequest payment_request(web_payment_request, &personal_data_manager); |
| + |
| + // All of the basic card networks are supported. |
| + ASSERT_EQ(8U, payment_request.supported_card_networks().size()); |
| + EXPECT_EQ("amex", payment_request.supported_card_networks()[0]); |
| + EXPECT_EQ("diners", payment_request.supported_card_networks()[1]); |
| + EXPECT_EQ("discover", payment_request.supported_card_networks()[2]); |
| + EXPECT_EQ("jcb", payment_request.supported_card_networks()[3]); |
| + EXPECT_EQ("mastercard", payment_request.supported_card_networks()[4]); |
| + EXPECT_EQ("mir", payment_request.supported_card_networks()[5]); |
| + EXPECT_EQ("unionpay", payment_request.supported_card_networks()[6]); |
| + EXPECT_EQ("visa", payment_request.supported_card_networks()[7]); |
| +} |
| + |
| +// Test that specifying a method AND basic-card means that all are supported, |
| +// but with the method as first. |
| +TEST(PaymentRequestTest, SupportedMethods_BasicCard_WithSpecificMethod) { |
| + web::PaymentRequest web_payment_request; |
| + autofill::TestPersonalDataManager personal_data_manager; |
| + |
| + payments::PaymentMethodData method_datum1; |
| + method_datum1.supported_methods.push_back("jcb"); |
| + method_datum1.supported_methods.push_back("basic-card"); |
| + web_payment_request.method_data.push_back(method_datum1); |
| + |
| + PaymentRequest payment_request(web_payment_request, &personal_data_manager); |
| + |
| + // All of the basic card networks are supported, but JCB is first because it |
| + // was specified first. |
| + EXPECT_EQ(8u, payment_request.supported_card_networks().size()); |
| + EXPECT_EQ("jcb", payment_request.supported_card_networks()[0]); |
| + EXPECT_EQ("amex", payment_request.supported_card_networks()[1]); |
| + EXPECT_EQ("diners", payment_request.supported_card_networks()[2]); |
| + EXPECT_EQ("discover", payment_request.supported_card_networks()[3]); |
| + EXPECT_EQ("mastercard", payment_request.supported_card_networks()[4]); |
| + EXPECT_EQ("mir", payment_request.supported_card_networks()[5]); |
| + EXPECT_EQ("unionpay", payment_request.supported_card_networks()[6]); |
| + EXPECT_EQ("visa", payment_request.supported_card_networks()[7]); |
| +} |
| + |
| +// Test that specifying basic-card with a supported network (with previous |
| +// supported methods) will work as expected |
| +TEST(PaymentRequestTest, SupportedMethods_BasicCard_Overlap) { |
| + web::PaymentRequest web_payment_request; |
| + autofill::TestPersonalDataManager personal_data_manager; |
| + |
| + payments::PaymentMethodData method_datum1; |
| + method_datum1.supported_methods.push_back("mastercard"); |
| + method_datum1.supported_methods.push_back("visa"); |
| + web_payment_request.method_data.push_back(method_datum1); |
| + payments::PaymentMethodData method_datum2; |
| + method_datum2.supported_methods.push_back("basic-card"); |
| + method_datum2.supported_networks.push_back("visa"); |
| + method_datum2.supported_networks.push_back("mastercard"); |
| + method_datum2.supported_networks.push_back("unionpay"); |
| + web_payment_request.method_data.push_back(method_datum2); |
| + |
| + PaymentRequest payment_request(web_payment_request, &personal_data_manager); |
| + |
| + EXPECT_EQ(3u, payment_request.supported_card_networks().size()); |
| + EXPECT_EQ("mastercard", payment_request.supported_card_networks()[0]); |
| + EXPECT_EQ("visa", payment_request.supported_card_networks()[1]); |
| + EXPECT_EQ("unionpay", payment_request.supported_card_networks()[2]); |
| +} |
| + |
| +// Test that specifying basic-card with supported networks after specifying |
| +// some methods |
|
Moe
2017/04/06 20:51:03
what is this testing?
Mathieu
2017/04/06 21:04:41
Specifying basic-card with supported networks. It'
|
| +TEST(PaymentRequestTest, SupportedMethods_BasicCard_WithSupportedNetworks) { |
| + web::PaymentRequest web_payment_request; |
| + autofill::TestPersonalDataManager personal_data_manager; |
| + |
| + payments::PaymentMethodData method_datum1; |
| + method_datum1.supported_methods.push_back("basic-card"); |
| + method_datum1.supported_networks.push_back("visa"); |
| + method_datum1.supported_networks.push_back("unionpay"); |
| + web_payment_request.method_data.push_back(method_datum1); |
| + |
| + PaymentRequest payment_request(web_payment_request, &personal_data_manager); |
| + |
| + // Only the specified networks are supported. |
| + EXPECT_EQ(2u, payment_request.supported_card_networks().size()); |
| + EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); |
| + EXPECT_EQ("unionpay", payment_request.supported_card_networks()[1]); |
| +} |
| + |
| // Tests that credit cards can be added to the list of cached credit cards. |
| TEST(PaymentRequestTest, AddCreditCard) { |
| web::PaymentRequest web_payment_request; |