OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/bookmarks/bookmark_extension_helpers.h" | 5 #include "chrome/browser/bookmarks/bookmark_extension_helpers.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "base/values.h" | 9 #include "base/values.h" |
10 #include "chrome/browser/bookmarks/bookmark_extension_api_constants.h" | 10 #include "chrome/browser/bookmarks/bookmark_extension_api_constants.h" |
11 #include "chrome/browser/bookmarks/bookmark_model.h" | 11 #include "chrome/browser/bookmarks/bookmark_model.h" |
| 12 #include "chrome/common/extensions/api/bookmarks.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
13 | 14 |
14 namespace keys = bookmark_extension_api_constants; | 15 namespace keys = bookmark_extension_api_constants; |
15 | 16 |
| 17 using extensions::api::bookmarks::BookmarkTreeNode; |
| 18 |
16 class ExtensionBookmarksTest : public testing::Test { | 19 class ExtensionBookmarksTest : public testing::Test { |
17 public: | 20 public: |
18 virtual void SetUp() OVERRIDE { | 21 virtual void SetUp() OVERRIDE { |
19 model_.reset(new BookmarkModel(NULL)); | 22 model_.reset(new BookmarkModel(NULL)); |
20 model_->AddURL(model_->other_node(), 0, ASCIIToUTF16("Digg"), | 23 model_->AddURL(model_->other_node(), 0, ASCIIToUTF16("Digg"), |
21 GURL("http://www.reddit.com")); | 24 GURL("http://www.reddit.com")); |
22 model_->AddURL(model_->other_node(), 0, ASCIIToUTF16("News"), | 25 model_->AddURL(model_->other_node(), 0, ASCIIToUTF16("News"), |
23 GURL("http://www.foxnews.com")); | 26 GURL("http://www.foxnews.com")); |
24 folder_ = model_->AddFolder( | 27 folder_ = model_->AddFolder( |
25 model_->other_node(), 0, ASCIIToUTF16("outer folder")); | 28 model_->other_node(), 0, ASCIIToUTF16("outer folder")); |
26 model_->AddFolder(folder_, 0, ASCIIToUTF16("inner folder 1")); | 29 model_->AddFolder(folder_, 0, ASCIIToUTF16("inner folder 1")); |
27 model_->AddFolder(folder_, 0, ASCIIToUTF16("inner folder 2")); | 30 model_->AddFolder(folder_, 0, ASCIIToUTF16("inner folder 2")); |
28 model_->AddURL(folder_, 0, ASCIIToUTF16("Digg"), GURL("http://reddit.com")); | 31 model_->AddURL(folder_, 0, ASCIIToUTF16("Digg"), GURL("http://reddit.com")); |
29 model_->AddURL(folder_, 0, ASCIIToUTF16("CNet"), GURL("http://cnet.com")); | 32 model_->AddURL(folder_, 0, ASCIIToUTF16("CNet"), GURL("http://cnet.com")); |
30 } | 33 } |
31 | 34 |
32 scoped_ptr<BookmarkModel> model_; | 35 scoped_ptr<BookmarkModel> model_; |
33 const BookmarkNode* folder_; | 36 const BookmarkNode* folder_; |
34 }; | 37 }; |
35 TEST_F(ExtensionBookmarksTest, GetFullTreeFromRoot) { | 38 TEST_F(ExtensionBookmarksTest, GetFullTreeFromRoot) { |
36 scoped_ptr<DictionaryValue> tree( | 39 scoped_ptr<BookmarkTreeNode> tree( |
37 bookmark_extension_helpers::GetNodeDictionary( | 40 bookmark_extension_helpers::GetBookmarkTreeNode( |
38 model_->other_node(), | 41 model_->other_node(), |
39 true, // Recurse. | 42 true, // Recurse. |
40 false)); // Not only folders. | 43 false)); // Not only folders. |
41 ListValue* children; | 44 ASSERT_EQ(3U, tree->children->size()); |
42 tree->GetList(keys::kChildrenKey, &children); | |
43 ASSERT_EQ(3U, children->GetSize()); | |
44 } | 45 } |
45 | 46 |
46 TEST_F(ExtensionBookmarksTest, GetFoldersOnlyFromRoot) { | 47 TEST_F(ExtensionBookmarksTest, GetFoldersOnlyFromRoot) { |
47 scoped_ptr<DictionaryValue> tree( | 48 scoped_ptr<BookmarkTreeNode> tree( |
48 bookmark_extension_helpers::GetNodeDictionary( | 49 bookmark_extension_helpers::GetBookmarkTreeNode( |
49 model_->other_node(), | 50 model_->other_node(), |
50 true, // Recurse. | 51 true, // Recurse. |
51 true)); // Only folders. | 52 true)); // Only folders. |
52 ListValue* children; | 53 ASSERT_EQ(1U, tree->children->size()); |
53 tree->GetList(keys::kChildrenKey, &children); | |
54 ASSERT_EQ(1U, children->GetSize()); | |
55 } | 54 } |
56 | 55 |
57 TEST_F(ExtensionBookmarksTest, GetSubtree) { | 56 TEST_F(ExtensionBookmarksTest, GetSubtree) { |
58 scoped_ptr<DictionaryValue> tree( | 57 scoped_ptr<BookmarkTreeNode> tree( |
59 bookmark_extension_helpers::GetNodeDictionary( | 58 bookmark_extension_helpers::GetBookmarkTreeNode( |
60 folder_, | 59 folder_, |
61 true, // Recurse. | 60 true, // Recurse. |
62 false)); // Not only folders. | 61 false)); // Not only folders. |
63 ListValue* children; | 62 ASSERT_EQ(4U, tree->children->size()); |
64 tree->GetList(keys::kChildrenKey, &children); | 63 linked_ptr<BookmarkTreeNode> digg = tree->children->at(1); |
65 ASSERT_EQ(4U, children->GetSize()); | 64 ASSERT_TRUE(digg.get()); |
66 DictionaryValue* digg; | 65 ASSERT_EQ("Digg", digg->title); |
67 ASSERT_TRUE(children->GetDictionary(1, &digg)); | |
68 std::string title; | |
69 digg->GetString(keys::kTitleKey, &title); | |
70 ASSERT_EQ("Digg", title); | |
71 } | 66 } |
72 | 67 |
73 TEST_F(ExtensionBookmarksTest, GetSubtreeFoldersOnly) { | 68 TEST_F(ExtensionBookmarksTest, GetSubtreeFoldersOnly) { |
74 scoped_ptr<DictionaryValue> tree( | 69 scoped_ptr<BookmarkTreeNode> tree( |
75 bookmark_extension_helpers::GetNodeDictionary( | 70 bookmark_extension_helpers::GetBookmarkTreeNode( |
76 folder_, | 71 folder_, |
77 true, // Recurse. | 72 true, // Recurse. |
78 true)); // Only folders. | 73 true)); // Only folders. |
79 ListValue* children; | 74 ASSERT_EQ(2U, tree->children->size()); |
80 tree->GetList(keys::kChildrenKey, &children); | 75 linked_ptr<BookmarkTreeNode> inner_folder = tree->children->at(1); |
81 ASSERT_EQ(2U, children->GetSize()); | 76 ASSERT_TRUE(inner_folder.get()); |
82 DictionaryValue* inner_folder; | 77 ASSERT_EQ("inner folder 1", inner_folder->title); |
83 ASSERT_TRUE(children->GetDictionary(1, &inner_folder)); | |
84 std::string title; | |
85 inner_folder->GetString(keys::kTitleKey, &title); | |
86 ASSERT_EQ("inner folder 1", title); | |
87 } | 78 } |
OLD | NEW |