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

Side by Side Diff: third_party/WebKit/Source/modules/payments/PaymentRequestTest.cpp

Issue 2020883002: PaymentRequest: Introduce PaymentMethodData. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "modules/payments/PaymentRequest.h" 5 #include "modules/payments/PaymentRequest.h"
6 6
7 #include "bindings/core/v8/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/core/v8/JSONValuesForV8.h" 8 #include "bindings/core/v8/JSONValuesForV8.h"
9 #include "bindings/core/v8/ScriptState.h" 9 #include "bindings/core/v8/ScriptState.h"
10 #include "bindings/modules/v8/V8PaymentResponse.h" 10 #include "bindings/modules/v8/V8PaymentResponse.h"
11 #include "core/dom/ExceptionCode.h" 11 #include "core/dom/ExceptionCode.h"
12 #include "core/testing/DummyPageHolder.h" 12 #include "core/testing/DummyPageHolder.h"
13 #include "modules/payments/CurrencyAmount.h" 13 #include "modules/payments/CurrencyAmount.h"
14 #include "modules/payments/PaymentAddress.h" 14 #include "modules/payments/PaymentAddress.h"
15 #include "modules/payments/PaymentDetailsTestHelper.h"
16 #include "modules/payments/PaymentItem.h" 15 #include "modules/payments/PaymentItem.h"
16 #include "modules/payments/PaymentTestHelper.h"
17 #include "modules/payments/ShippingOption.h" 17 #include "modules/payments/ShippingOption.h"
18 #include "platform/heap/HeapAllocator.h" 18 #include "platform/heap/HeapAllocator.h"
19 #include "testing/gmock/include/gmock/gmock.h" 19 #include "testing/gmock/include/gmock/gmock.h"
20 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
21 #include "wtf/OwnPtr.h" 21 #include "wtf/OwnPtr.h"
22 #include <utility> 22 #include <utility>
23 23
24 namespace blink { 24 namespace blink {
25 namespace { 25 namespace {
26 26
(...skipping 15 matching lines...) Expand all
42 m_page->document().setSecurityOrigin(SecurityOrigin::create(KURL(KURL(), securityOrigin))); 42 m_page->document().setSecurityOrigin(SecurityOrigin::create(KURL(KURL(), securityOrigin)));
43 } 43 }
44 44
45 private: 45 private:
46 OwnPtr<DummyPageHolder> m_page; 46 OwnPtr<DummyPageHolder> m_page;
47 TrackExceptionState m_exceptionState; 47 TrackExceptionState m_exceptionState;
48 }; 48 };
49 49
50 TEST_F(PaymentRequestTest, NoExceptionWithValidData) 50 TEST_F(PaymentRequestTest, NoExceptionWithValidData)
51 { 51 {
52 PaymentRequest::create(getScriptState(), Vector<String>(1, "foo"), buildPaym entDetailsForTest(), getExceptionState()); 52 PaymentRequest::create(getScriptState(), buildPaymentMethodDataForTest(), bu ildPaymentDetailsForTest(), getExceptionState());
53 53
54 EXPECT_FALSE(getExceptionState().hadException()); 54 EXPECT_FALSE(getExceptionState().hadException());
55 } 55 }
56 56
57 TEST_F(PaymentRequestTest, SecureContextRequired) 57 TEST_F(PaymentRequestTest, SecureContextRequired)
58 { 58 {
59 setSecurityOrigin("http://www.example.com"); 59 setSecurityOrigin("http://www.example.com");
60 60
61 PaymentRequest::create(getScriptState(), Vector<String>(1, "foo"), buildPaym entDetailsForTest(), getExceptionState()); 61 PaymentRequest::create(getScriptState(), buildPaymentMethodDataForTest(), bu ildPaymentDetailsForTest(), getExceptionState());
62 62
63 EXPECT_TRUE(getExceptionState().hadException()); 63 EXPECT_TRUE(getExceptionState().hadException());
64 EXPECT_EQ(SecurityError, getExceptionState().code()); 64 EXPECT_EQ(SecurityError, getExceptionState().code());
65 } 65 }
66 66
67 TEST_F(PaymentRequestTest, SupportedMethodListRequired) 67 TEST_F(PaymentRequestTest, SupportedMethodListRequired)
68 { 68 {
69 PaymentRequest::create(getScriptState(), Vector<String>(), buildPaymentDetai lsForTest(), getExceptionState()); 69 PaymentRequest::create(getScriptState(), HeapVector<PaymentMethodData>(), bu ildPaymentDetailsForTest(), getExceptionState());
70 70
71 EXPECT_TRUE(getExceptionState().hadException()); 71 EXPECT_TRUE(getExceptionState().hadException());
72 EXPECT_EQ(V8TypeError, getExceptionState().code()); 72 EXPECT_EQ(V8TypeError, getExceptionState().code());
73 } 73 }
74 74
75 TEST_F(PaymentRequestTest, TotalRequired) 75 TEST_F(PaymentRequestTest, TotalRequired)
76 { 76 {
77 PaymentRequest::create(getScriptState(), Vector<String>(1, "foo"), PaymentDe tails(), getExceptionState()); 77 PaymentRequest::create(getScriptState(), buildPaymentMethodDataForTest(), Pa ymentDetails(), getExceptionState());
78 78
79 EXPECT_TRUE(getExceptionState().hadException()); 79 EXPECT_TRUE(getExceptionState().hadException());
80 EXPECT_EQ(V8TypeError, getExceptionState().code()); 80 EXPECT_EQ(V8TypeError, getExceptionState().code());
81 } 81 }
82 82
83 TEST_F(PaymentRequestTest, NullShippingOptionWhenNoOptionsAvailable) 83 TEST_F(PaymentRequestTest, NullShippingOptionWhenNoOptionsAvailable)
84 { 84 {
85 PaymentDetails details; 85 PaymentDetails details;
86 details.setTotal(buildPaymentItemForTest()); 86 details.setTotal(buildPaymentItemForTest());
87 PaymentOptions options; 87 PaymentOptions options;
88 options.setRequestShipping(true); 88 options.setRequestShipping(true);
89 89
90 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), details, options, getExceptionState()); 90 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), details, options, getExceptionState());
91 91
92 EXPECT_TRUE(request->shippingOption().isNull()); 92 EXPECT_TRUE(request->shippingOption().isNull());
93 } 93 }
94 94
95 TEST_F(PaymentRequestTest, NullShippingOptionWhenMultipleOptionsAvailable) 95 TEST_F(PaymentRequestTest, NullShippingOptionWhenMultipleOptionsAvailable)
96 { 96 {
97 PaymentDetails details; 97 PaymentDetails details;
98 details.setTotal(buildPaymentItemForTest()); 98 details.setTotal(buildPaymentItemForTest());
99 details.setShippingOptions(HeapVector<ShippingOption>(2, buildShippingOption ForTest())); 99 details.setShippingOptions(HeapVector<ShippingOption>(2, buildShippingOption ForTest()));
100 PaymentOptions options; 100 PaymentOptions options;
101 options.setRequestShipping(true); 101 options.setRequestShipping(true);
102 102
103 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), details, options, getExceptionState()); 103 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), details, options, getExceptionState());
104 104
105 EXPECT_TRUE(request->shippingOption().isNull()); 105 EXPECT_TRUE(request->shippingOption().isNull());
106 } 106 }
107 107
108 TEST_F(PaymentRequestTest, DontSelectSingleAvailableShippingOptionByDefault) 108 TEST_F(PaymentRequestTest, DontSelectSingleAvailableShippingOptionByDefault)
109 { 109 {
110 PaymentDetails details; 110 PaymentDetails details;
111 details.setTotal(buildPaymentItemForTest()); 111 details.setTotal(buildPaymentItemForTest());
112 details.setShippingOptions(HeapVector<ShippingOption>(1, buildShippingOption ForTest(PaymentTestDataId, PaymentTestOverwriteValue, "standard"))); 112 details.setShippingOptions(HeapVector<ShippingOption>(1, buildShippingOption ForTest(PaymentTestDataId, PaymentTestOverwriteValue, "standard")));
113 113
114 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), details, getExceptionState()); 114 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), details, getExceptionState());
115 115
116 EXPECT_TRUE(request->shippingOption().isNull()); 116 EXPECT_TRUE(request->shippingOption().isNull());
117 } 117 }
118 118
119 TEST_F(PaymentRequestTest, DontSelectSingleAvailableShippingOptionWhenShippingNo tRequested) 119 TEST_F(PaymentRequestTest, DontSelectSingleAvailableShippingOptionWhenShippingNo tRequested)
120 { 120 {
121 PaymentDetails details; 121 PaymentDetails details;
122 details.setTotal(buildPaymentItemForTest()); 122 details.setTotal(buildPaymentItemForTest());
123 details.setShippingOptions(HeapVector<ShippingOption>(1, buildShippingOption ForTest())); 123 details.setShippingOptions(HeapVector<ShippingOption>(1, buildShippingOption ForTest()));
124 PaymentOptions options; 124 PaymentOptions options;
125 options.setRequestShipping(false); 125 options.setRequestShipping(false);
126 126
127 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), details, options, getExceptionState()); 127 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), details, options, getExceptionState());
128 128
129 EXPECT_TRUE(request->shippingOption().isNull()); 129 EXPECT_TRUE(request->shippingOption().isNull());
130 } 130 }
131 131
132 TEST_F(PaymentRequestTest, DontSelectSingleUnselectedShippingOptionWhenShippingR equested) 132 TEST_F(PaymentRequestTest, DontSelectSingleUnselectedShippingOptionWhenShippingR equested)
133 { 133 {
134 PaymentDetails details; 134 PaymentDetails details;
135 details.setTotal(buildPaymentItemForTest()); 135 details.setTotal(buildPaymentItemForTest());
136 details.setShippingOptions(HeapVector<ShippingOption>(1, buildShippingOption ForTest())); 136 details.setShippingOptions(HeapVector<ShippingOption>(1, buildShippingOption ForTest()));
137 PaymentOptions options; 137 PaymentOptions options;
138 options.setRequestShipping(true); 138 options.setRequestShipping(true);
139 139
140 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), details, options, getExceptionState()); 140 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), details, options, getExceptionState());
141 141
142 EXPECT_TRUE(request->shippingOption().isNull()); 142 EXPECT_TRUE(request->shippingOption().isNull());
143 } 143 }
144 144
145 TEST_F(PaymentRequestTest, SelectSingleSelectedShippingOptionWhenShippingRequest ed) 145 TEST_F(PaymentRequestTest, SelectSingleSelectedShippingOptionWhenShippingRequest ed)
146 { 146 {
147 PaymentDetails details; 147 PaymentDetails details;
148 details.setTotal(buildPaymentItemForTest()); 148 details.setTotal(buildPaymentItemForTest());
149 HeapVector<ShippingOption> shippingOptions(1, buildShippingOptionForTest(Pay mentTestDataId, PaymentTestOverwriteValue, "standard")); 149 HeapVector<ShippingOption> shippingOptions(1, buildShippingOptionForTest(Pay mentTestDataId, PaymentTestOverwriteValue, "standard"));
150 shippingOptions[0].setSelected(true); 150 shippingOptions[0].setSelected(true);
151 details.setShippingOptions(shippingOptions); 151 details.setShippingOptions(shippingOptions);
152 PaymentOptions options; 152 PaymentOptions options;
153 options.setRequestShipping(true); 153 options.setRequestShipping(true);
154 154
155 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), details, options, getExceptionState()); 155 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), details, options, getExceptionState());
156 156
157 EXPECT_EQ("standard", request->shippingOption()); 157 EXPECT_EQ("standard", request->shippingOption());
158 } 158 }
159 159
160 TEST_F(PaymentRequestTest, SelectOnlySelectedShippingOptionWhenShippingRequested ) 160 TEST_F(PaymentRequestTest, SelectOnlySelectedShippingOptionWhenShippingRequested )
161 { 161 {
162 PaymentDetails details; 162 PaymentDetails details;
163 details.setTotal(buildPaymentItemForTest()); 163 details.setTotal(buildPaymentItemForTest());
164 HeapVector<ShippingOption> shippingOptions(2); 164 HeapVector<ShippingOption> shippingOptions(2);
165 shippingOptions[0] = buildShippingOptionForTest(PaymentTestDataId, PaymentTe stOverwriteValue, "standard"); 165 shippingOptions[0] = buildShippingOptionForTest(PaymentTestDataId, PaymentTe stOverwriteValue, "standard");
166 shippingOptions[0].setSelected(true); 166 shippingOptions[0].setSelected(true);
167 shippingOptions[1] = buildShippingOptionForTest(PaymentTestDataId, PaymentTe stOverwriteValue, "express"); 167 shippingOptions[1] = buildShippingOptionForTest(PaymentTestDataId, PaymentTe stOverwriteValue, "express");
168 details.setShippingOptions(shippingOptions); 168 details.setShippingOptions(shippingOptions);
169 PaymentOptions options; 169 PaymentOptions options;
170 options.setRequestShipping(true); 170 options.setRequestShipping(true);
171 171
172 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), details, options, getExceptionState()); 172 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), details, options, getExceptionState());
173 173
174 EXPECT_EQ("standard", request->shippingOption()); 174 EXPECT_EQ("standard", request->shippingOption());
175 } 175 }
176 176
177 TEST_F(PaymentRequestTest, SelectLastSelectedShippingOptionWhenShippingRequested ) 177 TEST_F(PaymentRequestTest, SelectLastSelectedShippingOptionWhenShippingRequested )
178 { 178 {
179 PaymentDetails details; 179 PaymentDetails details;
180 details.setTotal(buildPaymentItemForTest()); 180 details.setTotal(buildPaymentItemForTest());
181 HeapVector<ShippingOption> shippingOptions(2); 181 HeapVector<ShippingOption> shippingOptions(2);
182 shippingOptions[0] = buildShippingOptionForTest(PaymentTestDataId, PaymentTe stOverwriteValue, "standard"); 182 shippingOptions[0] = buildShippingOptionForTest(PaymentTestDataId, PaymentTe stOverwriteValue, "standard");
183 shippingOptions[0].setSelected(true); 183 shippingOptions[0].setSelected(true);
184 shippingOptions[1] = buildShippingOptionForTest(PaymentTestDataId, PaymentTe stOverwriteValue, "express"); 184 shippingOptions[1] = buildShippingOptionForTest(PaymentTestDataId, PaymentTe stOverwriteValue, "express");
185 shippingOptions[1].setSelected(true); 185 shippingOptions[1].setSelected(true);
186 details.setShippingOptions(shippingOptions); 186 details.setShippingOptions(shippingOptions);
187 PaymentOptions options; 187 PaymentOptions options;
188 options.setRequestShipping(true); 188 options.setRequestShipping(true);
189 189
190 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), details, options, getExceptionState()); 190 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), details, options, getExceptionState());
191 191
192 EXPECT_EQ("express", request->shippingOption()); 192 EXPECT_EQ("express", request->shippingOption());
193 } 193 }
194 194
195 TEST_F(PaymentRequestTest, AbortWithoutShowShouldThrow) 195 TEST_F(PaymentRequestTest, AbortWithoutShowShouldThrow)
196 { 196 {
197 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 197 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
198 EXPECT_FALSE(getExceptionState().hadException()); 198 EXPECT_FALSE(getExceptionState().hadException());
199 199
200 request->abort(getExceptionState()); 200 request->abort(getExceptionState());
201 EXPECT_TRUE(getExceptionState().hadException()); 201 EXPECT_TRUE(getExceptionState().hadException());
202 } 202 }
203 203
204 class MockFunction : public ScriptFunction { 204 class MockFunction : public ScriptFunction {
205 public: 205 public:
206 static v8::Local<v8::Function> noExpectations(ScriptState* scriptState) 206 static v8::Local<v8::Function> noExpectations(ScriptState* scriptState)
207 { 207 {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 { 255 {
256 DCHECK(m_value); 256 DCHECK(m_value);
257 } 257 }
258 258
259 ScriptValue* m_value; 259 ScriptValue* m_value;
260 }; 260 };
261 261
262 TEST_F(PaymentRequestTest, CanAbortAfterShow) 262 TEST_F(PaymentRequestTest, CanAbortAfterShow)
263 { 263 {
264 ScriptState::Scope scope(getScriptState()); 264 ScriptState::Scope scope(getScriptState());
265 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 265 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
266 EXPECT_FALSE(getExceptionState().hadException()); 266 EXPECT_FALSE(getExceptionState().hadException());
267 267
268 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::noExpectations(getScriptState())); 268 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::noExpectations(getScriptState()));
269 request->abort(getExceptionState()); 269 request->abort(getExceptionState());
270 270
271 EXPECT_FALSE(getExceptionState().hadException()); 271 EXPECT_FALSE(getExceptionState().hadException());
272 } 272 }
273 273
274 TEST_F(PaymentRequestTest, RejectShowPromiseOnInvalidShippingAddress) 274 TEST_F(PaymentRequestTest, RejectShowPromiseOnInvalidShippingAddress)
275 { 275 {
276 ScriptState::Scope scope(getScriptState()); 276 ScriptState::Scope scope(getScriptState());
277 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 277 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
278 EXPECT_FALSE(getExceptionState().hadException()); 278 EXPECT_FALSE(getExceptionState().hadException());
279 279
280 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState())); 280 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState()));
281 281
282 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnShippingAddress Change(mojom::blink::PaymentAddress::New()); 282 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnShippingAddress Change(mojom::blink::PaymentAddress::New());
283 } 283 }
284 284
285 TEST_F(PaymentRequestTest, RejectShowPromiseWithRequestShippingTrueAndEmptyShipp ingAddressInResponse) 285 TEST_F(PaymentRequestTest, RejectShowPromiseWithRequestShippingTrueAndEmptyShipp ingAddressInResponse)
286 { 286 {
287 ScriptState::Scope scope(getScriptState()); 287 ScriptState::Scope scope(getScriptState());
288 PaymentOptions options; 288 PaymentOptions options;
289 options.setRequestShipping(true); 289 options.setRequestShipping(true);
290 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), options, getExceptionState()); 290 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), options, getExceptionState ());
291 EXPECT_FALSE(getExceptionState().hadException()); 291 EXPECT_FALSE(getExceptionState().hadException());
292 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew(); 292 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew();
293 293
294 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState())); 294 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState()));
295 295
296 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); 296 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response));
297 } 297 }
298 298
299 TEST_F(PaymentRequestTest, RejectShowPromiseWithRequestShippingTrueAndInvalidShi ppingAddressInResponse) 299 TEST_F(PaymentRequestTest, RejectShowPromiseWithRequestShippingTrueAndInvalidShi ppingAddressInResponse)
300 { 300 {
301 ScriptState::Scope scope(getScriptState()); 301 ScriptState::Scope scope(getScriptState());
302 PaymentOptions options; 302 PaymentOptions options;
303 options.setRequestShipping(true); 303 options.setRequestShipping(true);
304 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), options, getExceptionState()); 304 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), options, getExceptionState ());
305 EXPECT_FALSE(getExceptionState().hadException()); 305 EXPECT_FALSE(getExceptionState().hadException());
306 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew(); 306 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew();
307 response->shipping_address = mojom::blink::PaymentAddress::New(); 307 response->shipping_address = mojom::blink::PaymentAddress::New();
308 308
309 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState())); 309 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState()));
310 310
311 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); 311 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response));
312 } 312 }
313 313
314 TEST_F(PaymentRequestTest, RejectShowPromiseWithRequestShippingFalseAndShippingA ddressExistsInResponse) 314 TEST_F(PaymentRequestTest, RejectShowPromiseWithRequestShippingFalseAndShippingA ddressExistsInResponse)
315 { 315 {
316 ScriptState::Scope scope(getScriptState()); 316 ScriptState::Scope scope(getScriptState());
317 PaymentOptions options; 317 PaymentOptions options;
318 options.setRequestShipping(false); 318 options.setRequestShipping(false);
319 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), options, getExceptionState()); 319 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), options, getExceptionState ());
320 EXPECT_FALSE(getExceptionState().hadException()); 320 EXPECT_FALSE(getExceptionState().hadException());
321 mojom::blink::PaymentAddressPtr shippingAddress = mojom::blink::PaymentAddre ss::New(); 321 mojom::blink::PaymentAddressPtr shippingAddress = mojom::blink::PaymentAddre ss::New();
322 shippingAddress->country = "US"; 322 shippingAddress->country = "US";
323 shippingAddress->language_code = "en"; 323 shippingAddress->language_code = "en";
324 shippingAddress->script_code = "Latn"; 324 shippingAddress->script_code = "Latn";
325 325
326 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState())); 326 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState()));
327 327
328 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnShippingAddress Change(std::move(shippingAddress)); 328 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnShippingAddress Change(std::move(shippingAddress));
329 } 329 }
330 330
331 TEST_F(PaymentRequestTest, ResolveShowPromiseWithRequestShippingTrueAndValidShip pingAddressInResponse) 331 TEST_F(PaymentRequestTest, ResolveShowPromiseWithRequestShippingTrueAndValidShip pingAddressInResponse)
332 { 332 {
333 ScriptState::Scope scope(getScriptState()); 333 ScriptState::Scope scope(getScriptState());
334 PaymentOptions options; 334 PaymentOptions options;
335 options.setRequestShipping(true); 335 options.setRequestShipping(true);
336 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), options, getExceptionState()); 336 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), options, getExceptionState ());
337 EXPECT_FALSE(getExceptionState().hadException()); 337 EXPECT_FALSE(getExceptionState().hadException());
338 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew(); 338 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew();
339 response->shipping_address = mojom::blink::PaymentAddress::New(); 339 response->shipping_address = mojom::blink::PaymentAddress::New();
340 response->shipping_address->country = "US"; 340 response->shipping_address->country = "US";
341 response->shipping_address->language_code = "en"; 341 response->shipping_address->language_code = "en";
342 response->shipping_address->script_code = "Latn"; 342 response->shipping_address->script_code = "Latn";
343 343
344 ScriptValue outValue; 344 ScriptValue outValue;
345 request->show(getScriptState()).then(PaymentResponseFunction::create(getScri ptState(), &outValue), MockFunction::expectNoCall(getScriptState())); 345 request->show(getScriptState()).then(PaymentResponseFunction::create(getScri ptState(), &outValue), MockFunction::expectNoCall(getScriptState()));
346 346
347 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); 347 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response));
348 v8::MicrotasksScope::PerformCheckpoint(getScriptState()->isolate()); 348 v8::MicrotasksScope::PerformCheckpoint(getScriptState()->isolate());
349 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(getScriptState( )->isolate(), outValue.v8Value()); 349 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(getScriptState( )->isolate(), outValue.v8Value());
350 350
351 EXPECT_EQ("US", pr->shippingAddress()->country()); 351 EXPECT_EQ("US", pr->shippingAddress()->country());
352 EXPECT_EQ("en-Latn", pr->shippingAddress()->languageCode()); 352 EXPECT_EQ("en-Latn", pr->shippingAddress()->languageCode());
353 } 353 }
354 354
355 TEST_F(PaymentRequestTest, ResolveShowPromiseWithRequestShippingFalseAndEmptyShi ppingAddressInResponse) 355 TEST_F(PaymentRequestTest, ResolveShowPromiseWithRequestShippingFalseAndEmptyShi ppingAddressInResponse)
356 { 356 {
357 ScriptState::Scope scope(getScriptState()); 357 ScriptState::Scope scope(getScriptState());
358 PaymentOptions options; 358 PaymentOptions options;
359 options.setRequestShipping(false); 359 options.setRequestShipping(false);
360 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), options, getExceptionState()); 360 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), options, getExceptionState ());
361 EXPECT_FALSE(getExceptionState().hadException()); 361 EXPECT_FALSE(getExceptionState().hadException());
362 362
363 ScriptValue outValue; 363 ScriptValue outValue;
364 request->show(getScriptState()).then(PaymentResponseFunction::create(getScri ptState(), &outValue), MockFunction::expectNoCall(getScriptState())); 364 request->show(getScriptState()).then(PaymentResponseFunction::create(getScri ptState(), &outValue), MockFunction::expectNoCall(getScriptState()));
365 365
366 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (mojom::blink::PaymentResponse::New()); 366 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (mojom::blink::PaymentResponse::New());
367 v8::MicrotasksScope::PerformCheckpoint(getScriptState()->isolate()); 367 v8::MicrotasksScope::PerformCheckpoint(getScriptState()->isolate());
368 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(getScriptState( )->isolate(), outValue.v8Value()); 368 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(getScriptState( )->isolate(), outValue.v8Value());
369 369
370 EXPECT_EQ(nullptr, pr->shippingAddress()); 370 EXPECT_EQ(nullptr, pr->shippingAddress());
371 } 371 }
372 372
373 TEST_F(PaymentRequestTest, OnShippingOptionChange) 373 TEST_F(PaymentRequestTest, OnShippingOptionChange)
374 { 374 {
375 ScriptState::Scope scope(getScriptState()); 375 ScriptState::Scope scope(getScriptState());
376 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 376 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
377 EXPECT_FALSE(getExceptionState().hadException()); 377 EXPECT_FALSE(getExceptionState().hadException());
378 378
379 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectNoCall(getScriptState())); 379 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectNoCall(getScriptState()));
380 380
381 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnShippingOptionC hange("standardShipping"); 381 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnShippingOptionC hange("standardShipping");
382 } 382 }
383 383
384 TEST_F(PaymentRequestTest, CannotCallShowTwice) 384 TEST_F(PaymentRequestTest, CannotCallShowTwice)
385 { 385 {
386 ScriptState::Scope scope(getScriptState()); 386 ScriptState::Scope scope(getScriptState());
387 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 387 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
388 EXPECT_FALSE(getExceptionState().hadException()); 388 EXPECT_FALSE(getExceptionState().hadException());
389 request->show(getScriptState()); 389 request->show(getScriptState());
390 390
391 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState())); 391 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState()));
392 } 392 }
393 393
394 TEST_F(PaymentRequestTest, CannotCallCompleteTwice) 394 TEST_F(PaymentRequestTest, CannotCallCompleteTwice)
395 { 395 {
396 ScriptState::Scope scope(getScriptState()); 396 ScriptState::Scope scope(getScriptState());
397 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 397 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
398 EXPECT_FALSE(getExceptionState().hadException()); 398 EXPECT_FALSE(getExceptionState().hadException());
399 request->show(getScriptState()); 399 request->show(getScriptState());
400 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (mojom::blink::PaymentResponse::New()); 400 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (mojom::blink::PaymentResponse::New());
401 request->complete(getScriptState(), false); 401 request->complete(getScriptState(), false);
402 402
403 request->complete(getScriptState(), true).then(MockFunction::expectNoCall(ge tScriptState()), MockFunction::expectCall(getScriptState())); 403 request->complete(getScriptState(), true).then(MockFunction::expectNoCall(ge tScriptState()), MockFunction::expectCall(getScriptState()));
404 } 404 }
405 405
406 TEST_F(PaymentRequestTest, RejectShowPromiseOnError) 406 TEST_F(PaymentRequestTest, RejectShowPromiseOnError)
407 { 407 {
408 ScriptState::Scope scope(getScriptState()); 408 ScriptState::Scope scope(getScriptState());
409 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 409 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
410 EXPECT_FALSE(getExceptionState().hadException()); 410 EXPECT_FALSE(getExceptionState().hadException());
411 411
412 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState())); 412 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState()));
413 413
414 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnError(); 414 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnError();
415 } 415 }
416 416
417 TEST_F(PaymentRequestTest, RejectCompletePromiseOnError) 417 TEST_F(PaymentRequestTest, RejectCompletePromiseOnError)
418 { 418 {
419 ScriptState::Scope scope(getScriptState()); 419 ScriptState::Scope scope(getScriptState());
420 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 420 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
421 EXPECT_FALSE(getExceptionState().hadException()); 421 EXPECT_FALSE(getExceptionState().hadException());
422 request->show(getScriptState()); 422 request->show(getScriptState());
423 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (mojom::blink::PaymentResponse::New()); 423 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (mojom::blink::PaymentResponse::New());
424 424
425 request->complete(getScriptState(), true).then(MockFunction::expectNoCall(ge tScriptState()), MockFunction::expectCall(getScriptState())); 425 request->complete(getScriptState(), true).then(MockFunction::expectNoCall(ge tScriptState()), MockFunction::expectCall(getScriptState()));
426 426
427 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnError(); 427 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnError();
428 } 428 }
429 429
430 TEST_F(PaymentRequestTest, ResolvePromiseOnComplete) 430 TEST_F(PaymentRequestTest, ResolvePromiseOnComplete)
431 { 431 {
432 ScriptState::Scope scope(getScriptState()); 432 ScriptState::Scope scope(getScriptState());
433 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 433 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
434 EXPECT_FALSE(getExceptionState().hadException()); 434 EXPECT_FALSE(getExceptionState().hadException());
435 request->show(getScriptState()); 435 request->show(getScriptState());
436 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (mojom::blink::PaymentResponse::New()); 436 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (mojom::blink::PaymentResponse::New());
437 437
438 request->complete(getScriptState(), true).then(MockFunction::expectCall(getS criptState()), MockFunction::expectNoCall(getScriptState())); 438 request->complete(getScriptState(), true).then(MockFunction::expectCall(getS criptState()), MockFunction::expectNoCall(getScriptState()));
439 439
440 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnComplete(); 440 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnComplete();
441 } 441 }
442 442
443 TEST_F(PaymentRequestTest, RejectShowPromiseOnUpdateDetailsFailure) 443 TEST_F(PaymentRequestTest, RejectShowPromiseOnUpdateDetailsFailure)
444 { 444 {
445 ScriptState::Scope scope(getScriptState()); 445 ScriptState::Scope scope(getScriptState());
446 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 446 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
447 EXPECT_FALSE(getExceptionState().hadException()); 447 EXPECT_FALSE(getExceptionState().hadException());
448 448
449 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState())); 449 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState()));
450 450
451 request->onUpdatePaymentDetailsFailure(ScriptValue::from(getScriptState(), " oops")); 451 request->onUpdatePaymentDetailsFailure(ScriptValue::from(getScriptState(), " oops"));
452 } 452 }
453 453
454 TEST_F(PaymentRequestTest, RejectCompletePromiseOnUpdateDetailsFailure) 454 TEST_F(PaymentRequestTest, RejectCompletePromiseOnUpdateDetailsFailure)
455 { 455 {
456 ScriptState::Scope scope(getScriptState()); 456 ScriptState::Scope scope(getScriptState());
457 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 457 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
458 EXPECT_FALSE(getExceptionState().hadException()); 458 EXPECT_FALSE(getExceptionState().hadException());
459 request->show(getScriptState()).then(MockFunction::expectCall(getScriptState ()), MockFunction::expectNoCall(getScriptState())); 459 request->show(getScriptState()).then(MockFunction::expectCall(getScriptState ()), MockFunction::expectNoCall(getScriptState()));
460 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (mojom::blink::PaymentResponse::New()); 460 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (mojom::blink::PaymentResponse::New());
461 461
462 request->complete(getScriptState(), true).then(MockFunction::expectNoCall(ge tScriptState()), MockFunction::expectCall(getScriptState())); 462 request->complete(getScriptState(), true).then(MockFunction::expectNoCall(ge tScriptState()), MockFunction::expectCall(getScriptState()));
463 463
464 request->onUpdatePaymentDetailsFailure(ScriptValue::from(getScriptState(), " oops")); 464 request->onUpdatePaymentDetailsFailure(ScriptValue::from(getScriptState(), " oops"));
465 } 465 }
466 466
467 TEST_F(PaymentRequestTest, IgnoreUpdatePaymentDetailsAfterShowPromiseResolved) 467 TEST_F(PaymentRequestTest, IgnoreUpdatePaymentDetailsAfterShowPromiseResolved)
468 { 468 {
469 ScriptState::Scope scope(getScriptState()); 469 ScriptState::Scope scope(getScriptState());
470 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 470 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
471 EXPECT_FALSE(getExceptionState().hadException()); 471 EXPECT_FALSE(getExceptionState().hadException());
472 request->show(getScriptState()).then(MockFunction::expectCall(getScriptState ()), MockFunction::expectNoCall(getScriptState())); 472 request->show(getScriptState()).then(MockFunction::expectCall(getScriptState ()), MockFunction::expectNoCall(getScriptState()));
473 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (mojom::blink::PaymentResponse::New()); 473 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (mojom::blink::PaymentResponse::New());
474 474
475 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), "foo")); 475 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), "foo"));
476 } 476 }
477 477
478 TEST_F(PaymentRequestTest, RejectShowPromiseOnNonPaymentDetailsUpdate) 478 TEST_F(PaymentRequestTest, RejectShowPromiseOnNonPaymentDetailsUpdate)
479 { 479 {
480 ScriptState::Scope scope(getScriptState()); 480 ScriptState::Scope scope(getScriptState());
481 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 481 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
482 EXPECT_FALSE(getExceptionState().hadException()); 482 EXPECT_FALSE(getExceptionState().hadException());
483 483
484 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState())); 484 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState()));
485 485
486 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), "NotPaym entDetails")); 486 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), "NotPaym entDetails"));
487 } 487 }
488 488
489 TEST_F(PaymentRequestTest, RejectShowPromiseOnInvalidPaymentDetailsUpdate) 489 TEST_F(PaymentRequestTest, RejectShowPromiseOnInvalidPaymentDetailsUpdate)
490 { 490 {
491 ScriptState::Scope scope(getScriptState()); 491 ScriptState::Scope scope(getScriptState());
492 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), getExceptionState()); 492 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), getExceptionState());
493 EXPECT_FALSE(getExceptionState().hadException()); 493 EXPECT_FALSE(getExceptionState().hadException());
494 494
495 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState())); 495 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectCall(getScriptState()));
496 496
497 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), fromJSON String(getScriptState(), "{}", getExceptionState()))); 497 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), fromJSON String(getScriptState(), "{}", getExceptionState())));
498 EXPECT_FALSE(getExceptionState().hadException()); 498 EXPECT_FALSE(getExceptionState().hadException());
499 } 499 }
500 500
501 TEST_F(PaymentRequestTest, ClearShippingOptionOnPaymentDetailsUpdateWithoutShipp ingOptions) 501 TEST_F(PaymentRequestTest, ClearShippingOptionOnPaymentDetailsUpdateWithoutShipp ingOptions)
502 { 502 {
503 ScriptState::Scope scope(getScriptState()); 503 ScriptState::Scope scope(getScriptState());
504 PaymentDetails details; 504 PaymentDetails details;
505 details.setTotal(buildPaymentItemForTest()); 505 details.setTotal(buildPaymentItemForTest());
506 PaymentOptions options; 506 PaymentOptions options;
507 options.setRequestShipping(true); 507 options.setRequestShipping(true);
508 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), details, options, getExceptionState()); 508 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), details, options, getExceptionState());
509 EXPECT_FALSE(getExceptionState().hadException()); 509 EXPECT_FALSE(getExceptionState().hadException());
510 EXPECT_TRUE(request->shippingOption().isNull()); 510 EXPECT_TRUE(request->shippingOption().isNull());
511 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectNoCall(getScriptState())); 511 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectNoCall(getScriptState()));
512 String detailWithShippingOptions = "{\"total\": {\"label\": \"Total\", \"amo unt\": {\"currency\": \"USD\", \"value\": \"5.00\"}}," 512 String detailWithShippingOptions = "{\"total\": {\"label\": \"Total\", \"amo unt\": {\"currency\": \"USD\", \"value\": \"5.00\"}},"
513 "\"shippingOptions\": [{\"id\": \"standardShippingOption\", \"label\": \ "Standard shipping\", \"amount\": {\"currency\": \"USD\", \"value\": \"5.00\"}, \"selected\": true}]}"; 513 "\"shippingOptions\": [{\"id\": \"standardShippingOption\", \"label\": \ "Standard shipping\", \"amount\": {\"currency\": \"USD\", \"value\": \"5.00\"}, \"selected\": true}]}";
514 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), fromJSON String(getScriptState(), detailWithShippingOptions, getExceptionState()))); 514 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), fromJSON String(getScriptState(), detailWithShippingOptions, getExceptionState())));
515 EXPECT_FALSE(getExceptionState().hadException()); 515 EXPECT_FALSE(getExceptionState().hadException());
516 EXPECT_EQ("standardShippingOption", request->shippingOption()); 516 EXPECT_EQ("standardShippingOption", request->shippingOption());
517 String detailWithoutShippingOptions = "{\"total\": {\"label\": \"Total\", \" amount\": {\"currency\": \"USD\", \"value\": \"5.00\"}}}"; 517 String detailWithoutShippingOptions = "{\"total\": {\"label\": \"Total\", \" amount\": {\"currency\": \"USD\", \"value\": \"5.00\"}}}";
518 518
519 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), fromJSON String(getScriptState(), detailWithoutShippingOptions, getExceptionState()))); 519 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), fromJSON String(getScriptState(), detailWithoutShippingOptions, getExceptionState())));
520 520
521 EXPECT_FALSE(getExceptionState().hadException()); 521 EXPECT_FALSE(getExceptionState().hadException());
522 EXPECT_TRUE(request->shippingOption().isNull()); 522 EXPECT_TRUE(request->shippingOption().isNull());
523 } 523 }
524 524
525 TEST_F(PaymentRequestTest, ClearShippingOptionOnPaymentDetailsUpdateWithMultiple UnselectedShippingOptions) 525 TEST_F(PaymentRequestTest, ClearShippingOptionOnPaymentDetailsUpdateWithMultiple UnselectedShippingOptions)
526 { 526 {
527 ScriptState::Scope scope(getScriptState()); 527 ScriptState::Scope scope(getScriptState());
528 PaymentOptions options; 528 PaymentOptions options;
529 options.setRequestShipping(true); 529 options.setRequestShipping(true);
530 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), options, getExceptionState()); 530 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), options, getExceptionState ());
531 EXPECT_FALSE(getExceptionState().hadException()); 531 EXPECT_FALSE(getExceptionState().hadException());
532 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectNoCall(getScriptState())); 532 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectNoCall(getScriptState()));
533 String detail = "{\"total\": {\"label\": \"Total\", \"amount\": {\"currency\ ": \"USD\", \"value\": \"5.00\"}}," 533 String detail = "{\"total\": {\"label\": \"Total\", \"amount\": {\"currency\ ": \"USD\", \"value\": \"5.00\"}},"
534 "\"shippingOptions\": [{\"id\": \"slow\", \"label\": \"Slow\", \"amount\ ": {\"currency\": \"USD\", \"value\": \"5.00\"}}," 534 "\"shippingOptions\": [{\"id\": \"slow\", \"label\": \"Slow\", \"amount\ ": {\"currency\": \"USD\", \"value\": \"5.00\"}},"
535 "{\"id\": \"fast\", \"label\": \"Fast\", \"amount\": {\"currency\": \"US D\", \"value\": \"50.00\"}}]}"; 535 "{\"id\": \"fast\", \"label\": \"Fast\", \"amount\": {\"currency\": \"US D\", \"value\": \"50.00\"}}]}";
536 536
537 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), fromJSON String(getScriptState(), detail, getExceptionState()))); 537 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), fromJSON String(getScriptState(), detail, getExceptionState())));
538 EXPECT_FALSE(getExceptionState().hadException()); 538 EXPECT_FALSE(getExceptionState().hadException());
539 539
540 EXPECT_TRUE(request->shippingOption().isNull()); 540 EXPECT_TRUE(request->shippingOption().isNull());
541 } 541 }
542 542
543 TEST_F(PaymentRequestTest, UseTheSelectedShippingOptionFromPaymentDetailsUpdate) 543 TEST_F(PaymentRequestTest, UseTheSelectedShippingOptionFromPaymentDetailsUpdate)
544 { 544 {
545 ScriptState::Scope scope(getScriptState()); 545 ScriptState::Scope scope(getScriptState());
546 PaymentOptions options; 546 PaymentOptions options;
547 options.setRequestShipping(true); 547 options.setRequestShipping(true);
548 PaymentRequest* request = PaymentRequest::create(getScriptState(), Vector<St ring>(1, "foo"), buildPaymentDetailsForTest(), options, getExceptionState()); 548 PaymentRequest* request = PaymentRequest::create(getScriptState(), buildPaym entMethodDataForTest(), buildPaymentDetailsForTest(), options, getExceptionState ());
549 EXPECT_FALSE(getExceptionState().hadException()); 549 EXPECT_FALSE(getExceptionState().hadException());
550 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectNoCall(getScriptState())); 550 request->show(getScriptState()).then(MockFunction::expectNoCall(getScriptSta te()), MockFunction::expectNoCall(getScriptState()));
551 String detail = "{\"total\": {\"label\": \"Total\", \"amount\": {\"currency\ ": \"USD\", \"value\": \"5.00\"}}," 551 String detail = "{\"total\": {\"label\": \"Total\", \"amount\": {\"currency\ ": \"USD\", \"value\": \"5.00\"}},"
552 "\"shippingOptions\": [{\"id\": \"slow\", \"label\": \"Slow\", \"amount\ ": {\"currency\": \"USD\", \"value\": \"5.00\"}}," 552 "\"shippingOptions\": [{\"id\": \"slow\", \"label\": \"Slow\", \"amount\ ": {\"currency\": \"USD\", \"value\": \"5.00\"}},"
553 "{\"id\": \"fast\", \"label\": \"Fast\", \"amount\": {\"currency\": \"US D\", \"value\": \"50.00\"}, \"selected\": true}]}"; 553 "{\"id\": \"fast\", \"label\": \"Fast\", \"amount\": {\"currency\": \"US D\", \"value\": \"50.00\"}, \"selected\": true}]}";
554 554
555 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), fromJSON String(getScriptState(), detail, getExceptionState()))); 555 request->onUpdatePaymentDetails(ScriptValue::from(getScriptState(), fromJSON String(getScriptState(), detail, getExceptionState())));
556 EXPECT_FALSE(getExceptionState().hadException()); 556 EXPECT_FALSE(getExceptionState().hadException());
557 557
558 EXPECT_EQ("fast", request->shippingOption()); 558 EXPECT_EQ("fast", request->shippingOption());
559 } 559 }
560 560
561 } // namespace 561 } // namespace
562 } // namespace blink 562 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698