• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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 "testing/gtest/include/gtest/gtest.h"
6 
7 #include "base/utf_string_conversions.h"
8 #include "base/values.h"
9 #include "chrome/browser/bookmarks/bookmark_model.h"
10 #include "chrome/browser/extensions/extension_bookmark_helpers.h"
11 #include "chrome/browser/extensions/extension_bookmarks_module_constants.h"
12 namespace keys = extension_bookmarks_module_constants;
13 
14 class ExtensionBookmarksTest : public testing::Test {
15  public:
SetUp()16   virtual void SetUp() {
17     model_.reset(new BookmarkModel(NULL));
18     model_->AddURL(model_->other_node(), 0, ASCIIToUTF16("Digg"),
19                      GURL("http://www.reddit.com"));
20     model_->AddURL(model_->other_node(), 0, ASCIIToUTF16("News"),
21                      GURL("http://www.foxnews.com"));
22     folder = model_->AddFolder(
23         model_->other_node(), 0, ASCIIToUTF16("outer folder"));
24     model_->AddFolder(folder, 0, ASCIIToUTF16("inner folder 1"));
25     model_->AddFolder(folder, 0, ASCIIToUTF16("inner folder 2"));
26     model_->AddURL(folder, 0, ASCIIToUTF16("Digg"), GURL("http://reddit.com"));
27     model_->AddURL(folder, 0, ASCIIToUTF16("CNet"), GURL("http://cnet.com"));
28   }
29 
30   scoped_ptr<BookmarkModel> model_;
31   const BookmarkNode* folder;
32 };
TEST_F(ExtensionBookmarksTest,GetFullTreeFromRoot)33 TEST_F(ExtensionBookmarksTest, GetFullTreeFromRoot) {
34   DictionaryValue* tree = extension_bookmark_helpers::GetNodeDictionary(
35       model_->other_node(),
36       true,    // Recurse.
37       false);  // Not only folders.
38   ListValue* children;
39   tree->GetList(keys::kChildrenKey, &children);
40   ASSERT_EQ(3U, children->GetSize());
41 }
42 
TEST_F(ExtensionBookmarksTest,GetFoldersOnlyFromRoot)43 TEST_F(ExtensionBookmarksTest, GetFoldersOnlyFromRoot) {
44   DictionaryValue* tree = extension_bookmark_helpers::GetNodeDictionary(
45       model_->other_node(),
46       true,   // Recurse.
47       true);  // Only folders.
48   ListValue* children;
49   tree->GetList(keys::kChildrenKey, &children);
50   ASSERT_EQ(1U, children->GetSize());
51 }
52 
TEST_F(ExtensionBookmarksTest,GetSubtree)53 TEST_F(ExtensionBookmarksTest, GetSubtree) {
54   DictionaryValue* tree = extension_bookmark_helpers::GetNodeDictionary(
55       folder,
56       true,    // Recurse.
57       false);  // Not only folders.
58   ListValue* children;
59   tree->GetList(keys::kChildrenKey, &children);
60   ASSERT_EQ(4U, children->GetSize());
61   DictionaryValue* digg;
62   ASSERT_TRUE(children->GetDictionary(1, &digg));
63   std::string title;
64   digg->GetString(keys::kTitleKey, &title);
65   ASSERT_EQ("Digg", title);
66 }
67 
TEST_F(ExtensionBookmarksTest,GetSubtreeFoldersOnly)68 TEST_F(ExtensionBookmarksTest, GetSubtreeFoldersOnly) {
69   DictionaryValue* tree = extension_bookmark_helpers::GetNodeDictionary(
70       folder,
71       true,   // Recurse.
72       true);  // Only folders.
73   ListValue* children;
74   tree->GetList(keys::kChildrenKey, &children);
75   ASSERT_EQ(2U, children->GetSize());
76   DictionaryValue* inner_folder;
77   ASSERT_TRUE(children->GetDictionary(1, &inner_folder));
78   std::string title;
79   inner_folder->GetString(keys::kTitleKey, &title);
80   ASSERT_EQ("inner folder 1", title);
81 }
82