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

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

Issue 2697123003: Use ExecutionContext instead of Document in PaymentRequest constructor. (Closed)
Patch Set: Created 3 years, 10 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 // Tests for PaymentRequest::complete(). 5 // Tests for PaymentRequest::complete().
6 6
7 #include "bindings/core/v8/V8BindingForTesting.h" 7 #include "bindings/core/v8/V8BindingForTesting.h"
8 #include "modules/payments/PaymentRequest.h" 8 #include "modules/payments/PaymentRequest.h"
9 #include "modules/payments/PaymentTestHelper.h" 9 #include "modules/payments/PaymentTestHelper.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
11 11
12 namespace blink { 12 namespace blink {
13 namespace { 13 namespace {
14 14
15 TEST(CompleteTest, CannotCallCompleteTwice) { 15 TEST(CompleteTest, CannotCallCompleteTwice) {
16 V8TestingScope scope; 16 V8TestingScope scope;
17 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 17 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
18 makePaymentRequestOriginSecure(scope.document()); 18 makePaymentRequestOriginSecure(scope.document());
19 PaymentRequest* request = PaymentRequest::create( 19 PaymentRequest* request = PaymentRequest::create(
20 scope.document(), buildPaymentMethodDataForTest(), 20 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
21 buildPaymentDetailsForTest(), scope.getExceptionState()); 21 buildPaymentDetailsForTest(), scope.getExceptionState());
22 EXPECT_FALSE(scope.getExceptionState().hadException()); 22 EXPECT_FALSE(scope.getExceptionState().hadException());
23 request->show(scope.getScriptState()); 23 request->show(scope.getScriptState());
24 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 24 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
25 ->OnPaymentResponse(buildPaymentResponseForTest()); 25 ->OnPaymentResponse(buildPaymentResponseForTest());
26 request->complete(scope.getScriptState(), PaymentCompleter::Fail); 26 request->complete(scope.getScriptState(), PaymentCompleter::Fail);
27 27
28 request->complete(scope.getScriptState(), PaymentCompleter::Success) 28 request->complete(scope.getScriptState(), PaymentCompleter::Success)
29 .then(funcs.expectNoCall(), funcs.expectCall()); 29 .then(funcs.expectNoCall(), funcs.expectCall());
30 } 30 }
31 31
32 TEST(CompleteTest, RejectCompletePromiseOnError) { 32 TEST(CompleteTest, RejectCompletePromiseOnError) {
33 V8TestingScope scope; 33 V8TestingScope scope;
34 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 34 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
35 makePaymentRequestOriginSecure(scope.document()); 35 makePaymentRequestOriginSecure(scope.document());
36 PaymentRequest* request = PaymentRequest::create( 36 PaymentRequest* request = PaymentRequest::create(
37 scope.document(), buildPaymentMethodDataForTest(), 37 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
38 buildPaymentDetailsForTest(), scope.getExceptionState()); 38 buildPaymentDetailsForTest(), scope.getExceptionState());
39 EXPECT_FALSE(scope.getExceptionState().hadException()); 39 EXPECT_FALSE(scope.getExceptionState().hadException());
40 request->show(scope.getScriptState()); 40 request->show(scope.getScriptState());
41 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 41 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
42 ->OnPaymentResponse(buildPaymentResponseForTest()); 42 ->OnPaymentResponse(buildPaymentResponseForTest());
43 43
44 String errorMessage; 44 String errorMessage;
45 request->complete(scope.getScriptState(), PaymentCompleter::Success) 45 request->complete(scope.getScriptState(), PaymentCompleter::Success)
46 .then(funcs.expectNoCall(), funcs.expectCall(&errorMessage)); 46 .then(funcs.expectNoCall(), funcs.expectCall(&errorMessage));
47 47
48 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)->OnError( 48 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)->OnError(
49 payments::mojom::blink::PaymentErrorReason::UNKNOWN); 49 payments::mojom::blink::PaymentErrorReason::UNKNOWN);
50 50
51 v8::MicrotasksScope::PerformCheckpoint(scope.getScriptState()->isolate()); 51 v8::MicrotasksScope::PerformCheckpoint(scope.getScriptState()->isolate());
52 EXPECT_EQ("UnknownError: Request failed", errorMessage); 52 EXPECT_EQ("UnknownError: Request failed", errorMessage);
53 } 53 }
54 54
55 // If user cancels the transaction during processing, the complete() promise 55 // If user cancels the transaction during processing, the complete() promise
56 // should be rejected. 56 // should be rejected.
57 TEST(CompleteTest, RejectCompletePromiseAfterError) { 57 TEST(CompleteTest, RejectCompletePromiseAfterError) {
58 V8TestingScope scope; 58 V8TestingScope scope;
59 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 59 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
60 makePaymentRequestOriginSecure(scope.document()); 60 makePaymentRequestOriginSecure(scope.document());
61 PaymentRequest* request = PaymentRequest::create( 61 PaymentRequest* request = PaymentRequest::create(
62 scope.document(), buildPaymentMethodDataForTest(), 62 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
63 buildPaymentDetailsForTest(), scope.getExceptionState()); 63 buildPaymentDetailsForTest(), scope.getExceptionState());
64 EXPECT_FALSE(scope.getExceptionState().hadException()); 64 EXPECT_FALSE(scope.getExceptionState().hadException());
65 request->show(scope.getScriptState()); 65 request->show(scope.getScriptState());
66 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 66 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
67 ->OnPaymentResponse(buildPaymentResponseForTest()); 67 ->OnPaymentResponse(buildPaymentResponseForTest());
68 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)->OnError( 68 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)->OnError(
69 payments::mojom::blink::PaymentErrorReason::USER_CANCEL); 69 payments::mojom::blink::PaymentErrorReason::USER_CANCEL);
70 70
71 request->complete(scope.getScriptState(), PaymentCompleter::Success) 71 request->complete(scope.getScriptState(), PaymentCompleter::Success)
72 .then(funcs.expectNoCall(), funcs.expectCall()); 72 .then(funcs.expectNoCall(), funcs.expectCall());
73 } 73 }
74 74
75 TEST(CompleteTest, ResolvePromiseOnComplete) { 75 TEST(CompleteTest, ResolvePromiseOnComplete) {
76 V8TestingScope scope; 76 V8TestingScope scope;
77 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 77 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
78 makePaymentRequestOriginSecure(scope.document()); 78 makePaymentRequestOriginSecure(scope.document());
79 PaymentRequest* request = PaymentRequest::create( 79 PaymentRequest* request = PaymentRequest::create(
80 scope.document(), buildPaymentMethodDataForTest(), 80 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
81 buildPaymentDetailsForTest(), scope.getExceptionState()); 81 buildPaymentDetailsForTest(), scope.getExceptionState());
82 EXPECT_FALSE(scope.getExceptionState().hadException()); 82 EXPECT_FALSE(scope.getExceptionState().hadException());
83 request->show(scope.getScriptState()); 83 request->show(scope.getScriptState());
84 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 84 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
85 ->OnPaymentResponse(buildPaymentResponseForTest()); 85 ->OnPaymentResponse(buildPaymentResponseForTest());
86 86
87 request->complete(scope.getScriptState(), PaymentCompleter::Success) 87 request->complete(scope.getScriptState(), PaymentCompleter::Success)
88 .then(funcs.expectCall(), funcs.expectNoCall()); 88 .then(funcs.expectCall(), funcs.expectNoCall());
89 89
90 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 90 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
91 ->OnComplete(); 91 ->OnComplete();
92 } 92 }
93 93
94 TEST(CompleteTest, RejectCompletePromiseOnUpdateDetailsFailure) { 94 TEST(CompleteTest, RejectCompletePromiseOnUpdateDetailsFailure) {
95 V8TestingScope scope; 95 V8TestingScope scope;
96 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 96 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
97 makePaymentRequestOriginSecure(scope.document()); 97 makePaymentRequestOriginSecure(scope.document());
98 PaymentRequest* request = PaymentRequest::create( 98 PaymentRequest* request = PaymentRequest::create(
99 scope.document(), buildPaymentMethodDataForTest(), 99 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
100 buildPaymentDetailsForTest(), scope.getExceptionState()); 100 buildPaymentDetailsForTest(), scope.getExceptionState());
101 EXPECT_FALSE(scope.getExceptionState().hadException()); 101 EXPECT_FALSE(scope.getExceptionState().hadException());
102 request->show(scope.getScriptState()) 102 request->show(scope.getScriptState())
103 .then(funcs.expectCall(), funcs.expectNoCall()); 103 .then(funcs.expectCall(), funcs.expectNoCall());
104 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 104 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
105 ->OnPaymentResponse(buildPaymentResponseForTest()); 105 ->OnPaymentResponse(buildPaymentResponseForTest());
106 106
107 String errorMessage; 107 String errorMessage;
108 request->complete(scope.getScriptState(), PaymentCompleter::Success) 108 request->complete(scope.getScriptState(), PaymentCompleter::Success)
109 .then(funcs.expectNoCall(), funcs.expectCall(&errorMessage)); 109 .then(funcs.expectNoCall(), funcs.expectCall(&errorMessage));
110 110
111 request->onUpdatePaymentDetailsFailure("oops"); 111 request->onUpdatePaymentDetailsFailure("oops");
112 112
113 v8::MicrotasksScope::PerformCheckpoint(scope.getScriptState()->isolate()); 113 v8::MicrotasksScope::PerformCheckpoint(scope.getScriptState()->isolate());
114 EXPECT_EQ("AbortError: oops", errorMessage); 114 EXPECT_EQ("AbortError: oops", errorMessage);
115 } 115 }
116 116
117 TEST(CompleteTest, RejectCompletePromiseAfterTimeout) { 117 TEST(CompleteTest, RejectCompletePromiseAfterTimeout) {
118 V8TestingScope scope; 118 V8TestingScope scope;
119 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 119 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
120 makePaymentRequestOriginSecure(scope.document()); 120 makePaymentRequestOriginSecure(scope.document());
121 PaymentRequest* request = PaymentRequest::create( 121 PaymentRequest* request = PaymentRequest::create(
122 scope.document(), buildPaymentMethodDataForTest(), 122 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
123 buildPaymentDetailsForTest(), scope.getExceptionState()); 123 buildPaymentDetailsForTest(), scope.getExceptionState());
124 EXPECT_FALSE(scope.getExceptionState().hadException()); 124 EXPECT_FALSE(scope.getExceptionState().hadException());
125 request->show(scope.getScriptState()) 125 request->show(scope.getScriptState())
126 .then(funcs.expectCall(), funcs.expectNoCall()); 126 .then(funcs.expectCall(), funcs.expectNoCall());
127 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 127 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
128 ->OnPaymentResponse(buildPaymentResponseForTest()); 128 ->OnPaymentResponse(buildPaymentResponseForTest());
129 request->onCompleteTimeoutForTesting(); 129 request->onCompleteTimeoutForTesting();
130 130
131 String errorMessage; 131 String errorMessage;
132 request->complete(scope.getScriptState(), PaymentCompleter::Success) 132 request->complete(scope.getScriptState(), PaymentCompleter::Success)
133 .then(funcs.expectNoCall(), funcs.expectCall(&errorMessage)); 133 .then(funcs.expectNoCall(), funcs.expectCall(&errorMessage));
134 134
135 v8::MicrotasksScope::PerformCheckpoint(scope.getScriptState()->isolate()); 135 v8::MicrotasksScope::PerformCheckpoint(scope.getScriptState()->isolate());
136 EXPECT_EQ( 136 EXPECT_EQ(
137 "InvalidStateError: Timed out after 60 seconds, complete() called too " 137 "InvalidStateError: Timed out after 60 seconds, complete() called too "
138 "late", 138 "late",
139 errorMessage); 139 errorMessage);
140 } 140 }
141 141
142 } // namespace 142 } // namespace
143 } // namespace blink 143 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698