OLD | NEW |
| (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/PaymentAppRequestConversion.h" | |
6 | |
7 #include "bindings/core/v8/ScriptValue.h" | |
8 #include "bindings/core/v8/V8BindingForCore.h" | |
9 #include "bindings/core/v8/V8BindingForTesting.h" | |
10 #include "platform/bindings/ScriptState.h" | |
11 #include "public/platform/modules/payments/WebPaymentAppRequest.h" | |
12 #include "testing/gmock/include/gmock/gmock.h" | |
13 #include "testing/gtest/include/gtest/gtest.h" | |
14 | |
15 namespace blink { | |
16 namespace { | |
17 | |
18 static WebPaymentItem CreateWebPaymentItemForTest() { | |
19 WebPaymentItem web_item; | |
20 web_item.label = WebString::FromUTF8("Label"); | |
21 web_item.amount.currency = WebString::FromUTF8("USD"); | |
22 web_item.amount.value = WebString::FromUTF8("9.99"); | |
23 return web_item; | |
24 } | |
25 | |
26 static WebPaymentMethodData CreateWebPaymentMethodDataForTest() { | |
27 WebPaymentMethodData web_method_data; | |
28 WebString method = WebString::FromUTF8("foo"); | |
29 web_method_data.supported_methods = WebVector<WebString>(&method, 1); | |
30 web_method_data.stringified_data = "{\"merchantId\":\"12345\"}"; | |
31 return web_method_data; | |
32 } | |
33 | |
34 static WebPaymentAppRequest CreateWebPaymentAppRequestForTest() { | |
35 WebPaymentAppRequest web_data; | |
36 web_data.top_level_origin = WebString::FromUTF8("https://example.com"); | |
37 web_data.payment_request_origin = WebString::FromUTF8("https://example.com"); | |
38 web_data.payment_request_id = WebString::FromUTF8("payment-request-id"); | |
39 Vector<WebPaymentMethodData> method_data; | |
40 method_data.push_back(CreateWebPaymentMethodDataForTest()); | |
41 web_data.method_data = WebVector<WebPaymentMethodData>(method_data); | |
42 web_data.total = CreateWebPaymentItemForTest(); | |
43 web_data.instrument_key = WebString::FromUTF8("payment-instrument-key"); | |
44 return web_data; | |
45 } | |
46 | |
47 TEST(PaymentAppRequestConversionTest, ToPaymentAppRequest) { | |
48 V8TestingScope scope; | |
49 WebPaymentAppRequest web_data = CreateWebPaymentAppRequestForTest(); | |
50 PaymentAppRequest data = PaymentAppRequestConversion::ToPaymentAppRequest( | |
51 scope.GetScriptState(), web_data); | |
52 | |
53 ASSERT_TRUE(data.hasTopLevelOrigin()); | |
54 EXPECT_EQ("https://example.com", data.topLevelOrigin()); | |
55 | |
56 ASSERT_TRUE(data.hasPaymentRequestOrigin()); | |
57 EXPECT_EQ("https://example.com", data.paymentRequestOrigin()); | |
58 | |
59 ASSERT_TRUE(data.hasPaymentRequestId()); | |
60 EXPECT_EQ("payment-request-id", data.paymentRequestId()); | |
61 | |
62 ASSERT_TRUE(data.hasMethodData()); | |
63 ASSERT_EQ(1UL, data.methodData().size()); | |
64 ASSERT_TRUE(data.methodData().front().hasSupportedMethods()); | |
65 ASSERT_EQ(1UL, data.methodData().front().supportedMethods().size()); | |
66 ASSERT_EQ("foo", data.methodData().front().supportedMethods().front()); | |
67 ASSERT_TRUE(data.methodData().front().hasData()); | |
68 ASSERT_TRUE(data.methodData().front().data().IsObject()); | |
69 String stringified_data = V8StringToWebCoreString<String>( | |
70 v8::JSON::Stringify( | |
71 scope.GetContext(), | |
72 data.methodData().front().data().V8Value().As<v8::Object>()) | |
73 .ToLocalChecked(), | |
74 kDoNotExternalize); | |
75 EXPECT_EQ("{\"merchantId\":\"12345\"}", stringified_data); | |
76 | |
77 ASSERT_TRUE(data.hasTotal()); | |
78 ASSERT_TRUE(data.total().hasLabel()); | |
79 EXPECT_EQ("Label", data.total().label()); | |
80 ASSERT_TRUE(data.total().hasAmount()); | |
81 ASSERT_TRUE(data.total().amount().hasCurrency()); | |
82 EXPECT_EQ("USD", data.total().amount().currency()); | |
83 ASSERT_TRUE(data.total().amount().hasValue()); | |
84 EXPECT_EQ("9.99", data.total().amount().value()); | |
85 | |
86 ASSERT_TRUE(data.hasInstrumentKey()); | |
87 EXPECT_EQ("payment-instrument-key", data.instrumentKey()); | |
88 } | |
89 | |
90 } // namespace | |
91 } // namespace blink | |
OLD | NEW |