Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / bookmarks / bookmark_api_helpers_unittest.cc
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.
4
5 #include "chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.h"
6
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"
15
16 namespace extensions {
17
18 namespace keys = bookmark_api_constants;
19 using api::bookmarks::BookmarkTreeNode;
20
21 namespace bookmark_api_helpers {
22
23 class ExtensionBookmarksTest : public testing::Test {
24  public:
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"));
35     model_->AddURL(
36         folder_, 0, base::ASCIIToUTF16("Digg"), GURL("http://reddit.com"));
37     model_->AddURL(
38         folder_, 0, base::ASCIIToUTF16("CNet"), GURL("http://cnet.com"));
39   }
40
41   test::TestBookmarkClient client_;
42   scoped_ptr<BookmarkModel> model_;
43   const BookmarkNode* folder_;
44 };
45 TEST_F(ExtensionBookmarksTest, GetFullTreeFromRoot) {
46   scoped_ptr<BookmarkTreeNode> tree(
47       GetBookmarkTreeNode(model_->other_node(),
48                           true,    // Recurse.
49                           false));  // Not only folders.
50   ASSERT_EQ(3U, tree->children->size());
51 }
52
53 TEST_F(ExtensionBookmarksTest, GetFoldersOnlyFromRoot) {
54   scoped_ptr<BookmarkTreeNode> tree(
55       GetBookmarkTreeNode(model_->other_node(),
56                           true,   // Recurse.
57                           true));  // Only folders.
58   ASSERT_EQ(1U, tree->children->size());
59 }
60
61 TEST_F(ExtensionBookmarksTest, GetSubtree) {
62   scoped_ptr<BookmarkTreeNode> tree(
63       GetBookmarkTreeNode(folder_,
64                           true,    // Recurse.
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);
70 }
71
72 TEST_F(ExtensionBookmarksTest, GetSubtreeFoldersOnly) {
73   scoped_ptr<BookmarkTreeNode> tree(
74       GetBookmarkTreeNode(folder_,
75                           true,   // Recurse.
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);
81 }
82
83 }  // namespace bookmark_api_helpers
84 }  // namespace extensions