blob: ba55592a0bd662152f295ec0e4c544b9371f15e5 [file] [log] [blame]
// Copyright 2019 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 "components/send_tab_to_self/send_tab_to_self_entry.h"
#include <memory>
#include "base/test/simple_test_tick_clock.h"
#include "components/sync/protocol/send_tab_to_self_specifics.pb.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace send_tab_to_self {
namespace {
bool IsEqualForTesting(const SendTabToSelfEntry& a,
const SendTabToSelfEntry& b) {
return a.GetGUID() == b.GetGUID() && a.GetURL() == b.GetURL() &&
a.GetTitle() == b.GetTitle() &&
a.GetDeviceName() == b.GetDeviceName() &&
a.GetSharedTime() == b.GetSharedTime() &&
a.GetOriginalNavigationTime() == b.GetOriginalNavigationTime();
}
TEST(SendTabToSelfEntry, CompareEntries) {
const SendTabToSelfEntry e1("1", GURL("http://example.com"), "bar",
base::Time::FromTimeT(10),
base::Time::FromTimeT(10), "device");
const SendTabToSelfEntry e2("1", GURL("http://example.com"), "bar",
base::Time::FromTimeT(10),
base::Time::FromTimeT(10), "device");
EXPECT_TRUE(IsEqualForTesting(e1, e2));
const SendTabToSelfEntry e3("2", GURL("http://example.org"), "bar",
base::Time::FromTimeT(10),
base::Time::FromTimeT(10), "device");
EXPECT_FALSE(IsEqualForTesting(e1, e3));
}
TEST(SendTabToSelfEntry, SharedTime) {
SendTabToSelfEntry e("1", GURL("http://example.com"), "bar",
base::Time::FromTimeT(10), base::Time::FromTimeT(10),
"device");
EXPECT_EQ("bar", e.GetTitle());
// Getters return Base::Time values.
EXPECT_EQ(e.GetSharedTime(), base::Time::FromTimeT(10));
}
// Tests that the send tab to self entry is correctly encoded to
// sync_pb::SendTabToSelfSpecifics.
TEST(SendTabToSelfEntry, AsProto) {
SendTabToSelfEntry entry("1", GURL("http://example.com"), "bar",
base::Time::FromTimeT(10), base::Time::FromTimeT(10),
"device");
base::Time shared_time = entry.GetSharedTime();
base::Time navigation_time = entry.GetSharedTime();
std::unique_ptr<sync_pb::SendTabToSelfSpecifics> pb_entry(entry.AsProto());
EXPECT_EQ(pb_entry->url(), "http://example.com/");
EXPECT_EQ(pb_entry->title(), "bar");
EXPECT_EQ(pb_entry->shared_time_usec(),
shared_time.ToDeltaSinceWindowsEpoch().InMicroseconds());
EXPECT_EQ(pb_entry->navigation_time_usec(),
navigation_time.ToDeltaSinceWindowsEpoch().InMicroseconds());
EXPECT_EQ(pb_entry->device_name(), "device");
}
// Tests that the send tab to self entry is correctly parsed from
// sync_pb::SendTabToSelfSpecifics.
TEST(SendTabToSelfEntry, FromProto) {
std::unique_ptr<sync_pb::SendTabToSelfSpecifics> pb_entry =
std::make_unique<sync_pb::SendTabToSelfSpecifics>();
pb_entry->set_guid("1");
pb_entry->set_url("http://example.com/");
pb_entry->set_title("title");
pb_entry->set_device_name("device");
pb_entry->set_shared_time_usec(1);
pb_entry->set_navigation_time_usec(1);
std::unique_ptr<SendTabToSelfEntry> entry(
SendTabToSelfEntry::FromProto(*pb_entry, base::Time::FromTimeT(10)));
EXPECT_EQ(entry->GetGUID(), "1");
EXPECT_EQ(entry->GetURL().spec(), "http://example.com/");
EXPECT_EQ(entry->GetTitle(), "title");
EXPECT_EQ(entry->GetDeviceName(), "device");
EXPECT_EQ(entry->GetSharedTime().ToDeltaSinceWindowsEpoch().InMicroseconds(),
1);
EXPECT_EQ(entry->GetOriginalNavigationTime()
.ToDeltaSinceWindowsEpoch()
.InMicroseconds(),
1);
}
} // namespace
} // namespace send_tab_to_self