OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/json/json_reader.h" | |
6 #include "base/logging.h" | |
7 #include "base/memory/scoped_ptr.h" | |
8 #include "base/utf_string_conversions.h" | |
9 #include "base/values.h" | |
10 #include "chrome/browser/autofill/wallet/wallet_address.h" | |
11 #include "testing/gtest/include/gtest/gtest.h" | |
12 | |
13 namespace { | |
14 | |
15 const char kAddressMissingObjectId[] = | |
16 "{" | |
17 " \"phone_number\":\"phone_number\"," | |
18 " \"postal_address\":" | |
19 " {" | |
20 " \"recipient_name\":\"recipient_name\"," | |
21 " \"address_line\":" | |
22 " [" | |
23 " \"address_line_1\"," | |
24 " \"address_line_2\"" | |
25 " ]," | |
26 " \"locality_name\":\"locality_name\"," | |
27 " \"administrative_area_name\":\"administrative_area_name\"," | |
28 " \"postal_code_number\":\"postal_code_number\"," | |
29 " \"country_name_code\":\"country_name_code\"" | |
30 " }" | |
31 "}"; | |
32 | |
33 const char kAddressMissingCountryNameCode[] = | |
34 "{" | |
35 " \"id\":\"id\"," | |
36 " \"phone_number\":\"phone_number\"," | |
37 " \"postal_address\":" | |
38 " {" | |
39 " \"recipient_name\":\"recipient_name\"," | |
40 " \"address_line\":" | |
41 " [" | |
42 " \"address_line_1\"," | |
43 " \"address_line_2\"" | |
44 " ]," | |
45 " \"locality_name\":\"locality_name\"," | |
46 " \"administrative_area_name\":\"administrative_area_name\"," | |
47 " \"postal_code_number\":\"postal_code_number\"" | |
48 " }" | |
49 "}"; | |
50 | |
51 const char kAddressMissingRecipientName[] = | |
52 "{" | |
53 " \"id\":\"id\"," | |
54 " \"phone_number\":\"phone_number\"," | |
55 " \"postal_address\":" | |
56 " {" | |
57 " \"address_line\":" | |
58 " [" | |
59 " \"address_line_1\"," | |
60 " \"address_line_2\"" | |
61 " ]," | |
62 " \"locality_name\":\"locality_name\"," | |
63 " \"administrative_area_name\":\"administrative_area_name\"," | |
64 " \"postal_code_number\":\"postal_code_number\"," | |
65 " \"country_name_code\":\"country_name_code\"" | |
66 " }" | |
67 "}"; | |
68 | |
69 const char kAddressMissingPostalCodeNumber[] = | |
70 "{" | |
71 " \"id\":\"id\"," | |
72 " \"phone_number\":\"phone_number\"," | |
73 " \"postal_address\":" | |
74 " {" | |
75 " \"recipient_name\":\"recipient_name\"," | |
76 " \"address_line\":" | |
77 " [" | |
78 " \"address_line_1\"," | |
79 " \"address_line_2\"" | |
80 " ]," | |
81 " \"locality_name\":\"locality_name\"," | |
82 " \"administrative_area_name\":\"administrative_area_name\"," | |
83 " \"country_name_code\":\"country_name_code\"" | |
84 " }" | |
85 "}"; | |
86 | |
87 const char kValidAddress[] = | |
88 "{" | |
89 " \"id\":\"id\"," | |
90 " \"phone_number\":\"phone_number\"," | |
91 " \"postal_address\":" | |
92 " {" | |
93 " \"recipient_name\":\"recipient_name\"," | |
94 " \"address_line\":" | |
95 " [" | |
96 " \"address_line_1\"," | |
97 " \"address_line_2\"" | |
98 " ]," | |
99 " \"locality_name\":\"locality_name\"," | |
100 " \"administrative_area_name\":\"administrative_area_name\"," | |
101 " \"country_name_code\":\"country_name_code\"," | |
102 " \"postal_code_number\":\"postal_code_number\"" | |
103 " }" | |
104 "}"; | |
105 | |
106 const char kClientAddressMissingCountryCode[] = | |
107 "{" | |
108 " \"name\":\"name\"," | |
109 " \"address1\":\"address1\"," | |
110 " \"address2\":\"address2\"," | |
111 " \"city\":\"city\"," | |
112 " \"state\":\"state\"," | |
113 " \"postal_code\":\"postal_code\"," | |
114 " \"phone_number\":\"phone_number\"" | |
115 "}"; | |
116 | |
117 const char kClientAddressMissingPostalCode[] = | |
118 "{" | |
119 " \"name\":\"name\"," | |
120 " \"address1\":\"address1\"," | |
121 " \"address2\":\"address2\"," | |
122 " \"city\":\"city\"," | |
123 " \"state\":\"state\"," | |
124 " \"phone_number\":\"phone_number\"," | |
125 " \"country_code\":\"country_code\"" | |
126 "}"; | |
127 | |
128 const char kClientAddressMissingName[] = | |
129 "{" | |
130 " \"address1\":\"address1\"," | |
131 " \"address2\":\"address2\"," | |
132 " \"city\":\"city\"," | |
133 " \"state\":\"state\"," | |
134 " \"postal_code\":\"postal_code\"," | |
135 " \"phone_number\":\"phone_number\"," | |
136 " \"country_code\":\"country_code\"" | |
137 "}"; | |
138 | |
139 const char kClientValidAddress[] = | |
140 "{" | |
141 " \"name\":\"name\"," | |
142 " \"address1\":\"address1\"," | |
143 " \"address2\":\"address2\"," | |
144 " \"city\":\"city\"," | |
145 " \"state\":\"state\"," | |
146 " \"postal_code\":\"postal_code\"," | |
147 " \"phone_number\":\"phone_number\"," | |
148 " \"country_code\":\"country_code\"" | |
149 "}"; | |
150 | |
151 } // anonymous namespace | |
152 | |
153 namespace autofill { | |
154 namespace wallet { | |
155 | |
156 class WalletAddressTest : public testing::Test { | |
157 public: | |
158 WalletAddressTest() {} | |
159 protected: | |
160 void SetUpDictionary(const std::string& json) { | |
161 scoped_ptr<Value> value(base::JSONReader::Read(json)); | |
162 DCHECK(value.get()); | |
163 DCHECK(value->IsType(Value::TYPE_DICTIONARY)); | |
164 dict_.reset(static_cast<DictionaryValue*>(value.release())); | |
165 } | |
166 scoped_ptr<const DictionaryValue> dict_; | |
167 }; | |
168 | |
169 TEST_F(WalletAddressTest, CreateAddressMissingObjectId) { | |
170 SetUpDictionary(kAddressMissingObjectId); | |
171 Address address("country_name_code", | |
172 ASCIIToUTF16("recipient_name"), | |
173 ASCIIToUTF16("address_line_1"), | |
174 ASCIIToUTF16("address_line_2"), | |
175 ASCIIToUTF16("locality_name"), | |
176 ASCIIToUTF16("administrative_area_name"), | |
177 ASCIIToUTF16("postal_code_number"), | |
178 ASCIIToUTF16("phone_number"), | |
179 ""); | |
180 ASSERT_EQ(address, *Address::CreateAddress(*dict_)); | |
181 } | |
182 | |
183 TEST_F(WalletAddressTest, CreateAddressWithIDMissingObjectId) { | |
184 SetUpDictionary(kAddressMissingObjectId); | |
185 ASSERT_EQ(NULL, Address::CreateAddressWithID(*dict_).get()); | |
186 } | |
187 | |
188 TEST_F(WalletAddressTest, CreateAddressMissingCountryNameCode) { | |
189 SetUpDictionary(kAddressMissingCountryNameCode); | |
190 ASSERT_EQ(NULL, Address::CreateAddress(*dict_).get()); | |
191 ASSERT_EQ(NULL, Address::CreateAddressWithID(*dict_).get()); | |
192 } | |
193 | |
194 TEST_F(WalletAddressTest, CreateAddressMissingRecipientName) { | |
195 SetUpDictionary(kAddressMissingRecipientName); | |
196 ASSERT_EQ(NULL, Address::CreateAddress(*dict_).get()); | |
197 ASSERT_EQ(NULL, Address::CreateAddressWithID(*dict_).get()); | |
198 } | |
199 | |
200 TEST_F(WalletAddressTest, CreateAddressMissingPostalCodeNumber) { | |
201 SetUpDictionary(kAddressMissingPostalCodeNumber); | |
202 ASSERT_EQ(NULL, Address::CreateAddress(*dict_).get()); | |
203 ASSERT_EQ(NULL, Address::CreateAddressWithID(*dict_).get()); | |
204 } | |
205 | |
206 TEST_F(WalletAddressTest, CreateAddressWithID) { | |
207 SetUpDictionary(kValidAddress); | |
208 Address address("country_name_code", | |
209 ASCIIToUTF16("recipient_name"), | |
210 ASCIIToUTF16("address_line_1"), | |
211 ASCIIToUTF16("address_line_2"), | |
212 ASCIIToUTF16("locality_name"), | |
213 ASCIIToUTF16("administrative_area_name"), | |
214 ASCIIToUTF16("postal_code_number"), | |
215 ASCIIToUTF16("phone_number"), | |
216 "id"); | |
217 ASSERT_EQ(address, *Address::CreateAddress(*dict_)); | |
218 ASSERT_EQ(address, *Address::CreateAddressWithID(*dict_)); | |
219 } | |
220 | |
221 TEST_F(WalletAddressTest, CreateDisplayAddressMissingCountryNameCode) { | |
222 SetUpDictionary(kClientAddressMissingCountryCode); | |
223 ASSERT_EQ(NULL, Address::CreateDisplayAddress(*dict_).get()); | |
224 } | |
225 | |
226 TEST_F(WalletAddressTest, CreateDisplayAddressMissingName) { | |
227 SetUpDictionary(kClientAddressMissingName); | |
228 ASSERT_EQ(NULL, Address::CreateDisplayAddress(*dict_).get()); | |
229 } | |
230 | |
231 TEST_F(WalletAddressTest, CreateDisplayAddressMissingPostalCode) { | |
232 SetUpDictionary(kClientAddressMissingPostalCode); | |
233 ASSERT_EQ(NULL, Address::CreateDisplayAddress(*dict_).get()); | |
234 } | |
235 | |
236 TEST_F(WalletAddressTest, CreateDisplayAddress) { | |
237 SetUpDictionary(kClientValidAddress); | |
238 Address address("country_code", | |
239 ASCIIToUTF16("name"), | |
240 ASCIIToUTF16("address1"), | |
241 ASCIIToUTF16("address2"), | |
242 ASCIIToUTF16("city"), | |
243 ASCIIToUTF16("state"), | |
244 ASCIIToUTF16("postal_code"), | |
245 ASCIIToUTF16("phone_number"), | |
246 ""); | |
247 ASSERT_EQ(address, *Address::CreateDisplayAddress(*dict_)); | |
248 } | |
249 | |
250 TEST_F(WalletAddressTest, ToDictionaryWithoutID) { | |
251 base::DictionaryValue expected; | |
252 expected.SetString("country_name_code", | |
253 "country_name_code"); | |
254 expected.SetString("recipient_name", | |
255 "recipient_name"); | |
256 expected.SetString("locality_name", | |
257 "locality_name"); | |
258 expected.SetString("administrative_area_name", | |
259 "administrative_area_name"); | |
260 expected.SetString("postal_code_number", | |
261 "postal_code_number"); | |
262 base::ListValue* address_lines = new base::ListValue(); | |
263 address_lines->AppendString("address_line_1"); | |
264 address_lines->AppendString("address_line_2"); | |
265 expected.Set("address_line", address_lines); | |
266 | |
267 Address address("country_name_code", | |
268 ASCIIToUTF16("recipient_name"), | |
269 ASCIIToUTF16("address_line_1"), | |
270 ASCIIToUTF16("address_line_2"), | |
271 ASCIIToUTF16("locality_name"), | |
272 ASCIIToUTF16("administrative_area_name"), | |
273 ASCIIToUTF16("postal_code_number"), | |
274 ASCIIToUTF16("phone_number"), | |
275 ""); | |
276 | |
277 EXPECT_TRUE(expected.Equals(address.ToDictionaryWithoutID().get())); | |
278 } | |
279 | |
280 TEST_F(WalletAddressTest, ToDictionaryWithID) { | |
281 base::DictionaryValue expected; | |
282 expected.SetString("id", "id"); | |
283 expected.SetString("phone_number", "phone_number"); | |
284 expected.SetString("postal_address.country_name_code", | |
285 "country_name_code"); | |
286 expected.SetString("postal_address.recipient_name", | |
287 "recipient_name"); | |
288 expected.SetString("postal_address.locality_name", | |
289 "locality_name"); | |
290 expected.SetString("postal_address.administrative_area_name", | |
291 "administrative_area_name"); | |
292 expected.SetString("postal_address.postal_code_number", | |
293 "postal_code_number"); | |
294 base::ListValue* address_lines = new base::ListValue(); | |
295 address_lines->AppendString("address_line_1"); | |
296 address_lines->AppendString("address_line_2"); | |
297 expected.Set("postal_address.address_line", address_lines); | |
298 | |
299 Address address("country_name_code", | |
300 ASCIIToUTF16("recipient_name"), | |
301 ASCIIToUTF16("address_line_1"), | |
302 ASCIIToUTF16("address_line_2"), | |
303 ASCIIToUTF16("locality_name"), | |
304 ASCIIToUTF16("administrative_area_name"), | |
305 ASCIIToUTF16("postal_code_number"), | |
306 ASCIIToUTF16("phone_number"), | |
307 "id"); | |
308 | |
309 EXPECT_TRUE(expected.Equals(address.ToDictionaryWithID().get())); | |
310 } | |
311 | |
312 } // namespace wallet | |
313 } // namespace autofill | |
OLD | NEW |