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

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: Rebase Created 4 years 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 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 (jdouble) kDistanceEstimate,
73 (jlong) kScanTimestamp,
mattreynolds 2016/12/16 20:27:44 Use static_casts
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((size_t) 1, metadata_list->size());
mattreynolds 2016/12/16 20:27:44 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,
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((size_t) 1, 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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698