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

Side by Side Diff: ios/chrome/browser/payments/payment_request_unittest.mm

Issue 2970233002: [Payment Request] Adds a JourneyLogger instance to the PaymentRequest (Closed)
Patch Set: Initial Created 3 years, 5 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 unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698