| 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 |