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

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

Issue 1753543002: PaymentRequest Mojo bindings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@interface
Patch Set: haraken@'s + esprehn@'s comments Created 4 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
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "modules/payments/PaymentRequest.h"
6
7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/core/v8/ScriptState.h"
9 #include "core/dom/ExceptionCode.h"
10 #include "core/testing/DummyPageHolder.h"
11 #include "modules/payments/PaymentDetails.h"
12 #include "modules/payments/PaymentDetailsTestHelper.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "wtf/OwnPtr.h"
15
16 namespace blink {
17 namespace {
18
19 class DetailsTestCase {
20 public:
21 DetailsTestCase(PaymentTestDetailToChange detail, PaymentTestDataToChange da ta, PaymentTestModificationType modType, const char* valueToUse, bool expectExce ption = false, ExceptionCode expectedExceptionCode = 0)
22 : m_detail(detail)
23 , m_data(data)
24 , m_modType(modType)
25 , m_valueToUse(valueToUse)
26 , m_expectException(expectException)
27 , m_expectedExceptionCode(expectedExceptionCode)
28 {
29 }
30
31 ~DetailsTestCase() {}
32
33 PaymentDetails buildDetails() const
34 {
35 return buildPaymentDetailsForTest(m_detail, m_data, m_modType, m_valueTo Use);
36 }
37
38 bool expectException() const
39 {
40 return m_expectException;
41 }
42
43 ExceptionCode getExpectedExceptionCode() const
44 {
45 return m_expectedExceptionCode;
46 }
47
48 private:
49 PaymentTestDetailToChange m_detail;
50 PaymentTestDataToChange m_data;
51 PaymentTestModificationType m_modType;
52 const char* m_valueToUse;
53 bool m_expectException;
54 ExceptionCode m_expectedExceptionCode;
55 };
56
57
58 class PaymentRequestDetailsTest : public testing::TestWithParam<DetailsTestCase> {
59 public:
60 PaymentRequestDetailsTest()
61 : m_page(DummyPageHolder::create())
62 {
63 setSecurityOrigin("https://www.example.com/");
64 }
65
66 ~PaymentRequestDetailsTest() override {}
67
68 ScriptState* getScriptState() { return ScriptState::forMainWorld(m_page->doc ument().frame()); }
69 ExceptionState& getExceptionState() { return m_exceptionState; }
70
71 void setSecurityOrigin(const String& securityOrigin)
72 {
73 m_page->document().setSecurityOrigin(SecurityOrigin::create(KURL(KURL(), securityOrigin)));
74 }
75
76 private:
77 OwnPtr<DummyPageHolder> m_page;
78 TrackExceptionState m_exceptionState;
79 };
80
81 TEST_P(PaymentRequestDetailsTest, ValidatesDetails)
82 {
83 PaymentRequest::create(getScriptState(), Vector<String>(1, "foo"), GetParam( ).buildDetails(), getExceptionState());
84
85 EXPECT_EQ(GetParam().expectException(), getExceptionState().hadException());
86 if (GetParam().expectException())
87 EXPECT_EQ(GetParam().getExpectedExceptionCode(), getExceptionState().cod e());
88 }
89
90 INSTANTIATE_TEST_CASE_P(RequiredData,
91 PaymentRequestDetailsTest,
92 testing::Values(
93 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tRemoveKey, "", true, V8TypeError),
94 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataCurrencyCode, Paym entTestRemoveKey, "", true, V8TypeError),
95 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataId, PaymentTestRem oveKey, "", true, V8TypeError),
96 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataLabel, PaymentTest RemoveKey, "", true, V8TypeError),
97 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestRemoveKey, "", true, V8TypeError),
98 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataCurrency Code, PaymentTestRemoveKey, "", true, V8TypeError),
99 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataId, Paym entTestRemoveKey, "", true, V8TypeError),
100 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataLabel, P aymentTestRemoveKey, "", true, V8TypeError)));
101
102 INSTANTIATE_TEST_CASE_P(ValidCurrencyCodeFormat,
103 PaymentRequestDetailsTest,
104 testing::Values(
105 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataCurrencyCode, Paym entTestOverwriteValue, "USD"),
106 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataCurrency Code, PaymentTestOverwriteValue, "USD")));
107
108 INSTANTIATE_TEST_CASE_P(InvalidCurrencyCodeFormat,
109 PaymentRequestDetailsTest,
110 testing::Values(
111 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataCurrencyCode, Paym entTestOverwriteValue, "US1", true, V8TypeError),
112 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataCurrencyCode, Paym entTestOverwriteValue, "US", true, V8TypeError),
113 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataCurrencyCode, Paym entTestOverwriteValue, "USDO", true, V8TypeError),
114 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataCurrencyCode, Paym entTestOverwriteValue, "usd", true, V8TypeError),
115 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataCurrencyCode, Paym entTestOverwriteValue, "", true, V8TypeError),
116 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataCurrency Code, PaymentTestOverwriteValue, "US1", true, V8TypeError),
117 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataCurrency Code, PaymentTestOverwriteValue, "US", true, V8TypeError),
118 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataCurrency Code, PaymentTestOverwriteValue, "USDO", true, V8TypeError),
119 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataCurrency Code, PaymentTestOverwriteValue, "usd", true, V8TypeError),
120 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataCurrency Code, PaymentTestOverwriteValue, "", true, V8TypeError)));
121
122 INSTANTIATE_TEST_CASE_P(ValidAmountFormat,
123 PaymentRequestDetailsTest,
124 testing::Values(
125 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "0"),
126 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "-0"),
127 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "1"),
128 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "10"),
129 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "-3"),
130 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "10.99"),
131 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "-3.00"),
132 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "01234567890123456789.0123456789"),
133 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "01234567890123456789012345678.9"),
134 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "012345678901234567890123456789"),
135 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "-01234567890123456789.0123456789"),
136 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "-01234567890123456789012345678.9"),
137 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "-012345678901234567890123456789"),
138 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "0"),
139 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "-0"),
140 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "1"),
141 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "10"),
142 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "-3"),
143 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "10.99"),
144 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "-3.00"),
145 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "01234567890123456789.0123456789"),
146 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "01234567890123456789012345678.9"),
147 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "012345678901234567890123456789"),
148 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "-01234567890123456789.0123456789"),
149 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "-01234567890123456789012345678.9"),
150 DetailsTestCase(PaymentTestDetailShippingOption, PaymentTestDataAmount, PaymentTestOverwriteValue, "-012345678901234567890123456789")));
151
152 INSTANTIATE_TEST_CASE_P(InvalidAmountFormat,
153 PaymentRequestDetailsTest,
154 testing::Values(
155 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "", true, V8TypeError),
156 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "-", true, V8TypeError),
157 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "notdigits", true, V8TypeError),
158 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "ALSONOTDIGITS", true, V8TypeError),
159 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "10.", true, V8TypeError),
160 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, ".99", true, V8TypeError),
161 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "-10.", true, V8TypeError),
162 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "10-", true, V8TypeError),
163 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "1-0", true, V8TypeError),
164 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "1.0.0", true, V8TypeError),
165 DetailsTestCase(PaymentTestDetailItem, PaymentTestDataAmount, PaymentTes tOverwriteValue, "1/3", true, V8TypeError)));
166
167 } // namespace
168 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698