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

Side by Side Diff: chrome/browser/android/physical_web/physical_web_data_source_android_unittest.cc

Issue 2561493002: Pass Physical Web metadata through a struct (Closed)
Patch Set: Forward declare MetadataList Created 3 years, 11 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 "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 collection_ = base::MakeUnique<PhysicalWebCollection>();
35 env_ = base::android::AttachCurrentThread();
36 }
37
38 void TearDown() override {
39 collection_.reset();
40 }
41
42 PhysicalWebCollection* Collection();
43 JNIEnv* Env();
44 jstring JavaString(const std::string& value);
45
46 private:
47 std::unique_ptr<PhysicalWebCollection> collection_;
48 JNIEnv* env_;
49 };
50
51 PhysicalWebCollection* PhysicalWebCollectionTest::Collection() {
52 DCHECK(collection_);
53 return collection_.get();
54 }
55
56 JNIEnv* PhysicalWebCollectionTest::Env() {
57 return env_;
58 }
59
60 jstring PhysicalWebCollectionTest::JavaString(const std::string& value) {
61 return base::android::ConvertUTF8ToJavaString(Env(), value).Release();
62 }
63
64 TEST_F(PhysicalWebCollectionTest, AppendMetadataItem_ListWork) {
65 Collection()->AppendMetadataItem(
66 Env(),
67 JavaParamRef<jobject>(NULL),
68 JavaParamRef<jstring>(Env(), JavaString(kRequestUrl)),
69 static_cast<jdouble>(kDistanceEstimate),
70 static_cast<jlong>(kScanTimestamp),
71 JavaParamRef<jstring>(Env(), JavaString(kSiteUrl)),
72 JavaParamRef<jstring>(Env(), JavaString(kIconUrl)),
73 JavaParamRef<jstring>(Env(), JavaString(kTitle)),
74 JavaParamRef<jstring>(Env(), JavaString(kDescription)),
75 JavaParamRef<jstring>(Env(), JavaString(kGroupId)));
76
77 std::unique_ptr<physical_web::MetadataList> metadata_list =
78 Collection()->GetMetadataList();
79 EXPECT_EQ(1U, metadata_list->size());
80 auto metadata = (*metadata_list.get())[0];
81 EXPECT_EQ(kRequestUrl, metadata.scanned_url.spec());
82 EXPECT_EQ(kDistanceEstimate, metadata.distance_estimate);
83 EXPECT_EQ(kScanTimestamp, metadata.scan_timestamp.ToJavaTime());
84 EXPECT_EQ(kSiteUrl, metadata.resolved_url.spec());
85 EXPECT_EQ(kIconUrl, metadata.icon_url.spec());
86 EXPECT_EQ(kTitle, metadata.title);
87 EXPECT_EQ(kDescription, metadata.description);
88 EXPECT_EQ(kGroupId, metadata.group_id);
89 }
90
91 TEST_F(PhysicalWebCollectionTest, AppendMetadataItem_DictionaryValueWorks) {
92 Collection()->AppendMetadataItem(
93 Env(),
94 JavaParamRef<jobject>(NULL),
95 JavaParamRef<jstring>(Env(), JavaString(kRequestUrl)),
96 static_cast<jdouble>(kDistanceEstimate),
97 static_cast<jlong>(kScanTimestamp),
98 JavaParamRef<jstring>(Env(), JavaString(kSiteUrl)),
99 JavaParamRef<jstring>(Env(), JavaString(kIconUrl)),
100 JavaParamRef<jstring>(Env(), JavaString(kTitle)),
101 JavaParamRef<jstring>(Env(), JavaString(kDescription)),
102 JavaParamRef<jstring>(Env(), JavaString(kGroupId)));
103
104 std::unique_ptr<base::ListValue> list_value = Collection()->GetMetadata();
105 EXPECT_EQ(1U, list_value->GetSize());
106 const base::Value* value;
107 EXPECT_TRUE(list_value->Get(0, &value));
108 const base::DictionaryValue* dictionary_value;
109 EXPECT_TRUE(value->GetAsDictionary(&dictionary_value));
110 std::string stored_scanned_url;
111 EXPECT_TRUE(dictionary_value->GetString(physical_web::kScannedUrlKey,
112 &stored_scanned_url));
113 EXPECT_EQ(kRequestUrl, stored_scanned_url);
114 double stored_distance_estimate;
115 EXPECT_TRUE(dictionary_value->GetDouble(physical_web::kDistanceEstimateKey,
116 &stored_distance_estimate));
117 EXPECT_EQ(kDistanceEstimate, stored_distance_estimate);
118 std::string stored_resolved_url;
119 EXPECT_TRUE(dictionary_value->GetString(physical_web::kResolvedUrlKey,
120 &stored_resolved_url));
121 EXPECT_EQ(kSiteUrl, stored_resolved_url);
122 std::string stored_icon_url;
123 EXPECT_TRUE(dictionary_value->GetString(physical_web::kIconUrlKey,
124 &stored_icon_url));
125 EXPECT_EQ(kIconUrl, stored_icon_url);
126 std::string stored_title;
127 EXPECT_TRUE(dictionary_value->GetString(physical_web::kTitleKey,
128 &stored_title));
129 EXPECT_EQ(kTitle, stored_title);
130 std::string stored_description;
131 EXPECT_TRUE(dictionary_value->GetString(physical_web::kDescriptionKey,
132 &stored_description));
133 EXPECT_EQ(kDescription, stored_description);
134 std::string stored_group_id;
135 EXPECT_TRUE(dictionary_value->GetString(physical_web::kGroupIdKey,
136 &stored_group_id));
137 EXPECT_EQ(kGroupId, stored_group_id);
138 }
OLDNEW
« no previous file with comments | « chrome/browser/android/physical_web/physical_web_data_source_android.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698