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 "chrome/browser/android/physical_web/physical_web_data_source_android.h " | |
6 | |
7 #include "base/android/jni_android.h" | |
8 #include "base/android/jni_string.h" | |
9 #include "base/memory/ptr_util.h" | |
10 #include "base/values.h" | |
11 #include "testing/gtest/include/gtest/gtest.h" | |
12 | |
13 using base::android::JavaParamRef; | |
14 | |
15 namespace { | |
16 | |
17 const char kRequestUrl[] = "https://awesomesite.us/"; | |
18 const double kDistanceEstimate = 42.0; | |
19 const int64_t kScanTimestamp = 10000000L; // 10M | |
20 const char kSiteUrl[] = "https://awesomesite.us/page.html"; | |
21 const char kIconUrl[] = "https://awesomesite.us/favicon.ico"; | |
22 const char kTitle[] = "AwesomeSite"; | |
23 const char kDescription[] = "An awesome site"; | |
24 const char kGroupId[] = "14a8ef122"; | |
25 | |
26 } // namespace | |
27 | |
28 class PhysicalWebCollectionTest : public testing::Test { | |
29 public: | |
30 PhysicalWebCollectionTest() {} | |
31 ~PhysicalWebCollectionTest() override {} | |
32 | |
33 void SetUp() override; | |
34 void TearDown() override; | |
35 | |
36 PhysicalWebCollection* collection(); | |
37 JNIEnv* env(); | |
38 jstring javaString(const std::string& value); | |
39 | |
40 private: | |
41 std::unique_ptr<PhysicalWebCollection> collection_; | |
42 JNIEnv* env_; | |
43 }; | |
44 | |
45 void PhysicalWebCollectionTest::SetUp() { | |
46 collection_ = base::MakeUnique<PhysicalWebCollection>(); | |
47 env_ = base::android::AttachCurrentThread(); | |
48 } | |
49 | |
50 void PhysicalWebCollectionTest::TearDown() { | |
51 collection_.reset(); | |
52 } | |
53 | |
54 PhysicalWebCollection* PhysicalWebCollectionTest::collection() { | |
55 DCHECK(collection_); | |
56 return collection_.get(); | |
57 } | |
58 | |
59 JNIEnv* PhysicalWebCollectionTest::env() { | |
60 return env_; | |
61 } | |
62 | |
63 jstring PhysicalWebCollectionTest::javaString(const std::string& value) { | |
64 return base::android::ConvertUTF8ToJavaString(env(), value).Release(); | |
65 } | |
66 | |
67 TEST_F(PhysicalWebCollectionTest, AppendMetadataItem_ListWork) { | |
68 collection()->AppendMetadataItem( | |
69 env(), | |
70 JavaParamRef<jobject>(NULL), | |
71 JavaParamRef<jstring>(env(), javaString(kRequestUrl)), | |
72 static_cast<jdouble>(kDistanceEstimate), | |
73 static_cast<jlong>(kScanTimestamp), | |
74 JavaParamRef<jstring>(env(), javaString(kSiteUrl)), | |
75 JavaParamRef<jstring>(env(), javaString(kIconUrl)), | |
76 JavaParamRef<jstring>(env(), javaString(kTitle)), | |
77 JavaParamRef<jstring>(env(), javaString(kDescription)), | |
78 JavaParamRef<jstring>(env(), javaString(kGroupId))); | |
79 | |
80 std::unique_ptr<physical_web::MetadataList> metadata_list = | |
81 collection()->GetMetadataList(); | |
82 EXPECT_EQ(1U, metadata_list->size()); | |
83 auto metadata = (*metadata_list.get())[0]; | |
84 EXPECT_EQ(kRequestUrl, metadata.scanned_url.spec()); | |
85 EXPECT_EQ(kDistanceEstimate, metadata.distance_estimate); | |
86 EXPECT_EQ(kScanTimestamp, metadata.scan_timestamp.ToJavaTime()); | |
87 EXPECT_EQ(kSiteUrl, metadata.resolved_url.spec()); | |
88 EXPECT_EQ(kIconUrl, metadata.icon_url.spec()); | |
89 EXPECT_EQ(kTitle, metadata.title); | |
90 EXPECT_EQ(kDescription, metadata.description); | |
91 EXPECT_EQ(kGroupId, metadata.group_id); | |
92 } | |
93 | |
94 TEST_F(PhysicalWebCollectionTest, AppendMetadataItem_DictionaryValueWorks) { | |
95 collection()->AppendMetadataItem( | |
96 env(), | |
97 JavaParamRef<jobject>(NULL), | |
98 JavaParamRef<jstring>(env(), javaString(kRequestUrl)), | |
99 (jdouble) kDistanceEstimate, | |
100 (jlong) kScanTimestamp, | |
mattreynolds
2016/12/16 21:17:07
some more here
| |
101 JavaParamRef<jstring>(env(), javaString(kSiteUrl)), | |
102 JavaParamRef<jstring>(env(), javaString(kIconUrl)), | |
103 JavaParamRef<jstring>(env(), javaString(kTitle)), | |
104 JavaParamRef<jstring>(env(), javaString(kDescription)), | |
105 JavaParamRef<jstring>(env(), javaString(kGroupId))); | |
106 | |
107 std::unique_ptr<base::ListValue> list_value = | |
108 collection()->GetMetadata(); | |
109 EXPECT_EQ(1U, list_value->GetSize()); | |
110 const base::Value* value; | |
111 EXPECT_TRUE(list_value->Get(0, &value)); | |
112 const base::DictionaryValue* dictionary_value; | |
113 EXPECT_TRUE(value->GetAsDictionary(&dictionary_value)); | |
114 std::string stored_scanned_url; | |
115 EXPECT_TRUE(dictionary_value->GetString(physical_web::kScannedUrlKey, | |
116 &stored_scanned_url)); | |
117 EXPECT_EQ(kRequestUrl, stored_scanned_url); | |
118 double stored_distance_estimate; | |
119 EXPECT_TRUE(dictionary_value->GetDouble(physical_web::kDistanceEstimateKey, | |
120 &stored_distance_estimate)); | |
121 EXPECT_EQ(kDistanceEstimate, stored_distance_estimate); | |
122 std::string stored_resolved_url; | |
123 EXPECT_TRUE(dictionary_value->GetString(physical_web::kResolvedUrlKey, | |
124 &stored_resolved_url)); | |
125 EXPECT_EQ(kSiteUrl, stored_resolved_url); | |
126 std::string stored_icon_url; | |
127 EXPECT_TRUE(dictionary_value->GetString(physical_web::kIconUrlKey, | |
128 &stored_icon_url)); | |
129 EXPECT_EQ(kIconUrl, stored_icon_url); | |
130 std::string stored_title; | |
131 EXPECT_TRUE(dictionary_value->GetString(physical_web::kTitleKey, | |
132 &stored_title)); | |
133 EXPECT_EQ(kTitle, stored_title); | |
134 std::string stored_description; | |
135 EXPECT_TRUE(dictionary_value->GetString(physical_web::kDescriptionKey, | |
136 &stored_description)); | |
137 EXPECT_EQ(kDescription, stored_description); | |
138 std::string stored_group_id; | |
139 EXPECT_TRUE(dictionary_value->GetString(physical_web::kGroupIdKey, | |
140 &stored_group_id)); | |
141 EXPECT_EQ(kGroupId, stored_group_id); | |
142 } | |
OLD | NEW |