1 // Copyright (c) 2012 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.
5 #include "chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.h"
7 #include "base/memory/scoped_ptr.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "base/values.h"
10 #include "chrome/browser/extensions/api/bookmarks/bookmark_api_constants.h"
11 #include "chrome/common/extensions/api/bookmarks.h"
12 #include "components/bookmarks/core/browser/bookmark_model.h"
13 #include "components/bookmarks/core/test/test_bookmark_client.h"
14 #include "testing/gtest/include/gtest/gtest.h"
16 namespace extensions {
18 namespace keys = bookmark_api_constants;
19 using api::bookmarks::BookmarkTreeNode;
21 namespace bookmark_api_helpers {
23 class ExtensionBookmarksTest : public testing::Test {
25 virtual void SetUp() OVERRIDE {
26 model_ = client_.CreateModel(false);
27 model_->AddURL(model_->other_node(), 0, base::ASCIIToUTF16("Digg"),
28 GURL("http://www.reddit.com"));
29 model_->AddURL(model_->other_node(), 0, base::ASCIIToUTF16("News"),
30 GURL("http://www.foxnews.com"));
31 folder_ = model_->AddFolder(
32 model_->other_node(), 0, base::ASCIIToUTF16("outer folder"));
33 model_->AddFolder(folder_, 0, base::ASCIIToUTF16("inner folder 1"));
34 model_->AddFolder(folder_, 0, base::ASCIIToUTF16("inner folder 2"));
36 folder_, 0, base::ASCIIToUTF16("Digg"), GURL("http://reddit.com"));
38 folder_, 0, base::ASCIIToUTF16("CNet"), GURL("http://cnet.com"));
41 test::TestBookmarkClient client_;
42 scoped_ptr<BookmarkModel> model_;
43 const BookmarkNode* folder_;
45 TEST_F(ExtensionBookmarksTest, GetFullTreeFromRoot) {
46 scoped_ptr<BookmarkTreeNode> tree(
47 GetBookmarkTreeNode(model_->other_node(),
49 false)); // Not only folders.
50 ASSERT_EQ(3U, tree->children->size());
53 TEST_F(ExtensionBookmarksTest, GetFoldersOnlyFromRoot) {
54 scoped_ptr<BookmarkTreeNode> tree(
55 GetBookmarkTreeNode(model_->other_node(),
57 true)); // Only folders.
58 ASSERT_EQ(1U, tree->children->size());
61 TEST_F(ExtensionBookmarksTest, GetSubtree) {
62 scoped_ptr<BookmarkTreeNode> tree(
63 GetBookmarkTreeNode(folder_,
65 false)); // Not only folders.
66 ASSERT_EQ(4U, tree->children->size());
67 linked_ptr<BookmarkTreeNode> digg = tree->children->at(1);
68 ASSERT_TRUE(digg.get());
69 ASSERT_EQ("Digg", digg->title);
72 TEST_F(ExtensionBookmarksTest, GetSubtreeFoldersOnly) {
73 scoped_ptr<BookmarkTreeNode> tree(
74 GetBookmarkTreeNode(folder_,
76 true)); // Only folders.
77 ASSERT_EQ(2U, tree->children->size());
78 linked_ptr<BookmarkTreeNode> inner_folder = tree->children->at(1);
79 ASSERT_TRUE(inner_folder.get());
80 ASSERT_EQ("inner folder 1", inner_folder->title);
83 } // namespace bookmark_api_helpers
84 } // namespace extensions