blob: 2acd4665bf85786ef6a9c60e25fc69ddbb30086c [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/android/physical_web/physical_web_data_source_android.h"
#include <memory>
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "testing/gtest/include/gtest/gtest.h"
using base::android::JavaParamRef;
namespace {
const char kRequestUrl[] = "https://awesomesite.us/";
const double kDistanceEstimate = 42.0;
const int64_t kScanTimestamp = 10000000L; // 10M
const char kSiteUrl[] = "https://awesomesite.us/page.html";
const char kIconUrl[] = "https://awesomesite.us/favicon.ico";
const char kTitle[] = "AwesomeSite";
const char kDescription[] = "An awesome site";
const char kGroupId[] = "14a8ef122";
} // namespace
class PhysicalWebCollectionTest : public testing::Test {
public:
PhysicalWebCollectionTest() {}
~PhysicalWebCollectionTest() override {}
void SetUp() override {
collection_ = std::make_unique<PhysicalWebCollection>();
env_ = base::android::AttachCurrentThread();
}
void TearDown() override {
collection_.reset();
}
PhysicalWebCollection* Collection();
JNIEnv* Env();
jstring JavaString(const std::string& value);
private:
std::unique_ptr<PhysicalWebCollection> collection_;
JNIEnv* env_;
};
PhysicalWebCollection* PhysicalWebCollectionTest::Collection() {
DCHECK(collection_);
return collection_.get();
}
JNIEnv* PhysicalWebCollectionTest::Env() {
return env_;
}
jstring PhysicalWebCollectionTest::JavaString(const std::string& value) {
return base::android::ConvertUTF8ToJavaString(Env(), value).Release();
}
TEST_F(PhysicalWebCollectionTest, AppendMetadataItem_ListWork) {
Collection()->AppendMetadataItem(
Env(),
JavaParamRef<jobject>(NULL),
JavaParamRef<jstring>(Env(), JavaString(kRequestUrl)),
static_cast<jdouble>(kDistanceEstimate),
static_cast<jlong>(kScanTimestamp),
JavaParamRef<jstring>(Env(), JavaString(kSiteUrl)),
JavaParamRef<jstring>(Env(), JavaString(kIconUrl)),
JavaParamRef<jstring>(Env(), JavaString(kTitle)),
JavaParamRef<jstring>(Env(), JavaString(kDescription)),
JavaParamRef<jstring>(Env(), JavaString(kGroupId)));
std::unique_ptr<physical_web::MetadataList> metadata_list =
Collection()->GetMetadataList();
EXPECT_EQ(1U, metadata_list->size());
auto metadata = (*metadata_list.get())[0];
EXPECT_EQ(kRequestUrl, metadata.scanned_url.spec());
EXPECT_EQ(kDistanceEstimate, metadata.distance_estimate);
EXPECT_EQ(kScanTimestamp, metadata.scan_timestamp.ToJavaTime());
EXPECT_EQ(kSiteUrl, metadata.resolved_url.spec());
EXPECT_EQ(kIconUrl, metadata.icon_url.spec());
EXPECT_EQ(kTitle, metadata.title);
EXPECT_EQ(kDescription, metadata.description);
EXPECT_EQ(kGroupId, metadata.group_id);
}