Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ios/chrome/browser/payments/payment_request.h" | 5 #include "ios/chrome/browser/payments/payment_request.h" |
| 6 | 6 |
| 7 #include <memory> | |
| 8 | |
| 9 #include "base/memory/ptr_util.h" | |
|
please use gerrit instead
2017/07/06 14:52:24
Not used, I believe.
Moe
2017/07/07 02:24:53
Done.
| |
| 7 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| 8 #include "base/test/scoped_task_environment.h" | 11 #include "base/test/scoped_task_environment.h" |
| 9 #include "components/autofill/core/browser/autofill_test_utils.h" | 12 #include "components/autofill/core/browser/autofill_test_utils.h" |
| 10 #include "components/autofill/core/browser/autofill_type.h" | 13 #include "components/autofill/core/browser/autofill_type.h" |
| 11 #include "components/autofill/core/browser/field_types.h" | 14 #include "components/autofill/core/browser/field_types.h" |
| 12 #include "components/autofill/core/browser/test_personal_data_manager.h" | 15 #include "components/autofill/core/browser/test_personal_data_manager.h" |
| 13 #include "components/payments/core/autofill_payment_instrument.h" | 16 #include "components/payments/core/autofill_payment_instrument.h" |
| 14 #include "components/payments/core/currency_formatter.h" | 17 #include "components/payments/core/currency_formatter.h" |
| 15 #include "components/payments/core/payment_method_data.h" | 18 #include "components/payments/core/payment_method_data.h" |
| 16 #include "ios/chrome/browser/application_context.h" | 19 #include "ios/chrome/browser/application_context.h" |
| 20 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" | |
| 17 #include "ios/chrome/browser/payments/payment_request_test_util.h" | 21 #include "ios/chrome/browser/payments/payment_request_test_util.h" |
| 18 #include "ios/chrome/browser/payments/test_payment_request.h" | 22 #include "ios/chrome/browser/payments/test_payment_request.h" |
| 19 #include "ios/web/public/payments/payment_request.h" | 23 #include "ios/web/public/payments/payment_request.h" |
| 24 #import "ios/web/public/test/fakes/test_web_state.h" | |
| 20 #include "testing/gmock/include/gmock/gmock-matchers.h" | 25 #include "testing/gmock/include/gmock/gmock-matchers.h" |
| 21 #include "testing/gmock/include/gmock/gmock.h" | 26 #include "testing/gmock/include/gmock/gmock.h" |
| 22 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
| 23 | 28 |
| 24 #if !defined(__has_feature) || !__has_feature(objc_arc) | 29 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 25 #error "This file requires ARC support." | 30 #error "This file requires ARC support." |
| 26 #endif | 31 #endif |
| 27 | 32 |
| 28 namespace { | 33 namespace { |
| 29 | 34 |
| 30 class MockTestPersonalDataManager : public autofill::TestPersonalDataManager { | 35 class MockTestPersonalDataManager : public autofill::TestPersonalDataManager { |
| 31 public: | 36 public: |
| 32 MockTestPersonalDataManager() : TestPersonalDataManager() {} | 37 MockTestPersonalDataManager() : TestPersonalDataManager() {} |
| 33 MOCK_METHOD1(RecordUseOf, void(const autofill::AutofillDataModel&)); | 38 MOCK_METHOD1(RecordUseOf, void(const autofill::AutofillDataModel&)); |
| 34 }; | 39 }; |
| 35 | 40 |
| 36 MATCHER_P(GuidMatches, guid, "") { | 41 MATCHER_P(GuidMatches, guid, "") { |
| 37 return arg.guid() == guid; | 42 return arg.guid() == guid; |
| 38 } | 43 } |
| 39 | 44 |
| 40 } // namespace | 45 } // namespace |
| 41 | 46 |
| 42 namespace payments { | 47 namespace payments { |
| 43 | 48 |
| 44 class PaymentRequestTest : public testing::Test { | 49 class PaymentRequestTest : public testing::Test { |
| 45 protected: | 50 protected: |
| 51 PaymentRequestTest() { | |
|
please use gerrit instead
2017/07/06 14:52:24
PaymentRequestTest()
: chrome_browser_state_(T
Moe
2017/07/07 02:24:54
Done.
| |
| 52 TestChromeBrowserState::Builder test_cbs_builder; | |
| 53 chrome_browser_state_ = test_cbs_builder.Build(); | |
| 54 } | |
| 55 | |
| 46 // Returns PaymentDetails with one shipping option that's selected. | 56 // Returns PaymentDetails with one shipping option that's selected. |
| 47 web::PaymentDetails CreateDetailsWithShippingOption() { | 57 web::PaymentDetails CreateDetailsWithShippingOption() { |
| 48 web::PaymentDetails details; | 58 web::PaymentDetails details; |
| 49 std::vector<web::PaymentShippingOption> shipping_options; | 59 std::vector<web::PaymentShippingOption> shipping_options; |
| 50 web::PaymentShippingOption option1; | 60 web::PaymentShippingOption option1; |
| 51 option1.id = base::UTF8ToUTF16("option:1"); | 61 option1.id = base::UTF8ToUTF16("option:1"); |
| 52 option1.selected = true; | 62 option1.selected = true; |
| 53 shipping_options.push_back(std::move(option1)); | 63 shipping_options.push_back(std::move(option1)); |
| 54 details.shipping_options = std::move(shipping_options); | 64 details.shipping_options = std::move(shipping_options); |
| 55 | 65 |
| 56 return details; | 66 return details; |
| 57 } | 67 } |
| 58 | 68 |
| 59 web::PaymentOptions CreatePaymentOptions(bool request_payer_name, | 69 web::PaymentOptions CreatePaymentOptions(bool request_payer_name, |
| 60 bool request_payer_phone, | 70 bool request_payer_phone, |
| 61 bool request_payer_email, | 71 bool request_payer_email, |
| 62 bool request_shipping) { | 72 bool request_shipping) { |
| 63 web::PaymentOptions options; | 73 web::PaymentOptions options; |
| 64 options.request_payer_name = request_payer_name; | 74 options.request_payer_name = request_payer_name; |
| 65 options.request_payer_phone = request_payer_phone; | 75 options.request_payer_phone = request_payer_phone; |
| 66 options.request_payer_email = request_payer_email; | 76 options.request_payer_email = request_payer_email; |
| 67 options.request_shipping = request_shipping; | 77 options.request_shipping = request_shipping; |
| 68 return options; | 78 return options; |
| 69 } | 79 } |
| 70 | 80 |
| 71 base::test::ScopedTaskEnvironment scoped_task_environment_; | 81 base::test::ScopedTaskEnvironment scoped_task_environment_; |
| 82 | |
| 83 web::TestWebState web_state_; | |
| 84 std::unique_ptr<TestChromeBrowserState> chrome_browser_state_; | |
| 72 }; | 85 }; |
| 73 | 86 |
| 74 // Tests that the payments::CurrencyFormatter is constructed with the correct | 87 // Tests that the payments::CurrencyFormatter is constructed with the correct |
| 75 // currency code and currency system. | 88 // currency code and currency system. |
| 76 TEST_F(PaymentRequestTest, CreatesCurrencyFormatterCorrectly) { | 89 TEST_F(PaymentRequestTest, CreatesCurrencyFormatterCorrectly) { |
| 77 ASSERT_EQ("en", GetApplicationContext()->GetApplicationLocale()); | 90 ASSERT_EQ("en", GetApplicationContext()->GetApplicationLocale()); |
| 78 | 91 |
| 79 web::PaymentRequest web_payment_request; | 92 web::PaymentRequest web_payment_request; |
| 80 autofill::TestPersonalDataManager personal_data_manager; | 93 autofill::TestPersonalDataManager personal_data_manager; |
| 81 | 94 |
| 82 web_payment_request.details.total.amount.currency = base::ASCIIToUTF16("USD"); | 95 web_payment_request.details.total.amount.currency = base::ASCIIToUTF16("USD"); |
| 83 TestPaymentRequest payment_request1(web_payment_request, | 96 TestPaymentRequest payment_request1(web_payment_request, |
| 97 chrome_browser_state_.get(), &web_state_, | |
| 84 &personal_data_manager); | 98 &personal_data_manager); |
| 85 CurrencyFormatter* currency_formatter = | 99 CurrencyFormatter* currency_formatter = |
| 86 payment_request1.GetOrCreateCurrencyFormatter(); | 100 payment_request1.GetOrCreateCurrencyFormatter(); |
| 87 EXPECT_EQ(base::UTF8ToUTF16("$55.00"), currency_formatter->Format("55.00")); | 101 EXPECT_EQ(base::UTF8ToUTF16("$55.00"), currency_formatter->Format("55.00")); |
| 88 EXPECT_EQ("USD", currency_formatter->formatted_currency_code()); | 102 EXPECT_EQ("USD", currency_formatter->formatted_currency_code()); |
| 89 | 103 |
| 90 web_payment_request.details.total.amount.currency = base::ASCIIToUTF16("JPY"); | 104 web_payment_request.details.total.amount.currency = base::ASCIIToUTF16("JPY"); |
| 91 TestPaymentRequest payment_request2(web_payment_request, | 105 TestPaymentRequest payment_request2(web_payment_request, |
| 106 chrome_browser_state_.get(), &web_state_, | |
| 92 &personal_data_manager); | 107 &personal_data_manager); |
| 93 currency_formatter = payment_request2.GetOrCreateCurrencyFormatter(); | 108 currency_formatter = payment_request2.GetOrCreateCurrencyFormatter(); |
| 94 EXPECT_EQ(base::UTF8ToUTF16("¥55"), currency_formatter->Format("55.00")); | 109 EXPECT_EQ(base::UTF8ToUTF16("¥55"), currency_formatter->Format("55.00")); |
| 95 EXPECT_EQ("JPY", currency_formatter->formatted_currency_code()); | 110 EXPECT_EQ("JPY", currency_formatter->formatted_currency_code()); |
| 96 | 111 |
| 97 web_payment_request.details.total.amount.currency_system = | 112 web_payment_request.details.total.amount.currency_system = |
| 98 base::ASCIIToUTF16("NOT_ISO4217"); | 113 base::ASCIIToUTF16("NOT_ISO4217"); |
| 99 web_payment_request.details.total.amount.currency = base::ASCIIToUTF16("USD"); | 114 web_payment_request.details.total.amount.currency = base::ASCIIToUTF16("USD"); |
| 100 TestPaymentRequest payment_request3(web_payment_request, | 115 TestPaymentRequest payment_request3(web_payment_request, |
| 116 chrome_browser_state_.get(), &web_state_, | |
| 101 &personal_data_manager); | 117 &personal_data_manager); |
| 102 currency_formatter = payment_request3.GetOrCreateCurrencyFormatter(); | 118 currency_formatter = payment_request3.GetOrCreateCurrencyFormatter(); |
| 103 EXPECT_EQ(base::UTF8ToUTF16("55.00"), currency_formatter->Format("55.00")); | 119 EXPECT_EQ(base::UTF8ToUTF16("55.00"), currency_formatter->Format("55.00")); |
| 104 EXPECT_EQ("USD", currency_formatter->formatted_currency_code()); | 120 EXPECT_EQ("USD", currency_formatter->formatted_currency_code()); |
| 105 } | 121 } |
| 106 | 122 |
| 107 // Tests that the accepted card networks are identified correctly. | 123 // Tests that the accepted card networks are identified correctly. |
| 108 TEST_F(PaymentRequestTest, AcceptedPaymentNetworks) { | 124 TEST_F(PaymentRequestTest, AcceptedPaymentNetworks) { |
| 109 web::PaymentRequest web_payment_request; | 125 web::PaymentRequest web_payment_request; |
| 110 autofill::TestPersonalDataManager personal_data_manager; | 126 autofill::TestPersonalDataManager personal_data_manager; |
| 111 | 127 |
| 112 PaymentMethodData method_datum1; | 128 PaymentMethodData method_datum1; |
| 113 method_datum1.supported_methods.push_back("visa"); | 129 method_datum1.supported_methods.push_back("visa"); |
| 114 web_payment_request.method_data.push_back(method_datum1); | 130 web_payment_request.method_data.push_back(method_datum1); |
| 115 PaymentMethodData method_datum2; | 131 PaymentMethodData method_datum2; |
| 116 method_datum2.supported_methods.push_back("mastercard"); | 132 method_datum2.supported_methods.push_back("mastercard"); |
| 117 web_payment_request.method_data.push_back(method_datum2); | 133 web_payment_request.method_data.push_back(method_datum2); |
| 118 | 134 |
| 119 TestPaymentRequest payment_request(web_payment_request, | 135 TestPaymentRequest payment_request(web_payment_request, |
| 136 chrome_browser_state_.get(), &web_state_, | |
| 120 &personal_data_manager); | 137 &personal_data_manager); |
| 121 ASSERT_EQ(2U, payment_request.supported_card_networks().size()); | 138 ASSERT_EQ(2U, payment_request.supported_card_networks().size()); |
| 122 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); | 139 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); |
| 123 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]); | 140 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]); |
| 124 } | 141 } |
| 125 | 142 |
| 126 // Test that parsing supported methods (with invalid values and duplicates) | 143 // Test that parsing supported methods (with invalid values and duplicates) |
| 127 // works as expected. | 144 // works as expected. |
| 128 TEST_F(PaymentRequestTest, SupportedMethods) { | 145 TEST_F(PaymentRequestTest, SupportedMethods) { |
| 129 web::PaymentRequest web_payment_request; | 146 web::PaymentRequest web_payment_request; |
| 130 autofill::TestPersonalDataManager personal_data_manager; | 147 autofill::TestPersonalDataManager personal_data_manager; |
| 131 | 148 |
| 132 PaymentMethodData method_datum1; | 149 PaymentMethodData method_datum1; |
| 133 method_datum1.supported_methods.push_back("visa"); | 150 method_datum1.supported_methods.push_back("visa"); |
| 134 method_datum1.supported_methods.push_back("mastercard"); | 151 method_datum1.supported_methods.push_back("mastercard"); |
| 135 method_datum1.supported_methods.push_back("invalid"); | 152 method_datum1.supported_methods.push_back("invalid"); |
| 136 method_datum1.supported_methods.push_back(""); | 153 method_datum1.supported_methods.push_back(""); |
| 137 method_datum1.supported_methods.push_back("visa"); | 154 method_datum1.supported_methods.push_back("visa"); |
| 138 web_payment_request.method_data.push_back(method_datum1); | 155 web_payment_request.method_data.push_back(method_datum1); |
| 139 | 156 |
| 140 TestPaymentRequest payment_request(web_payment_request, | 157 TestPaymentRequest payment_request(web_payment_request, |
| 158 chrome_browser_state_.get(), &web_state_, | |
| 141 &personal_data_manager); | 159 &personal_data_manager); |
| 142 ASSERT_EQ(2U, payment_request.supported_card_networks().size()); | 160 ASSERT_EQ(2U, payment_request.supported_card_networks().size()); |
| 143 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); | 161 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); |
| 144 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]); | 162 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]); |
| 145 } | 163 } |
| 146 | 164 |
| 147 // Test that parsing supported methods in different method data entries (with | 165 // Test that parsing supported methods in different method data entries (with |
| 148 // invalid values and duplicates) works as expected. | 166 // invalid values and duplicates) works as expected. |
| 149 TEST_F(PaymentRequestTest, SupportedMethods_MultipleEntries) { | 167 TEST_F(PaymentRequestTest, SupportedMethods_MultipleEntries) { |
| 150 web::PaymentRequest web_payment_request; | 168 web::PaymentRequest web_payment_request; |
| 151 autofill::TestPersonalDataManager personal_data_manager; | 169 autofill::TestPersonalDataManager personal_data_manager; |
| 152 | 170 |
| 153 PaymentMethodData method_datum1; | 171 PaymentMethodData method_datum1; |
| 154 method_datum1.supported_methods.push_back("visa"); | 172 method_datum1.supported_methods.push_back("visa"); |
| 155 web_payment_request.method_data.push_back(method_datum1); | 173 web_payment_request.method_data.push_back(method_datum1); |
| 156 PaymentMethodData method_datum2; | 174 PaymentMethodData method_datum2; |
| 157 method_datum2.supported_methods.push_back("mastercard"); | 175 method_datum2.supported_methods.push_back("mastercard"); |
| 158 web_payment_request.method_data.push_back(method_datum2); | 176 web_payment_request.method_data.push_back(method_datum2); |
| 159 PaymentMethodData method_datum3; | 177 PaymentMethodData method_datum3; |
| 160 method_datum3.supported_methods.push_back(""); | 178 method_datum3.supported_methods.push_back(""); |
| 161 web_payment_request.method_data.push_back(method_datum3); | 179 web_payment_request.method_data.push_back(method_datum3); |
| 162 PaymentMethodData method_datum4; | 180 PaymentMethodData method_datum4; |
| 163 method_datum4.supported_methods.push_back("visa"); | 181 method_datum4.supported_methods.push_back("visa"); |
| 164 web_payment_request.method_data.push_back(method_datum4); | 182 web_payment_request.method_data.push_back(method_datum4); |
| 165 | 183 |
| 166 TestPaymentRequest payment_request(web_payment_request, | 184 TestPaymentRequest payment_request(web_payment_request, |
| 185 chrome_browser_state_.get(), &web_state_, | |
| 167 &personal_data_manager); | 186 &personal_data_manager); |
| 168 ASSERT_EQ(2U, payment_request.supported_card_networks().size()); | 187 ASSERT_EQ(2U, payment_request.supported_card_networks().size()); |
| 169 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); | 188 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); |
| 170 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]); | 189 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]); |
| 171 } | 190 } |
| 172 | 191 |
| 173 // Test that only specifying basic-card means that all are supported. | 192 // Test that only specifying basic-card means that all are supported. |
| 174 TEST_F(PaymentRequestTest, SupportedMethods_OnlyBasicCard) { | 193 TEST_F(PaymentRequestTest, SupportedMethods_OnlyBasicCard) { |
| 175 web::PaymentRequest web_payment_request; | 194 web::PaymentRequest web_payment_request; |
| 176 autofill::TestPersonalDataManager personal_data_manager; | 195 autofill::TestPersonalDataManager personal_data_manager; |
| 177 | 196 |
| 178 PaymentMethodData method_datum1; | 197 PaymentMethodData method_datum1; |
| 179 method_datum1.supported_methods.push_back("basic-card"); | 198 method_datum1.supported_methods.push_back("basic-card"); |
| 180 web_payment_request.method_data.push_back(method_datum1); | 199 web_payment_request.method_data.push_back(method_datum1); |
| 181 | 200 |
| 182 TestPaymentRequest payment_request(web_payment_request, | 201 TestPaymentRequest payment_request(web_payment_request, |
| 202 chrome_browser_state_.get(), &web_state_, | |
| 183 &personal_data_manager); | 203 &personal_data_manager); |
| 184 | 204 |
| 185 // All of the basic card networks are supported. | 205 // All of the basic card networks are supported. |
| 186 ASSERT_EQ(8U, payment_request.supported_card_networks().size()); | 206 ASSERT_EQ(8U, payment_request.supported_card_networks().size()); |
| 187 EXPECT_EQ("amex", payment_request.supported_card_networks()[0]); | 207 EXPECT_EQ("amex", payment_request.supported_card_networks()[0]); |
| 188 EXPECT_EQ("diners", payment_request.supported_card_networks()[1]); | 208 EXPECT_EQ("diners", payment_request.supported_card_networks()[1]); |
| 189 EXPECT_EQ("discover", payment_request.supported_card_networks()[2]); | 209 EXPECT_EQ("discover", payment_request.supported_card_networks()[2]); |
| 190 EXPECT_EQ("jcb", payment_request.supported_card_networks()[3]); | 210 EXPECT_EQ("jcb", payment_request.supported_card_networks()[3]); |
| 191 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[4]); | 211 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[4]); |
| 192 EXPECT_EQ("mir", payment_request.supported_card_networks()[5]); | 212 EXPECT_EQ("mir", payment_request.supported_card_networks()[5]); |
| 193 EXPECT_EQ("unionpay", payment_request.supported_card_networks()[6]); | 213 EXPECT_EQ("unionpay", payment_request.supported_card_networks()[6]); |
| 194 EXPECT_EQ("visa", payment_request.supported_card_networks()[7]); | 214 EXPECT_EQ("visa", payment_request.supported_card_networks()[7]); |
| 195 } | 215 } |
| 196 | 216 |
| 197 // Test that specifying a method AND basic-card means that all are supported, | 217 // Test that specifying a method AND basic-card means that all are supported, |
| 198 // but with the method as first. | 218 // but with the method as first. |
| 199 TEST_F(PaymentRequestTest, SupportedMethods_BasicCard_WithSpecificMethod) { | 219 TEST_F(PaymentRequestTest, SupportedMethods_BasicCard_WithSpecificMethod) { |
| 200 web::PaymentRequest web_payment_request; | 220 web::PaymentRequest web_payment_request; |
| 201 autofill::TestPersonalDataManager personal_data_manager; | 221 autofill::TestPersonalDataManager personal_data_manager; |
| 202 | 222 |
| 203 PaymentMethodData method_datum1; | 223 PaymentMethodData method_datum1; |
| 204 method_datum1.supported_methods.push_back("jcb"); | 224 method_datum1.supported_methods.push_back("jcb"); |
| 205 method_datum1.supported_methods.push_back("basic-card"); | 225 method_datum1.supported_methods.push_back("basic-card"); |
| 206 web_payment_request.method_data.push_back(method_datum1); | 226 web_payment_request.method_data.push_back(method_datum1); |
| 207 | 227 |
| 208 TestPaymentRequest payment_request(web_payment_request, | 228 TestPaymentRequest payment_request(web_payment_request, |
| 229 chrome_browser_state_.get(), &web_state_, | |
| 209 &personal_data_manager); | 230 &personal_data_manager); |
| 210 | 231 |
| 211 // All of the basic card networks are supported, but JCB is first because it | 232 // All of the basic card networks are supported, but JCB is first because it |
| 212 // was specified first. | 233 // was specified first. |
| 213 EXPECT_EQ(8u, payment_request.supported_card_networks().size()); | 234 EXPECT_EQ(8u, payment_request.supported_card_networks().size()); |
| 214 EXPECT_EQ("jcb", payment_request.supported_card_networks()[0]); | 235 EXPECT_EQ("jcb", payment_request.supported_card_networks()[0]); |
| 215 EXPECT_EQ("amex", payment_request.supported_card_networks()[1]); | 236 EXPECT_EQ("amex", payment_request.supported_card_networks()[1]); |
| 216 EXPECT_EQ("diners", payment_request.supported_card_networks()[2]); | 237 EXPECT_EQ("diners", payment_request.supported_card_networks()[2]); |
| 217 EXPECT_EQ("discover", payment_request.supported_card_networks()[3]); | 238 EXPECT_EQ("discover", payment_request.supported_card_networks()[3]); |
| 218 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[4]); | 239 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[4]); |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 232 method_datum1.supported_methods.push_back("visa"); | 253 method_datum1.supported_methods.push_back("visa"); |
| 233 web_payment_request.method_data.push_back(method_datum1); | 254 web_payment_request.method_data.push_back(method_datum1); |
| 234 PaymentMethodData method_datum2; | 255 PaymentMethodData method_datum2; |
| 235 method_datum2.supported_methods.push_back("basic-card"); | 256 method_datum2.supported_methods.push_back("basic-card"); |
| 236 method_datum2.supported_networks.push_back("visa"); | 257 method_datum2.supported_networks.push_back("visa"); |
| 237 method_datum2.supported_networks.push_back("mastercard"); | 258 method_datum2.supported_networks.push_back("mastercard"); |
| 238 method_datum2.supported_networks.push_back("unionpay"); | 259 method_datum2.supported_networks.push_back("unionpay"); |
| 239 web_payment_request.method_data.push_back(method_datum2); | 260 web_payment_request.method_data.push_back(method_datum2); |
| 240 | 261 |
| 241 TestPaymentRequest payment_request(web_payment_request, | 262 TestPaymentRequest payment_request(web_payment_request, |
| 263 chrome_browser_state_.get(), &web_state_, | |
| 242 &personal_data_manager); | 264 &personal_data_manager); |
| 243 | 265 |
| 244 EXPECT_EQ(3u, payment_request.supported_card_networks().size()); | 266 EXPECT_EQ(3u, payment_request.supported_card_networks().size()); |
| 245 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[0]); | 267 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[0]); |
| 246 EXPECT_EQ("visa", payment_request.supported_card_networks()[1]); | 268 EXPECT_EQ("visa", payment_request.supported_card_networks()[1]); |
| 247 EXPECT_EQ("unionpay", payment_request.supported_card_networks()[2]); | 269 EXPECT_EQ("unionpay", payment_request.supported_card_networks()[2]); |
| 248 } | 270 } |
| 249 | 271 |
| 250 // Test that specifying basic-card with supported networks after specifying | 272 // Test that specifying basic-card with supported networks after specifying |
| 251 // some methods | 273 // some methods |
| 252 TEST_F(PaymentRequestTest, SupportedMethods_BasicCard_WithSupportedNetworks) { | 274 TEST_F(PaymentRequestTest, SupportedMethods_BasicCard_WithSupportedNetworks) { |
| 253 web::PaymentRequest web_payment_request; | 275 web::PaymentRequest web_payment_request; |
| 254 autofill::TestPersonalDataManager personal_data_manager; | 276 autofill::TestPersonalDataManager personal_data_manager; |
| 255 | 277 |
| 256 PaymentMethodData method_datum1; | 278 PaymentMethodData method_datum1; |
| 257 method_datum1.supported_methods.push_back("basic-card"); | 279 method_datum1.supported_methods.push_back("basic-card"); |
| 258 method_datum1.supported_networks.push_back("visa"); | 280 method_datum1.supported_networks.push_back("visa"); |
| 259 method_datum1.supported_networks.push_back("unionpay"); | 281 method_datum1.supported_networks.push_back("unionpay"); |
| 260 web_payment_request.method_data.push_back(method_datum1); | 282 web_payment_request.method_data.push_back(method_datum1); |
| 261 | 283 |
| 262 TestPaymentRequest payment_request(web_payment_request, | 284 TestPaymentRequest payment_request(web_payment_request, |
| 285 chrome_browser_state_.get(), &web_state_, | |
| 263 &personal_data_manager); | 286 &personal_data_manager); |
| 264 | 287 |
| 265 // Only the specified networks are supported. | 288 // Only the specified networks are supported. |
| 266 EXPECT_EQ(2u, payment_request.supported_card_networks().size()); | 289 EXPECT_EQ(2u, payment_request.supported_card_networks().size()); |
| 267 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); | 290 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); |
| 268 EXPECT_EQ("unionpay", payment_request.supported_card_networks()[1]); | 291 EXPECT_EQ("unionpay", payment_request.supported_card_networks()[1]); |
| 269 } | 292 } |
| 270 | 293 |
| 271 // Tests that an autofill payment instrumnt e.g., credit cards can be added | 294 // Tests that an autofill payment instrumnt e.g., credit cards can be added |
| 272 // to the list of available payment methods. | 295 // to the list of available payment methods. |
| 273 TEST_F(PaymentRequestTest, AddAutofillPaymentInstrument) { | 296 TEST_F(PaymentRequestTest, AddAutofillPaymentInstrument) { |
| 274 web::PaymentRequest web_payment_request; | 297 web::PaymentRequest web_payment_request; |
| 275 PaymentMethodData method_datum; | 298 PaymentMethodData method_datum; |
| 276 method_datum.supported_methods.push_back("basic-card"); | 299 method_datum.supported_methods.push_back("basic-card"); |
| 277 method_datum.supported_networks.push_back("visa"); | 300 method_datum.supported_networks.push_back("visa"); |
| 278 method_datum.supported_networks.push_back("amex"); | 301 method_datum.supported_networks.push_back("amex"); |
| 279 web_payment_request.method_data.push_back(method_datum); | 302 web_payment_request.method_data.push_back(method_datum); |
| 280 | 303 |
| 281 autofill::TestPersonalDataManager personal_data_manager; | 304 autofill::TestPersonalDataManager personal_data_manager; |
| 282 | 305 |
| 283 autofill::CreditCard credit_card_1 = autofill::test::GetCreditCard(); | 306 autofill::CreditCard credit_card_1 = autofill::test::GetCreditCard(); |
| 284 personal_data_manager.AddTestingCreditCard(&credit_card_1); | 307 personal_data_manager.AddTestingCreditCard(&credit_card_1); |
| 285 | 308 |
| 286 TestPaymentRequest payment_request(web_payment_request, | 309 TestPaymentRequest payment_request(web_payment_request, |
| 310 chrome_browser_state_.get(), &web_state_, | |
| 287 &personal_data_manager); | 311 &personal_data_manager); |
| 288 EXPECT_EQ(1U, payment_request.payment_methods().size()); | 312 EXPECT_EQ(1U, payment_request.payment_methods().size()); |
| 289 | 313 |
| 290 autofill::CreditCard credit_card_2 = autofill::test::GetCreditCard2(); | 314 autofill::CreditCard credit_card_2 = autofill::test::GetCreditCard2(); |
| 291 AutofillPaymentInstrument* added_credit_card = | 315 AutofillPaymentInstrument* added_credit_card = |
| 292 payment_request.AddAutofillPaymentInstrument(credit_card_2); | 316 payment_request.AddAutofillPaymentInstrument(credit_card_2); |
| 293 | 317 |
| 294 EXPECT_EQ(2U, payment_request.payment_methods().size()); | 318 EXPECT_EQ(2U, payment_request.payment_methods().size()); |
| 295 EXPECT_EQ(credit_card_2, *added_credit_card->credit_card()); | 319 EXPECT_EQ(credit_card_2, *added_credit_card->credit_card()); |
| 296 } | 320 } |
| 297 | 321 |
| 298 // Tests that a profile can be added to the list of available profiles. | 322 // Tests that a profile can be added to the list of available profiles. |
| 299 TEST_F(PaymentRequestTest, AddAutofillProfile) { | 323 TEST_F(PaymentRequestTest, AddAutofillProfile) { |
| 300 web::PaymentRequest web_payment_request; | 324 web::PaymentRequest web_payment_request; |
| 301 web_payment_request.options = CreatePaymentOptions( | 325 web_payment_request.options = CreatePaymentOptions( |
| 302 /*request_payer_name=*/true, /*request_payer_phone=*/true, | 326 /*request_payer_name=*/true, /*request_payer_phone=*/true, |
| 303 /*request_payer_email=*/true, /*request_shipping=*/true); | 327 /*request_payer_email=*/true, /*request_shipping=*/true); |
| 304 | 328 |
| 305 autofill::TestPersonalDataManager personal_data_manager; | 329 autofill::TestPersonalDataManager personal_data_manager; |
| 306 | 330 |
| 307 autofill::AutofillProfile profile_1 = autofill::test::GetFullProfile(); | 331 autofill::AutofillProfile profile_1 = autofill::test::GetFullProfile(); |
| 308 personal_data_manager.AddTestingProfile(&profile_1); | 332 personal_data_manager.AddTestingProfile(&profile_1); |
| 309 | 333 |
| 310 TestPaymentRequest payment_request(web_payment_request, | 334 TestPaymentRequest payment_request(web_payment_request, |
| 335 chrome_browser_state_.get(), &web_state_, | |
| 311 &personal_data_manager); | 336 &personal_data_manager); |
| 312 EXPECT_EQ(1U, payment_request.shipping_profiles().size()); | 337 EXPECT_EQ(1U, payment_request.shipping_profiles().size()); |
| 313 EXPECT_EQ(1U, payment_request.contact_profiles().size()); | 338 EXPECT_EQ(1U, payment_request.contact_profiles().size()); |
| 314 | 339 |
| 315 autofill::AutofillProfile profile_2 = autofill::test::GetFullProfile2(); | 340 autofill::AutofillProfile profile_2 = autofill::test::GetFullProfile2(); |
| 316 autofill::AutofillProfile* added_profile = | 341 autofill::AutofillProfile* added_profile = |
| 317 payment_request.AddAutofillProfile(profile_2); | 342 payment_request.AddAutofillProfile(profile_2); |
| 318 | 343 |
| 319 EXPECT_EQ(2U, payment_request.shipping_profiles().size()); | 344 EXPECT_EQ(2U, payment_request.shipping_profiles().size()); |
| 320 EXPECT_EQ(2U, payment_request.contact_profiles().size()); | 345 EXPECT_EQ(2U, payment_request.contact_profiles().size()); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 337 option2.selected = true; | 362 option2.selected = true; |
| 338 shipping_options.push_back(std::move(option2)); | 363 shipping_options.push_back(std::move(option2)); |
| 339 web::PaymentShippingOption option3; | 364 web::PaymentShippingOption option3; |
| 340 option3.id = base::UTF8ToUTF16("option:3"); | 365 option3.id = base::UTF8ToUTF16("option:3"); |
| 341 option3.selected = true; | 366 option3.selected = true; |
| 342 shipping_options.push_back(std::move(option3)); | 367 shipping_options.push_back(std::move(option3)); |
| 343 details.shipping_options = std::move(shipping_options); | 368 details.shipping_options = std::move(shipping_options); |
| 344 web_payment_request.details = std::move(details); | 369 web_payment_request.details = std::move(details); |
| 345 | 370 |
| 346 TestPaymentRequest payment_request(web_payment_request, | 371 TestPaymentRequest payment_request(web_payment_request, |
| 372 chrome_browser_state_.get(), &web_state_, | |
| 347 &personal_data_manager); | 373 &personal_data_manager); |
| 348 // The last one marked "selected" should be selected. | 374 // The last one marked "selected" should be selected. |
| 349 EXPECT_EQ(base::UTF8ToUTF16("option:3"), | 375 EXPECT_EQ(base::UTF8ToUTF16("option:3"), |
| 350 payment_request.selected_shipping_option()->id); | 376 payment_request.selected_shipping_option()->id); |
| 351 | 377 |
| 352 // Simulate an update that no longer has any shipping options. There is no | 378 // Simulate an update that no longer has any shipping options. There is no |
| 353 // longer a selected shipping option. | 379 // longer a selected shipping option. |
| 354 web::PaymentDetails new_details; | 380 web::PaymentDetails new_details; |
| 355 payment_request.UpdatePaymentDetails(std::move(new_details)); | 381 payment_request.UpdatePaymentDetails(std::move(new_details)); |
| 356 EXPECT_EQ(nullptr, payment_request.selected_shipping_option()); | 382 EXPECT_EQ(nullptr, payment_request.selected_shipping_option()); |
| 357 } | 383 } |
| 358 | 384 |
| 359 // Test that loading profiles when none are available works as expected. | 385 // Test that loading profiles when none are available works as expected. |
| 360 TEST_F(PaymentRequestTest, SelectedProfiles_NoProfiles) { | 386 TEST_F(PaymentRequestTest, SelectedProfiles_NoProfiles) { |
| 361 autofill::TestPersonalDataManager personal_data_manager; | 387 autofill::TestPersonalDataManager personal_data_manager; |
| 362 web::PaymentRequest web_payment_request; | 388 web::PaymentRequest web_payment_request; |
| 363 web_payment_request.details = CreateDetailsWithShippingOption(); | 389 web_payment_request.details = CreateDetailsWithShippingOption(); |
| 364 web_payment_request.options = CreatePaymentOptions( | 390 web_payment_request.options = CreatePaymentOptions( |
| 365 /*request_payer_name=*/true, /*request_payer_phone=*/true, | 391 /*request_payer_name=*/true, /*request_payer_phone=*/true, |
| 366 /*request_payer_email=*/true, /*request_shipping=*/true); | 392 /*request_payer_email=*/true, /*request_shipping=*/true); |
| 367 | 393 |
| 368 // No profiles are selected because none are available! | 394 // No profiles are selected because none are available! |
| 369 TestPaymentRequest payment_request(web_payment_request, | 395 TestPaymentRequest payment_request(web_payment_request, |
| 396 chrome_browser_state_.get(), &web_state_, | |
| 370 &personal_data_manager); | 397 &personal_data_manager); |
| 371 EXPECT_EQ(nullptr, payment_request.selected_shipping_profile()); | 398 EXPECT_EQ(nullptr, payment_request.selected_shipping_profile()); |
| 372 EXPECT_EQ(nullptr, payment_request.selected_contact_profile()); | 399 EXPECT_EQ(nullptr, payment_request.selected_contact_profile()); |
| 373 } | 400 } |
| 374 | 401 |
| 375 // Test that loading complete shipping and contact profiles works as expected. | 402 // Test that loading complete shipping and contact profiles works as expected. |
| 376 TEST_F(PaymentRequestTest, SelectedProfiles_Complete) { | 403 TEST_F(PaymentRequestTest, SelectedProfiles_Complete) { |
| 377 autofill::TestPersonalDataManager personal_data_manager; | 404 autofill::TestPersonalDataManager personal_data_manager; |
| 378 autofill::AutofillProfile address = autofill::test::GetFullProfile(); | 405 autofill::AutofillProfile address = autofill::test::GetFullProfile(); |
| 379 address.set_use_count(5U); | 406 address.set_use_count(5U); |
| 380 personal_data_manager.AddTestingProfile(&address); | 407 personal_data_manager.AddTestingProfile(&address); |
| 381 autofill::AutofillProfile address2 = autofill::test::GetFullProfile2(); | 408 autofill::AutofillProfile address2 = autofill::test::GetFullProfile2(); |
| 382 address2.set_use_count(15U); | 409 address2.set_use_count(15U); |
| 383 personal_data_manager.AddTestingProfile(&address2); | 410 personal_data_manager.AddTestingProfile(&address2); |
| 384 | 411 |
| 385 web::PaymentRequest web_payment_request; | 412 web::PaymentRequest web_payment_request; |
| 386 web_payment_request.details = CreateDetailsWithShippingOption(); | 413 web_payment_request.details = CreateDetailsWithShippingOption(); |
| 387 web_payment_request.options = CreatePaymentOptions( | 414 web_payment_request.options = CreatePaymentOptions( |
| 388 /*request_payer_name=*/true, /*request_payer_phone=*/true, | 415 /*request_payer_name=*/true, /*request_payer_phone=*/true, |
| 389 /*request_payer_email=*/true, /*request_shipping=*/true); | 416 /*request_payer_email=*/true, /*request_shipping=*/true); |
| 390 | 417 |
| 391 // address2 is selected because it has the most use count (Frecency model). | 418 // address2 is selected because it has the most use count (Frecency model). |
| 392 TestPaymentRequest payment_request(web_payment_request, | 419 TestPaymentRequest payment_request(web_payment_request, |
| 420 chrome_browser_state_.get(), &web_state_, | |
| 393 &personal_data_manager); | 421 &personal_data_manager); |
| 394 EXPECT_EQ(address2.guid(), | 422 EXPECT_EQ(address2.guid(), |
| 395 payment_request.selected_shipping_profile()->guid()); | 423 payment_request.selected_shipping_profile()->guid()); |
| 396 EXPECT_EQ(address2.guid(), | 424 EXPECT_EQ(address2.guid(), |
| 397 payment_request.selected_contact_profile()->guid()); | 425 payment_request.selected_contact_profile()->guid()); |
| 398 } | 426 } |
| 399 | 427 |
| 400 // Test that loading complete shipping and contact profiles, when there are no | 428 // Test that loading complete shipping and contact profiles, when there are no |
| 401 // shipping options available, works as expected. | 429 // shipping options available, works as expected. |
| 402 TEST_F(PaymentRequestTest, SelectedProfiles_Complete_NoShippingOption) { | 430 TEST_F(PaymentRequestTest, SelectedProfiles_Complete_NoShippingOption) { |
| 403 autofill::TestPersonalDataManager personal_data_manager; | 431 autofill::TestPersonalDataManager personal_data_manager; |
| 404 autofill::AutofillProfile address = autofill::test::GetFullProfile(); | 432 autofill::AutofillProfile address = autofill::test::GetFullProfile(); |
| 405 address.set_use_count(5U); | 433 address.set_use_count(5U); |
| 406 personal_data_manager.AddTestingProfile(&address); | 434 personal_data_manager.AddTestingProfile(&address); |
| 407 | 435 |
| 408 web::PaymentRequest web_payment_request; | 436 web::PaymentRequest web_payment_request; |
| 409 // No shipping options. | 437 // No shipping options. |
| 410 web_payment_request.details = web::PaymentDetails(); | 438 web_payment_request.details = web::PaymentDetails(); |
| 411 web_payment_request.options = CreatePaymentOptions( | 439 web_payment_request.options = CreatePaymentOptions( |
| 412 /*request_payer_name=*/true, /*request_payer_phone=*/true, | 440 /*request_payer_name=*/true, /*request_payer_phone=*/true, |
| 413 /*request_payer_email=*/true, /*request_shipping=*/true); | 441 /*request_payer_email=*/true, /*request_shipping=*/true); |
| 414 | 442 |
| 415 // No shipping profile is selected because the merchant has not selected a | 443 // No shipping profile is selected because the merchant has not selected a |
| 416 // shipping option. However there is a suitable contact profile. | 444 // shipping option. However there is a suitable contact profile. |
| 417 TestPaymentRequest payment_request(web_payment_request, | 445 TestPaymentRequest payment_request(web_payment_request, |
| 446 chrome_browser_state_.get(), &web_state_, | |
| 418 &personal_data_manager); | 447 &personal_data_manager); |
| 419 EXPECT_EQ(nullptr, payment_request.selected_shipping_profile()); | 448 EXPECT_EQ(nullptr, payment_request.selected_shipping_profile()); |
| 420 EXPECT_EQ(address.guid(), payment_request.selected_contact_profile()->guid()); | 449 EXPECT_EQ(address.guid(), payment_request.selected_contact_profile()->guid()); |
| 421 } | 450 } |
| 422 | 451 |
| 423 // Test that loading incomplete shipping and contact profiles works as expected. | 452 // Test that loading incomplete shipping and contact profiles works as expected. |
| 424 TEST_F(PaymentRequestTest, SelectedProfiles_Incomplete) { | 453 TEST_F(PaymentRequestTest, SelectedProfiles_Incomplete) { |
| 425 autofill::TestPersonalDataManager personal_data_manager; | 454 autofill::TestPersonalDataManager personal_data_manager; |
| 426 // Add a profile with no phone (incomplete). | 455 // Add a profile with no phone (incomplete). |
| 427 autofill::AutofillProfile address1 = autofill::test::GetFullProfile(); | 456 autofill::AutofillProfile address1 = autofill::test::GetFullProfile(); |
| 428 address1.SetInfo(autofill::AutofillType(autofill::PHONE_HOME_WHOLE_NUMBER), | 457 address1.SetInfo(autofill::AutofillType(autofill::PHONE_HOME_WHOLE_NUMBER), |
| 429 base::string16(), "en-US"); | 458 base::string16(), "en-US"); |
| 430 address1.set_use_count(5U); | 459 address1.set_use_count(5U); |
| 431 personal_data_manager.AddTestingProfile(&address1); | 460 personal_data_manager.AddTestingProfile(&address1); |
| 432 // Add a complete profile, with fewer use counts. | 461 // Add a complete profile, with fewer use counts. |
| 433 autofill::AutofillProfile address2 = autofill::test::GetFullProfile2(); | 462 autofill::AutofillProfile address2 = autofill::test::GetFullProfile2(); |
| 434 address2.set_use_count(3U); | 463 address2.set_use_count(3U); |
| 435 personal_data_manager.AddTestingProfile(&address2); | 464 personal_data_manager.AddTestingProfile(&address2); |
| 436 | 465 |
| 437 web::PaymentRequest web_payment_request; | 466 web::PaymentRequest web_payment_request; |
| 438 web_payment_request.details = CreateDetailsWithShippingOption(); | 467 web_payment_request.details = CreateDetailsWithShippingOption(); |
| 439 web_payment_request.options = CreatePaymentOptions( | 468 web_payment_request.options = CreatePaymentOptions( |
| 440 /*request_payer_name=*/true, /*request_payer_phone=*/true, | 469 /*request_payer_name=*/true, /*request_payer_phone=*/true, |
| 441 /*request_payer_email=*/true, /*request_shipping=*/true); | 470 /*request_payer_email=*/true, /*request_shipping=*/true); |
| 442 | 471 |
| 443 // Even though address1 has more use counts, address2 is selected because it | 472 // Even though address1 has more use counts, address2 is selected because it |
| 444 // is complete. | 473 // is complete. |
| 445 TestPaymentRequest payment_request(web_payment_request, | 474 TestPaymentRequest payment_request(web_payment_request, |
| 475 chrome_browser_state_.get(), &web_state_, | |
| 446 &personal_data_manager); | 476 &personal_data_manager); |
| 447 EXPECT_EQ(address2.guid(), | 477 EXPECT_EQ(address2.guid(), |
| 448 payment_request.selected_shipping_profile()->guid()); | 478 payment_request.selected_shipping_profile()->guid()); |
| 449 EXPECT_EQ(address2.guid(), | 479 EXPECT_EQ(address2.guid(), |
| 450 payment_request.selected_contact_profile()->guid()); | 480 payment_request.selected_contact_profile()->guid()); |
| 451 } | 481 } |
| 452 | 482 |
| 453 // Test that loading incomplete contact profiles works as expected when the | 483 // Test that loading incomplete contact profiles works as expected when the |
| 454 // merchant is not interested in the missing field. Test that the most complete | 484 // merchant is not interested in the missing field. Test that the most complete |
| 455 // shipping profile is selected. | 485 // shipping profile is selected. |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 472 // The merchant doesn't care about the phone number. | 502 // The merchant doesn't care about the phone number. |
| 473 web_payment_request.options = CreatePaymentOptions( | 503 web_payment_request.options = CreatePaymentOptions( |
| 474 /*request_payer_name=*/true, /*request_payer_phone=*/false, | 504 /*request_payer_name=*/true, /*request_payer_phone=*/false, |
| 475 /*request_payer_email=*/true, /*request_shipping=*/true); | 505 /*request_payer_email=*/true, /*request_shipping=*/true); |
| 476 | 506 |
| 477 // address1 has more use counts, and even though it has no phone number, it's | 507 // address1 has more use counts, and even though it has no phone number, it's |
| 478 // still selected as the contact profile because merchant doesn't require | 508 // still selected as the contact profile because merchant doesn't require |
| 479 // phone. address2 is selected as the shipping profile because it's the most | 509 // phone. address2 is selected as the shipping profile because it's the most |
| 480 // complete for shipping. | 510 // complete for shipping. |
| 481 TestPaymentRequest payment_request(web_payment_request, | 511 TestPaymentRequest payment_request(web_payment_request, |
| 512 chrome_browser_state_.get(), &web_state_, | |
| 482 &personal_data_manager); | 513 &personal_data_manager); |
| 483 EXPECT_EQ(address2.guid(), | 514 EXPECT_EQ(address2.guid(), |
| 484 payment_request.selected_shipping_profile()->guid()); | 515 payment_request.selected_shipping_profile()->guid()); |
| 485 EXPECT_EQ(address1.guid(), | 516 EXPECT_EQ(address1.guid(), |
| 486 payment_request.selected_contact_profile()->guid()); | 517 payment_request.selected_contact_profile()->guid()); |
| 487 } | 518 } |
| 488 | 519 |
| 489 // Test that loading payment methods when none are available works as expected. | 520 // Test that loading payment methods when none are available works as expected. |
| 490 TEST_F(PaymentRequestTest, SelectedPaymentMethod_NoPaymentMethods) { | 521 TEST_F(PaymentRequestTest, SelectedPaymentMethod_NoPaymentMethods) { |
| 491 autofill::TestPersonalDataManager personal_data_manager; | 522 autofill::TestPersonalDataManager personal_data_manager; |
| 492 web::PaymentRequest web_payment_request = | 523 web::PaymentRequest web_payment_request = |
| 493 payment_request_test_util::CreateTestWebPaymentRequest(); | 524 payment_request_test_util::CreateTestWebPaymentRequest(); |
| 494 | 525 |
| 495 // No payment methods are selected because none are available! | 526 // No payment methods are selected because none are available! |
| 496 TestPaymentRequest payment_request(web_payment_request, | 527 TestPaymentRequest payment_request(web_payment_request, |
| 528 chrome_browser_state_.get(), &web_state_, | |
| 497 &personal_data_manager); | 529 &personal_data_manager); |
| 498 EXPECT_EQ(nullptr, payment_request.selected_payment_method()); | 530 EXPECT_EQ(nullptr, payment_request.selected_payment_method()); |
| 499 } | 531 } |
| 500 | 532 |
| 501 // Test that loading expired credit cards works as expected. | 533 // Test that loading expired credit cards works as expected. |
| 502 TEST_F(PaymentRequestTest, SelectedPaymentMethod_ExpiredCard) { | 534 TEST_F(PaymentRequestTest, SelectedPaymentMethod_ExpiredCard) { |
| 503 autofill::TestPersonalDataManager personal_data_manager; | 535 autofill::TestPersonalDataManager personal_data_manager; |
| 504 autofill::AutofillProfile billing_address = autofill::test::GetFullProfile(); | 536 autofill::AutofillProfile billing_address = autofill::test::GetFullProfile(); |
| 505 personal_data_manager.AddTestingProfile(&billing_address); | 537 personal_data_manager.AddTestingProfile(&billing_address); |
| 506 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); | 538 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); |
| 507 personal_data_manager.AddTestingCreditCard(&credit_card); | 539 personal_data_manager.AddTestingCreditCard(&credit_card); |
| 508 credit_card.SetExpirationYear(2016); // Expired. | 540 credit_card.SetExpirationYear(2016); // Expired. |
| 509 credit_card.set_billing_address_id(billing_address.guid()); | 541 credit_card.set_billing_address_id(billing_address.guid()); |
| 510 | 542 |
| 511 web::PaymentRequest web_payment_request = | 543 web::PaymentRequest web_payment_request = |
| 512 payment_request_test_util::CreateTestWebPaymentRequest(); | 544 payment_request_test_util::CreateTestWebPaymentRequest(); |
| 513 | 545 |
| 514 // credit_card is selected because expired cards are valid for payment. | 546 // credit_card is selected because expired cards are valid for payment. |
| 515 TestPaymentRequest payment_request(web_payment_request, | 547 TestPaymentRequest payment_request(web_payment_request, |
| 548 chrome_browser_state_.get(), &web_state_, | |
| 516 &personal_data_manager); | 549 &personal_data_manager); |
| 517 EXPECT_EQ(payment_request.selected_payment_method()->type(), | 550 EXPECT_EQ(payment_request.selected_payment_method()->type(), |
| 518 PaymentInstrument::Type::AUTOFILL); | 551 PaymentInstrument::Type::AUTOFILL); |
| 519 AutofillPaymentInstrument* payment_instrument = | 552 AutofillPaymentInstrument* payment_instrument = |
| 520 static_cast<AutofillPaymentInstrument*>( | 553 static_cast<AutofillPaymentInstrument*>( |
| 521 payment_request.selected_payment_method()); | 554 payment_request.selected_payment_method()); |
| 522 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); | 555 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); |
| 523 } | 556 } |
| 524 | 557 |
| 525 // Test that loading complete payment methods works as expected. | 558 // Test that loading complete payment methods works as expected. |
| 526 TEST_F(PaymentRequestTest, SelectedPaymentMethod_Complete) { | 559 TEST_F(PaymentRequestTest, SelectedPaymentMethod_Complete) { |
| 527 autofill::TestPersonalDataManager personal_data_manager; | 560 autofill::TestPersonalDataManager personal_data_manager; |
| 528 autofill::AutofillProfile billing_address = autofill::test::GetFullProfile(); | 561 autofill::AutofillProfile billing_address = autofill::test::GetFullProfile(); |
| 529 personal_data_manager.AddTestingProfile(&billing_address); | 562 personal_data_manager.AddTestingProfile(&billing_address); |
| 530 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); | 563 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); |
| 531 credit_card.set_use_count(5U); | 564 credit_card.set_use_count(5U); |
| 532 personal_data_manager.AddTestingCreditCard(&credit_card); | 565 personal_data_manager.AddTestingCreditCard(&credit_card); |
| 533 credit_card.set_billing_address_id(billing_address.guid()); | 566 credit_card.set_billing_address_id(billing_address.guid()); |
| 534 autofill::CreditCard credit_card2 = autofill::test::GetCreditCard2(); | 567 autofill::CreditCard credit_card2 = autofill::test::GetCreditCard2(); |
| 535 credit_card2.set_use_count(15U); | 568 credit_card2.set_use_count(15U); |
| 536 personal_data_manager.AddTestingCreditCard(&credit_card2); | 569 personal_data_manager.AddTestingCreditCard(&credit_card2); |
| 537 credit_card2.set_billing_address_id(billing_address.guid()); | 570 credit_card2.set_billing_address_id(billing_address.guid()); |
| 538 | 571 |
| 539 web::PaymentRequest web_payment_request = | 572 web::PaymentRequest web_payment_request = |
| 540 payment_request_test_util::CreateTestWebPaymentRequest(); | 573 payment_request_test_util::CreateTestWebPaymentRequest(); |
| 541 | 574 |
| 542 // credit_card2 is selected because it has the most use count (Frecency | 575 // credit_card2 is selected because it has the most use count (Frecency |
| 543 // model). | 576 // model). |
| 544 TestPaymentRequest payment_request(web_payment_request, | 577 TestPaymentRequest payment_request(web_payment_request, |
| 578 chrome_browser_state_.get(), &web_state_, | |
| 545 &personal_data_manager); | 579 &personal_data_manager); |
| 546 AutofillPaymentInstrument* payment_instrument = | 580 AutofillPaymentInstrument* payment_instrument = |
| 547 static_cast<AutofillPaymentInstrument*>( | 581 static_cast<AutofillPaymentInstrument*>( |
| 548 payment_request.selected_payment_method()); | 582 payment_request.selected_payment_method()); |
| 549 EXPECT_EQ(credit_card2.guid(), payment_instrument->credit_card()->guid()); | 583 EXPECT_EQ(credit_card2.guid(), payment_instrument->credit_card()->guid()); |
| 550 } | 584 } |
| 551 | 585 |
| 552 // Test that loading incomplete payment methods works as expected. | 586 // Test that loading incomplete payment methods works as expected. |
| 553 TEST_F(PaymentRequestTest, SelectedPaymentMethod_Incomplete) { | 587 TEST_F(PaymentRequestTest, SelectedPaymentMethod_Incomplete) { |
| 554 autofill::TestPersonalDataManager personal_data_manager; | 588 autofill::TestPersonalDataManager personal_data_manager; |
| 555 autofill::AutofillProfile billing_address = autofill::test::GetFullProfile(); | 589 autofill::AutofillProfile billing_address = autofill::test::GetFullProfile(); |
| 556 personal_data_manager.AddTestingProfile(&billing_address); | 590 personal_data_manager.AddTestingProfile(&billing_address); |
| 557 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); | 591 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); |
| 558 credit_card.set_use_count(5U); | 592 credit_card.set_use_count(5U); |
| 559 personal_data_manager.AddTestingCreditCard(&credit_card); | 593 personal_data_manager.AddTestingCreditCard(&credit_card); |
| 560 credit_card.set_billing_address_id(billing_address.guid()); | 594 credit_card.set_billing_address_id(billing_address.guid()); |
| 561 autofill::CreditCard credit_card2 = autofill::test::GetCreditCard2(); | 595 autofill::CreditCard credit_card2 = autofill::test::GetCreditCard2(); |
| 562 credit_card2.set_use_count(15U); | 596 credit_card2.set_use_count(15U); |
| 563 personal_data_manager.AddTestingCreditCard(&credit_card2); | 597 personal_data_manager.AddTestingCreditCard(&credit_card2); |
| 564 | 598 |
| 565 web::PaymentRequest web_payment_request = | 599 web::PaymentRequest web_payment_request = |
| 566 payment_request_test_util::CreateTestWebPaymentRequest(); | 600 payment_request_test_util::CreateTestWebPaymentRequest(); |
| 567 | 601 |
| 568 // Even though credit_card2 has more use counts, credit_card is selected | 602 // Even though credit_card2 has more use counts, credit_card is selected |
| 569 // because it is complete. | 603 // because it is complete. |
| 570 TestPaymentRequest payment_request(web_payment_request, | 604 TestPaymentRequest payment_request(web_payment_request, |
| 605 chrome_browser_state_.get(), &web_state_, | |
| 571 &personal_data_manager); | 606 &personal_data_manager); |
| 572 AutofillPaymentInstrument* payment_instrument = | 607 AutofillPaymentInstrument* payment_instrument = |
| 573 static_cast<AutofillPaymentInstrument*>( | 608 static_cast<AutofillPaymentInstrument*>( |
| 574 payment_request.selected_payment_method()); | 609 payment_request.selected_payment_method()); |
| 575 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); | 610 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); |
| 576 } | 611 } |
| 577 | 612 |
| 578 // Test that the use counts of the data models are updated as expected when | 613 // Test that the use counts of the data models are updated as expected when |
| 579 // different autofill profiles are used as the shipping address and the contact | 614 // different autofill profiles are used as the shipping address and the contact |
| 580 // info. | 615 // info. |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 591 contact_info.set_use_count(5U); | 626 contact_info.set_use_count(5U); |
| 592 personal_data_manager.AddTestingProfile(&contact_info); | 627 personal_data_manager.AddTestingProfile(&contact_info); |
| 593 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); | 628 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); |
| 594 personal_data_manager.AddTestingCreditCard(&credit_card); | 629 personal_data_manager.AddTestingCreditCard(&credit_card); |
| 595 credit_card.set_billing_address_id(address.guid()); | 630 credit_card.set_billing_address_id(address.guid()); |
| 596 | 631 |
| 597 web::PaymentRequest web_payment_request = | 632 web::PaymentRequest web_payment_request = |
| 598 payment_request_test_util::CreateTestWebPaymentRequest(); | 633 payment_request_test_util::CreateTestWebPaymentRequest(); |
| 599 | 634 |
| 600 TestPaymentRequest payment_request(web_payment_request, | 635 TestPaymentRequest payment_request(web_payment_request, |
| 636 chrome_browser_state_.get(), &web_state_, | |
| 601 &personal_data_manager); | 637 &personal_data_manager); |
| 602 AutofillPaymentInstrument* payment_instrument = | 638 AutofillPaymentInstrument* payment_instrument = |
| 603 static_cast<AutofillPaymentInstrument*>( | 639 static_cast<AutofillPaymentInstrument*>( |
| 604 payment_request.selected_payment_method()); | 640 payment_request.selected_payment_method()); |
| 605 EXPECT_EQ(address.guid(), | 641 EXPECT_EQ(address.guid(), |
| 606 payment_request.selected_shipping_profile()->guid()); | 642 payment_request.selected_shipping_profile()->guid()); |
| 607 EXPECT_EQ(contact_info.guid(), | 643 EXPECT_EQ(contact_info.guid(), |
| 608 payment_request.selected_contact_profile()->guid()); | 644 payment_request.selected_contact_profile()->guid()); |
| 609 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); | 645 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); |
| 610 | 646 |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 627 autofill::AutofillProfile address = autofill::test::GetFullProfile(); | 663 autofill::AutofillProfile address = autofill::test::GetFullProfile(); |
| 628 personal_data_manager.AddTestingProfile(&address); | 664 personal_data_manager.AddTestingProfile(&address); |
| 629 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); | 665 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); |
| 630 personal_data_manager.AddTestingCreditCard(&credit_card); | 666 personal_data_manager.AddTestingCreditCard(&credit_card); |
| 631 credit_card.set_billing_address_id(address.guid()); | 667 credit_card.set_billing_address_id(address.guid()); |
| 632 | 668 |
| 633 web::PaymentRequest web_payment_request = | 669 web::PaymentRequest web_payment_request = |
| 634 payment_request_test_util::CreateTestWebPaymentRequest(); | 670 payment_request_test_util::CreateTestWebPaymentRequest(); |
| 635 | 671 |
| 636 TestPaymentRequest payment_request(web_payment_request, | 672 TestPaymentRequest payment_request(web_payment_request, |
| 673 chrome_browser_state_.get(), &web_state_, | |
| 637 &personal_data_manager); | 674 &personal_data_manager); |
| 638 AutofillPaymentInstrument* payment_instrument = | 675 AutofillPaymentInstrument* payment_instrument = |
| 639 static_cast<AutofillPaymentInstrument*>( | 676 static_cast<AutofillPaymentInstrument*>( |
| 640 payment_request.selected_payment_method()); | 677 payment_request.selected_payment_method()); |
| 641 EXPECT_EQ(address.guid(), | 678 EXPECT_EQ(address.guid(), |
| 642 payment_request.selected_shipping_profile()->guid()); | 679 payment_request.selected_shipping_profile()->guid()); |
| 643 EXPECT_EQ(address.guid(), payment_request.selected_contact_profile()->guid()); | 680 EXPECT_EQ(address.guid(), payment_request.selected_contact_profile()->guid()); |
| 644 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); | 681 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); |
| 645 | 682 |
| 646 // Even though |address| is used for contact info, shipping address, and | 683 // Even though |address| is used for contact info, shipping address, and |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 664 personal_data_manager.AddTestingCreditCard(&credit_card); | 701 personal_data_manager.AddTestingCreditCard(&credit_card); |
| 665 credit_card.set_billing_address_id(address.guid()); | 702 credit_card.set_billing_address_id(address.guid()); |
| 666 | 703 |
| 667 web::PaymentRequest web_payment_request = | 704 web::PaymentRequest web_payment_request = |
| 668 payment_request_test_util::CreateTestWebPaymentRequest(); | 705 payment_request_test_util::CreateTestWebPaymentRequest(); |
| 669 web_payment_request.options.request_payer_name = false; | 706 web_payment_request.options.request_payer_name = false; |
| 670 web_payment_request.options.request_payer_email = false; | 707 web_payment_request.options.request_payer_email = false; |
| 671 web_payment_request.options.request_payer_phone = false; | 708 web_payment_request.options.request_payer_phone = false; |
| 672 | 709 |
| 673 TestPaymentRequest payment_request(web_payment_request, | 710 TestPaymentRequest payment_request(web_payment_request, |
| 711 chrome_browser_state_.get(), &web_state_, | |
| 674 &personal_data_manager); | 712 &personal_data_manager); |
| 675 AutofillPaymentInstrument* payment_instrument = | 713 AutofillPaymentInstrument* payment_instrument = |
| 676 static_cast<AutofillPaymentInstrument*>( | 714 static_cast<AutofillPaymentInstrument*>( |
| 677 payment_request.selected_payment_method()); | 715 payment_request.selected_payment_method()); |
| 678 EXPECT_EQ(address.guid(), | 716 EXPECT_EQ(address.guid(), |
| 679 payment_request.selected_shipping_profile()->guid()); | 717 payment_request.selected_shipping_profile()->guid()); |
| 680 EXPECT_EQ(nullptr, payment_request.selected_contact_profile()); | 718 EXPECT_EQ(nullptr, payment_request.selected_contact_profile()); |
| 681 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); | 719 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); |
| 682 | 720 |
| 683 EXPECT_CALL(personal_data_manager, RecordUseOf(GuidMatches(address.guid()))) | 721 EXPECT_CALL(personal_data_manager, RecordUseOf(GuidMatches(address.guid()))) |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 697 personal_data_manager.AddTestingProfile(&address); | 735 personal_data_manager.AddTestingProfile(&address); |
| 698 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); | 736 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); |
| 699 personal_data_manager.AddTestingCreditCard(&credit_card); | 737 personal_data_manager.AddTestingCreditCard(&credit_card); |
| 700 credit_card.set_billing_address_id(address.guid()); | 738 credit_card.set_billing_address_id(address.guid()); |
| 701 | 739 |
| 702 web::PaymentRequest web_payment_request = | 740 web::PaymentRequest web_payment_request = |
| 703 payment_request_test_util::CreateTestWebPaymentRequest(); | 741 payment_request_test_util::CreateTestWebPaymentRequest(); |
| 704 web_payment_request.options.request_shipping = false; | 742 web_payment_request.options.request_shipping = false; |
| 705 | 743 |
| 706 TestPaymentRequest payment_request(web_payment_request, | 744 TestPaymentRequest payment_request(web_payment_request, |
| 745 chrome_browser_state_.get(), &web_state_, | |
| 707 &personal_data_manager); | 746 &personal_data_manager); |
| 708 AutofillPaymentInstrument* payment_instrument = | 747 AutofillPaymentInstrument* payment_instrument = |
| 709 static_cast<AutofillPaymentInstrument*>( | 748 static_cast<AutofillPaymentInstrument*>( |
| 710 payment_request.selected_payment_method()); | 749 payment_request.selected_payment_method()); |
| 711 EXPECT_EQ(nullptr, payment_request.selected_shipping_profile()); | 750 EXPECT_EQ(nullptr, payment_request.selected_shipping_profile()); |
| 712 EXPECT_EQ(address.guid(), payment_request.selected_contact_profile()->guid()); | 751 EXPECT_EQ(address.guid(), payment_request.selected_contact_profile()->guid()); |
| 713 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); | 752 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); |
| 714 | 753 |
| 715 EXPECT_CALL(personal_data_manager, RecordUseOf(GuidMatches(address.guid()))) | 754 EXPECT_CALL(personal_data_manager, RecordUseOf(GuidMatches(address.guid()))) |
| 716 .Times(1); | 755 .Times(1); |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 732 credit_card.set_billing_address_id(address.guid()); | 771 credit_card.set_billing_address_id(address.guid()); |
| 733 | 772 |
| 734 web::PaymentRequest web_payment_request = | 773 web::PaymentRequest web_payment_request = |
| 735 payment_request_test_util::CreateTestWebPaymentRequest(); | 774 payment_request_test_util::CreateTestWebPaymentRequest(); |
| 736 web_payment_request.options.request_shipping = false; | 775 web_payment_request.options.request_shipping = false; |
| 737 web_payment_request.options.request_payer_name = false; | 776 web_payment_request.options.request_payer_name = false; |
| 738 web_payment_request.options.request_payer_email = false; | 777 web_payment_request.options.request_payer_email = false; |
| 739 web_payment_request.options.request_payer_phone = false; | 778 web_payment_request.options.request_payer_phone = false; |
| 740 | 779 |
| 741 TestPaymentRequest payment_request(web_payment_request, | 780 TestPaymentRequest payment_request(web_payment_request, |
| 781 chrome_browser_state_.get(), &web_state_, | |
| 742 &personal_data_manager); | 782 &personal_data_manager); |
| 743 AutofillPaymentInstrument* payment_instrument = | 783 AutofillPaymentInstrument* payment_instrument = |
| 744 static_cast<AutofillPaymentInstrument*>( | 784 static_cast<AutofillPaymentInstrument*>( |
| 745 payment_request.selected_payment_method()); | 785 payment_request.selected_payment_method()); |
| 746 EXPECT_EQ(nullptr, payment_request.selected_shipping_profile()); | 786 EXPECT_EQ(nullptr, payment_request.selected_shipping_profile()); |
| 747 EXPECT_EQ(nullptr, payment_request.selected_contact_profile()); | 787 EXPECT_EQ(nullptr, payment_request.selected_contact_profile()); |
| 748 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); | 788 EXPECT_EQ(credit_card.guid(), payment_instrument->credit_card()->guid()); |
| 749 | 789 |
| 750 EXPECT_CALL(personal_data_manager, RecordUseOf(GuidMatches(address.guid()))) | 790 EXPECT_CALL(personal_data_manager, RecordUseOf(GuidMatches(address.guid()))) |
| 751 .Times(0); | 791 .Times(0); |
| 752 EXPECT_CALL(personal_data_manager, | 792 EXPECT_CALL(personal_data_manager, |
| 753 RecordUseOf(GuidMatches(credit_card.guid()))) | 793 RecordUseOf(GuidMatches(credit_card.guid()))) |
| 754 .Times(1); | 794 .Times(1); |
| 755 | 795 |
| 756 payment_request.RecordUseStats(); | 796 payment_request.RecordUseStats(); |
| 757 } | 797 } |
| 758 | 798 |
| 759 } // namespace payments | 799 } // namespace payments |
| OLD | NEW |