| Index: components/enhanced_bookmarks/enhanced_bookmark_model_unittest.cc
|
| diff --git a/components/enhanced_bookmarks/enhanced_bookmark_model_unittest.cc b/components/enhanced_bookmarks/enhanced_bookmark_model_unittest.cc
|
| index 5263297bb6f32af4d292dabfd45308e759a91e5e..edf052e3903165641efe8497f40487260353b2d7 100644
|
| --- a/components/enhanced_bookmarks/enhanced_bookmark_model_unittest.cc
|
| +++ b/components/enhanced_bookmarks/enhanced_bookmark_model_unittest.cc
|
| @@ -18,6 +18,8 @@
|
|
|
| namespace {
|
|
|
| +using enhanced_bookmarks::EnhancedBookmarkModel;
|
| +
|
| const std::string BOOKMARK_URL("http://example.com/index.html");
|
|
|
| class EnhancedBookmarkModelTest : public testing::Test {
|
| @@ -28,11 +30,11 @@ class EnhancedBookmarkModelTest : public testing::Test {
|
| virtual void SetUp() OVERRIDE {
|
| bookmarks::TestBookmarkClient bookmark_client;
|
| bookmark_model_.reset(bookmark_client.CreateModel().release());
|
| - model_.reset(new enhanced_bookmarks::EnhancedBookmarkModel(
|
| - bookmark_model_.get(), "v1.0"));
|
| + model_.reset(new EnhancedBookmarkModel(bookmark_model_.get(), "v1.0"));
|
| }
|
|
|
| virtual void TearDown() OVERRIDE {
|
| + model_->ShutDown();
|
| model_.reset();
|
| bookmark_model_.reset();
|
| }
|
| @@ -48,26 +50,40 @@ class EnhancedBookmarkModelTest : public testing::Test {
|
|
|
| const BookmarkNode* AddBookmark(const std::string& name,
|
| const BookmarkNode* parent) {
|
| - return bookmark_model_->AddURL(parent,
|
| - 0, // index.
|
| - base::ASCIIToUTF16(name),
|
| - GURL(BOOKMARK_URL));
|
| + return model_->AddURL(parent,
|
| + 0, // index.
|
| + base::ASCIIToUTF16(name),
|
| + GURL(BOOKMARK_URL),
|
| + base::Time::Now());
|
| }
|
|
|
| const BookmarkNode* AddFolder(const std::string& name,
|
| const BookmarkNode* parent) {
|
| - return bookmark_model_->AddFolder(parent, 0, base::ASCIIToUTF16(name));
|
| + return model_->AddFolder(parent, 0, base::ASCIIToUTF16(name));
|
| + }
|
| +
|
| + std::string GetVersion(const BookmarkNode* node) {
|
| + return GetMetaInfoField(node, "stars.version");
|
| + }
|
| +
|
| + std::string GetId(const BookmarkNode* node) {
|
| + return GetMetaInfoField(node, "stars.id");
|
| }
|
|
|
| - std::string GetVersionForNode(const BookmarkNode* node) {
|
| - std::string version;
|
| - if (!node->GetMetaInfo("stars.version", &version))
|
| + std::string GetOldId(const BookmarkNode* node) {
|
| + return GetMetaInfoField(node, "stars.oldId");
|
| + }
|
| +
|
| + std::string GetMetaInfoField(const BookmarkNode* node,
|
| + const std::string& name) {
|
| + std::string value;
|
| + if (!node->GetMetaInfo(name, &value))
|
| return std::string();
|
| - return version;
|
| + return value;
|
| }
|
|
|
| scoped_ptr<BookmarkModel> bookmark_model_;
|
| - scoped_ptr<enhanced_bookmarks::EnhancedBookmarkModel> model_;
|
| + scoped_ptr<EnhancedBookmarkModel> model_;
|
|
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(EnhancedBookmarkModelTest);
|
| @@ -253,7 +269,7 @@ TEST_F(EnhancedBookmarkModelTest, TestEncodeDecode) {
|
| EXPECT_EQ(url, GURL("http://example.com/i.jpg"));
|
| EXPECT_EQ(width, 22);
|
| EXPECT_EQ(height, 33);
|
| - EXPECT_EQ("v1.0", GetVersionForNode(node));
|
| + EXPECT_EQ("v1.0", GetVersion(node));
|
| }
|
|
|
| TEST_F(EnhancedBookmarkModelTest, TestDoubleEncodeDecode) {
|
| @@ -276,25 +292,26 @@ TEST_F(EnhancedBookmarkModelTest, TestDoubleEncodeDecode) {
|
| EXPECT_EQ(url, GURL("http://example.com/i.jpg"));
|
| EXPECT_EQ(width, 33);
|
| EXPECT_EQ(height, 44);
|
| - EXPECT_EQ("v1.0", GetVersionForNode(node));
|
| + EXPECT_EQ("v1.0", GetVersion(node));
|
| }
|
|
|
| TEST_F(EnhancedBookmarkModelTest, TestRemoteId) {
|
| const BookmarkNode* node = AddBookmark();
|
| - const BookmarkNode* folder_node = AddFolder();
|
| -
|
| - std::string remote_id = model_->GetRemoteId(node);
|
| - // First call creates the UUID, second call should return the same.
|
| - EXPECT_EQ(remote_id, model_->GetRemoteId(node));
|
| -
|
| // Verify that the remote id starts with the correct prefix.
|
| - EXPECT_TRUE(StartsWithASCII(remote_id, "ebc_", true));
|
| - std::string folder_remote_id = model_->GetRemoteId(folder_node);
|
| - EXPECT_TRUE(StartsWithASCII(folder_remote_id, "ebf_", true));
|
| -
|
| - // Verifiy version field was set.
|
| - EXPECT_EQ("v1.0", GetVersionForNode(node));
|
| - EXPECT_EQ("v1.0", GetVersionForNode(folder_node));
|
| + EXPECT_TRUE(StartsWithASCII(model_->GetRemoteId(node), "ebc_", true));
|
| +
|
| + // Getting the remote id for nodes that don't have them should return the
|
| + // empty string.
|
| + const BookmarkNode* existing_node =
|
| + bookmark_model_->AddURL(bookmark_model_->other_node(),
|
| + 0,
|
| + base::ASCIIToUTF16("Title"),
|
| + GURL(GURL(BOOKMARK_URL)));
|
| + EXPECT_TRUE(model_->GetRemoteId(existing_node).empty());
|
| +
|
| + // Folder nodes should not have a remote id set on creation.
|
| + const BookmarkNode* folder_node = AddFolder();
|
| + EXPECT_TRUE(model_->GetRemoteId(folder_node).empty());
|
| }
|
|
|
| TEST_F(EnhancedBookmarkModelTest, TestEmptyDescription) {
|
| @@ -313,7 +330,7 @@ TEST_F(EnhancedBookmarkModelTest, TestDescription) {
|
|
|
| // Check the description is the one that was set.
|
| EXPECT_EQ(model_->GetDescription(node), description);
|
| - EXPECT_EQ("v1.0", GetVersionForNode(node));
|
| + EXPECT_EQ("v1.0", GetVersion(node));
|
| }
|
|
|
| // If there is no notes field, the description should fall back on the snippet.
|
| @@ -349,10 +366,10 @@ TEST_F(EnhancedBookmarkModelTest, TestDescriptionFallback) {
|
| // EnhancedBookmarkModel makes a change to a node.
|
| TEST_F(EnhancedBookmarkModelTest, TestVersionField) {
|
| const BookmarkNode* node = AddBookmark();
|
| - EXPECT_EQ("", GetVersionForNode(node));
|
| + EXPECT_EQ("", GetVersion(node));
|
|
|
| model_->SetDescription(node, "foo");
|
| - EXPECT_EQ("v1.0", GetVersionForNode(node));
|
| + EXPECT_EQ("v1.0", GetVersion(node));
|
|
|
| // Add a suffix to the version to set.
|
| model_->SetVersionSuffix("alpha");
|
| @@ -360,21 +377,97 @@ TEST_F(EnhancedBookmarkModelTest, TestVersionField) {
|
| model_->SetDescription(node, "foo");
|
| // Since the description didn't actually change, the version field should
|
| // not either.
|
| - EXPECT_EQ("v1.0", GetVersionForNode(node));
|
| + EXPECT_EQ("v1.0", GetVersion(node));
|
|
|
| model_->SetDescription(node, "bar");
|
| - EXPECT_EQ("v1.0/alpha", GetVersionForNode(node));
|
| + EXPECT_EQ("v1.0/alpha", GetVersion(node));
|
| }
|
|
|
| -// Verifies that the stars.userEdit field is set appropriately when editing a
|
| -// node.
|
| -TEST_F(EnhancedBookmarkModelTest, TestUserEdit) {
|
| - const BookmarkNode* node = AddBookmark();
|
| +// Verifies that duplicate nodes are reset when the model is created.
|
| +TEST_F(EnhancedBookmarkModelTest, ResetDuplicateNodesOnInitialization) {
|
| + model_->ShutDown();
|
| +
|
| + const BookmarkNode* parent = bookmark_model_->other_node();
|
| + const BookmarkNode* node1 = bookmark_model_->AddURL(
|
| + parent, 0, base::ASCIIToUTF16("Some title"), GURL(BOOKMARK_URL));
|
| + const BookmarkNode* node2 = bookmark_model_->AddURL(
|
| + parent, 0, base::ASCIIToUTF16("Some title"), GURL(BOOKMARK_URL));
|
| + const BookmarkNode* node3 = bookmark_model_->AddURL(
|
| + parent, 0, base::ASCIIToUTF16("Some title"), GURL(BOOKMARK_URL));
|
| + const BookmarkNode* node4 = bookmark_model_->AddURL(
|
| + parent, 0, base::ASCIIToUTF16("Some title"), GURL(BOOKMARK_URL));
|
| +
|
| + bookmark_model_->SetNodeMetaInfo(node1, "stars.id", "c_1");
|
| + bookmark_model_->SetNodeMetaInfo(node2, "stars.id", "c_2");
|
| + bookmark_model_->SetNodeMetaInfo(node3, "stars.id", "c_1");
|
| + bookmark_model_->SetNodeMetaInfo(node4, "stars.id", "c_1");
|
| + EXPECT_EQ("c_1", GetId(node1));
|
| + EXPECT_EQ("c_2", GetId(node2));
|
| + EXPECT_EQ("c_1", GetId(node3));
|
| + EXPECT_EQ("c_1", GetId(node4));
|
| +
|
| + model_.reset(new EnhancedBookmarkModel(bookmark_model_.get(), "v2.0"));
|
| +
|
| + EXPECT_EQ("c_2", GetId(node2));
|
| + EXPECT_EQ("", GetId(node1));
|
| + EXPECT_EQ("", GetId(node3));
|
| + EXPECT_EQ("", GetId(node4));
|
| + EXPECT_EQ("c_1", GetOldId(node1));
|
| + EXPECT_EQ("c_1", GetOldId(node3));
|
| + EXPECT_EQ("c_1", GetOldId(node4));
|
| + EXPECT_EQ("v2.0", GetVersion(node1));
|
| + EXPECT_EQ("v2.0", GetVersion(node3));
|
| + EXPECT_EQ("v2.0", GetVersion(node4));
|
| +}
|
|
|
| - model_->SetDescription(node, "foo");
|
| - std::string user_edit;
|
| - ASSERT_TRUE(node->GetMetaInfo("stars.userEdit", &user_edit));
|
| - EXPECT_EQ("true", user_edit);
|
| +// Verifies that duplicate nodes are reset if one is created.
|
| +TEST_F(EnhancedBookmarkModelTest, ResetDuplicateAddedNodes) {
|
| + BookmarkNode::MetaInfoMap meta_info;
|
| + meta_info["stars.id"] = "c_1";
|
| + const BookmarkNode* parent = bookmark_model_->other_node();
|
| +
|
| + const BookmarkNode* node1 =
|
| + bookmark_model_->AddURLWithCreationTimeAndMetaInfo(
|
| + parent,
|
| + 0,
|
| + base::ASCIIToUTF16("Some title"),
|
| + GURL(BOOKMARK_URL),
|
| + base::Time::Now(),
|
| + &meta_info);
|
| + EXPECT_EQ("c_1", GetId(node1));
|
| +
|
| + const BookmarkNode* node2 =
|
| + bookmark_model_->AddURLWithCreationTimeAndMetaInfo(
|
| + parent,
|
| + 0,
|
| + base::ASCIIToUTF16("Some title"),
|
| + GURL(BOOKMARK_URL),
|
| + base::Time::Now(),
|
| + &meta_info);
|
| + EXPECT_EQ("", GetId(node1));
|
| + EXPECT_EQ("", GetId(node2));
|
| + EXPECT_EQ("c_1", GetOldId(node1));
|
| + EXPECT_EQ("c_1", GetOldId(node2));
|
| + EXPECT_EQ("v1.0", GetVersion(node1));
|
| + EXPECT_EQ("v1.0", GetVersion(node2));
|
| +}
|
| +
|
| +// Verifies that duplicate nodes are reset if an id is changed to a duplicate
|
| +// value.
|
| +TEST_F(EnhancedBookmarkModelTest, ResetDuplicateChangedNodes) {
|
| + const BookmarkNode* node1 = AddBookmark();
|
| + const BookmarkNode* node2 = AddBookmark();
|
| +
|
| + bookmark_model_->SetNodeMetaInfo(node1, "stars.id", "c_1");
|
| + EXPECT_EQ("c_1", GetId(node1));
|
| +
|
| + bookmark_model_->SetNodeMetaInfo(node2, "stars.id", "c_1");
|
| + EXPECT_EQ("", GetId(node1));
|
| + EXPECT_EQ("", GetId(node2));
|
| + EXPECT_EQ("c_1", GetOldId(node1));
|
| + EXPECT_EQ("c_1", GetOldId(node2));
|
| + EXPECT_EQ("v1.0", GetVersion(node1));
|
| + EXPECT_EQ("v1.0", GetVersion(node2));
|
| }
|
|
|
| } // namespace
|
|
|