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

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

Issue 2803543005: [Payments] iOS: Support basic-card (Closed)
Patch Set: addressed comments Created 3 years, 8 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
« no previous file with comments | « ios/chrome/browser/payments/payment_request_coordinator.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "components/autofill/core/browser/autofill_test_utils.h" 8 #include "components/autofill/core/browser/autofill_test_utils.h"
9 #include "components/autofill/core/browser/test_personal_data_manager.h" 9 #include "components/autofill/core/browser/test_personal_data_manager.h"
10 #include "components/payments/core/currency_formatter.h" 10 #include "components/payments/core/currency_formatter.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 payments::PaymentMethodData method_datum2; 58 payments::PaymentMethodData method_datum2;
59 method_datum2.supported_methods.push_back("mastercard"); 59 method_datum2.supported_methods.push_back("mastercard");
60 web_payment_request.method_data.push_back(method_datum2); 60 web_payment_request.method_data.push_back(method_datum2);
61 61
62 PaymentRequest payment_request(web_payment_request, &personal_data_manager); 62 PaymentRequest payment_request(web_payment_request, &personal_data_manager);
63 ASSERT_EQ(2U, payment_request.supported_card_networks().size()); 63 ASSERT_EQ(2U, payment_request.supported_card_networks().size());
64 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]); 64 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]);
65 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]); 65 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]);
66 } 66 }
67 67
68 // Test that parsing supported methods (with invalid values and duplicates)
69 // works as expected.
70 TEST(PaymentRequestTest, SupportedMethods) {
71 web::PaymentRequest web_payment_request;
72 autofill::TestPersonalDataManager personal_data_manager;
73
74 payments::PaymentMethodData method_datum1;
75 method_datum1.supported_methods.push_back("visa");
76 method_datum1.supported_methods.push_back("mastercard");
77 method_datum1.supported_methods.push_back("invalid");
78 method_datum1.supported_methods.push_back("");
79 method_datum1.supported_methods.push_back("visa");
80 web_payment_request.method_data.push_back(method_datum1);
81
82 PaymentRequest payment_request(web_payment_request, &personal_data_manager);
83 ASSERT_EQ(2U, payment_request.supported_card_networks().size());
84 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]);
85 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]);
86 }
87
88 // Test that parsing supported methods in different method data entries (with
89 // invalid values and duplicates) works as expected.
90 TEST(PaymentRequestTest, SupportedMethods_MultipleEntries) {
91 web::PaymentRequest web_payment_request;
92 autofill::TestPersonalDataManager personal_data_manager;
93
94 payments::PaymentMethodData method_datum1;
95 method_datum1.supported_methods.push_back("visa");
96 web_payment_request.method_data.push_back(method_datum1);
97 payments::PaymentMethodData method_datum2;
98 method_datum2.supported_methods.push_back("mastercard");
99 web_payment_request.method_data.push_back(method_datum2);
100 payments::PaymentMethodData method_datum3;
101 method_datum3.supported_methods.push_back("");
102 web_payment_request.method_data.push_back(method_datum3);
103 payments::PaymentMethodData method_datum4;
104 method_datum4.supported_methods.push_back("visa");
105 web_payment_request.method_data.push_back(method_datum4);
106
107 PaymentRequest payment_request(web_payment_request, &personal_data_manager);
108 ASSERT_EQ(2U, payment_request.supported_card_networks().size());
109 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]);
110 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[1]);
111 }
112
113 // Test that only specifying basic-card means that all are supported.
114 TEST(PaymentRequestTest, SupportedMethods_OnlyBasicCard) {
115 web::PaymentRequest web_payment_request;
116 autofill::TestPersonalDataManager personal_data_manager;
117
118 payments::PaymentMethodData method_datum1;
119 method_datum1.supported_methods.push_back("basic-card");
120 web_payment_request.method_data.push_back(method_datum1);
121
122 PaymentRequest payment_request(web_payment_request, &personal_data_manager);
123
124 // All of the basic card networks are supported.
125 ASSERT_EQ(8U, payment_request.supported_card_networks().size());
126 EXPECT_EQ("amex", payment_request.supported_card_networks()[0]);
127 EXPECT_EQ("diners", payment_request.supported_card_networks()[1]);
128 EXPECT_EQ("discover", payment_request.supported_card_networks()[2]);
129 EXPECT_EQ("jcb", payment_request.supported_card_networks()[3]);
130 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[4]);
131 EXPECT_EQ("mir", payment_request.supported_card_networks()[5]);
132 EXPECT_EQ("unionpay", payment_request.supported_card_networks()[6]);
133 EXPECT_EQ("visa", payment_request.supported_card_networks()[7]);
134 }
135
136 // Test that specifying a method AND basic-card means that all are supported,
137 // but with the method as first.
138 TEST(PaymentRequestTest, SupportedMethods_BasicCard_WithSpecificMethod) {
139 web::PaymentRequest web_payment_request;
140 autofill::TestPersonalDataManager personal_data_manager;
141
142 payments::PaymentMethodData method_datum1;
143 method_datum1.supported_methods.push_back("jcb");
144 method_datum1.supported_methods.push_back("basic-card");
145 web_payment_request.method_data.push_back(method_datum1);
146
147 PaymentRequest payment_request(web_payment_request, &personal_data_manager);
148
149 // All of the basic card networks are supported, but JCB is first because it
150 // was specified first.
151 EXPECT_EQ(8u, payment_request.supported_card_networks().size());
152 EXPECT_EQ("jcb", payment_request.supported_card_networks()[0]);
153 EXPECT_EQ("amex", payment_request.supported_card_networks()[1]);
154 EXPECT_EQ("diners", payment_request.supported_card_networks()[2]);
155 EXPECT_EQ("discover", payment_request.supported_card_networks()[3]);
156 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[4]);
157 EXPECT_EQ("mir", payment_request.supported_card_networks()[5]);
158 EXPECT_EQ("unionpay", payment_request.supported_card_networks()[6]);
159 EXPECT_EQ("visa", payment_request.supported_card_networks()[7]);
160 }
161
162 // Test that specifying basic-card with a supported network (with previous
163 // supported methods) will work as expected
164 TEST(PaymentRequestTest, SupportedMethods_BasicCard_Overlap) {
165 web::PaymentRequest web_payment_request;
166 autofill::TestPersonalDataManager personal_data_manager;
167
168 payments::PaymentMethodData method_datum1;
169 method_datum1.supported_methods.push_back("mastercard");
170 method_datum1.supported_methods.push_back("visa");
171 web_payment_request.method_data.push_back(method_datum1);
172 payments::PaymentMethodData method_datum2;
173 method_datum2.supported_methods.push_back("basic-card");
174 method_datum2.supported_networks.push_back("visa");
175 method_datum2.supported_networks.push_back("mastercard");
176 method_datum2.supported_networks.push_back("unionpay");
177 web_payment_request.method_data.push_back(method_datum2);
178
179 PaymentRequest payment_request(web_payment_request, &personal_data_manager);
180
181 EXPECT_EQ(3u, payment_request.supported_card_networks().size());
182 EXPECT_EQ("mastercard", payment_request.supported_card_networks()[0]);
183 EXPECT_EQ("visa", payment_request.supported_card_networks()[1]);
184 EXPECT_EQ("unionpay", payment_request.supported_card_networks()[2]);
185 }
186
187 // Test that specifying basic-card with supported networks after specifying
188 // some methods
189 TEST(PaymentRequestTest, SupportedMethods_BasicCard_WithSupportedNetworks) {
190 web::PaymentRequest web_payment_request;
191 autofill::TestPersonalDataManager personal_data_manager;
192
193 payments::PaymentMethodData method_datum1;
194 method_datum1.supported_methods.push_back("basic-card");
195 method_datum1.supported_networks.push_back("visa");
196 method_datum1.supported_networks.push_back("unionpay");
197 web_payment_request.method_data.push_back(method_datum1);
198
199 PaymentRequest payment_request(web_payment_request, &personal_data_manager);
200
201 // Only the specified networks are supported.
202 EXPECT_EQ(2u, payment_request.supported_card_networks().size());
203 EXPECT_EQ("visa", payment_request.supported_card_networks()[0]);
204 EXPECT_EQ("unionpay", payment_request.supported_card_networks()[1]);
205 }
206
68 // Tests that credit cards can be added to the list of cached credit cards. 207 // Tests that credit cards can be added to the list of cached credit cards.
69 TEST(PaymentRequestTest, AddCreditCard) { 208 TEST(PaymentRequestTest, AddCreditCard) {
70 web::PaymentRequest web_payment_request; 209 web::PaymentRequest web_payment_request;
71 autofill::TestPersonalDataManager personal_data_manager; 210 autofill::TestPersonalDataManager personal_data_manager;
72 211
73 PaymentRequest payment_request(web_payment_request, &personal_data_manager); 212 PaymentRequest payment_request(web_payment_request, &personal_data_manager);
74 EXPECT_EQ(0U, payment_request.credit_cards().size()); 213 EXPECT_EQ(0U, payment_request.credit_cards().size());
75 214
76 autofill::CreditCard credit_card = autofill::test::GetCreditCard(); 215 autofill::CreditCard credit_card = autofill::test::GetCreditCard();
77 autofill::CreditCard* added_credit_card = 216 autofill::CreditCard* added_credit_card =
78 payment_request.AddCreditCard(credit_card); 217 payment_request.AddCreditCard(credit_card);
79 218
80 ASSERT_EQ(1U, payment_request.credit_cards().size()); 219 ASSERT_EQ(1U, payment_request.credit_cards().size());
81 EXPECT_EQ(credit_card, *added_credit_card); 220 EXPECT_EQ(credit_card, *added_credit_card);
82 } 221 }
OLDNEW
« no previous file with comments | « ios/chrome/browser/payments/payment_request_coordinator.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698