Index: chrome/browser/extensions/api/bookmarks/bookmark_api_helpers_unittest.cc |
diff --git a/chrome/browser/extensions/api/bookmarks/bookmark_api_helpers_unittest.cc b/chrome/browser/extensions/api/bookmarks/bookmark_api_helpers_unittest.cc |
index 5f49a8efea3ff9daba4c832e9fca51bb5d0cb20e..fef990f0d90aec2c204d2bfa4f4a39c29e27ba91 100644 |
--- a/chrome/browser/extensions/api/bookmarks/bookmark_api_helpers_unittest.cc |
+++ b/chrome/browser/extensions/api/bookmarks/bookmark_api_helpers_unittest.cc |
@@ -7,10 +7,14 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/values.h" |
+#include "chrome/browser/bookmarks/bookmark_model_factory.h" |
+#include "chrome/browser/bookmarks/chrome_bookmark_client.h" |
#include "chrome/browser/extensions/api/bookmarks/bookmark_api_constants.h" |
#include "chrome/common/extensions/api/bookmarks.h" |
+#include "chrome/test/base/testing_profile.h" |
#include "components/bookmarks/browser/bookmark_model.h" |
-#include "components/bookmarks/test/test_bookmark_client.h" |
+#include "components/bookmarks/test/bookmark_test_helpers.h" |
+#include "content/public/test/test_browser_thread_bundle.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace extensions { |
@@ -22,12 +26,19 @@ namespace bookmark_api_helpers { |
class ExtensionBookmarksTest : public testing::Test { |
public: |
+ ExtensionBookmarksTest() : client_(NULL), model_(NULL), folder_(NULL) {} |
+ |
virtual void SetUp() OVERRIDE { |
- model_ = client_.CreateModel(false); |
+ profile_.CreateBookmarkModel(false); |
+ client_ = |
+ BookmarkModelFactory::GetChromeBookmarkClientForProfile(&profile_); |
+ model_ = client_->model(); |
+ test::WaitForBookmarkModelToLoad(model_); |
+ |
model_->AddURL(model_->other_node(), 0, base::ASCIIToUTF16("Digg"), |
- GURL("http://www.reddit.com")); |
+ GURL("http://www.reddit.com")); |
model_->AddURL(model_->other_node(), 0, base::ASCIIToUTF16("News"), |
- GURL("http://www.foxnews.com")); |
+ GURL("http://www.foxnews.com")); |
folder_ = model_->AddFolder( |
model_->other_node(), 0, base::ASCIIToUTF16("outer folder")); |
model_->AddFolder(folder_, 0, base::ASCIIToUTF16("inner folder 1")); |
@@ -38,10 +49,13 @@ class ExtensionBookmarksTest : public testing::Test { |
folder_, 0, base::ASCIIToUTF16("CNet"), GURL("http://cnet.com")); |
} |
- test::TestBookmarkClient client_; |
- scoped_ptr<BookmarkModel> model_; |
+ content::TestBrowserThreadBundle thread_bundle_; |
+ TestingProfile profile_; |
+ ChromeBookmarkClient* client_; |
+ BookmarkModel* model_; |
const BookmarkNode* folder_; |
}; |
+ |
TEST_F(ExtensionBookmarksTest, GetFullTreeFromRoot) { |
scoped_ptr<BookmarkTreeNode> tree( |
GetBookmarkTreeNode(model_->other_node(), |
@@ -80,5 +94,42 @@ TEST_F(ExtensionBookmarksTest, GetSubtreeFoldersOnly) { |
ASSERT_EQ("inner folder 1", inner_folder->title); |
} |
+TEST_F(ExtensionBookmarksTest, RemoveNodeInvalidId) { |
+ int64 invalid_id = model_->next_node_id(); |
+ std::string error; |
+ EXPECT_FALSE(RemoveNode(client_, invalid_id, true, &error)); |
+ EXPECT_EQ(keys::kNoNodeError, error); |
+} |
+ |
+TEST_F(ExtensionBookmarksTest, RemoveNodePermanent) { |
+ std::string error; |
+ EXPECT_FALSE(RemoveNode(client_, model_->other_node()->id(), true, &error)); |
+ EXPECT_EQ(keys::kModifySpecialError, error); |
+} |
+ |
+TEST_F(ExtensionBookmarksTest, RemoveNodeManaged) { |
+ const BookmarkNode* managed_bookmark = |
+ model_->AddURL(client_->managed_node(), |
+ 0, |
+ base::ASCIIToUTF16("Chromium"), |
+ GURL("http://www.chromium.org")); |
+ std::string error; |
+ EXPECT_FALSE(RemoveNode(client_, managed_bookmark->id(), true, &error)); |
+ EXPECT_EQ(keys::kModifyManagedError, error); |
+} |
+ |
+TEST_F(ExtensionBookmarksTest, RemoveNodeNotRecursive) { |
+ std::string error; |
+ EXPECT_FALSE(RemoveNode(client_, folder_->id(), false, &error)); |
+ EXPECT_EQ(keys::kFolderNotEmptyError, error); |
+} |
+ |
+TEST_F(ExtensionBookmarksTest, RemoveNodeRecursive) { |
+ EXPECT_EQ(3, model_->other_node()->child_count()); |
+ std::string error; |
+ EXPECT_TRUE(RemoveNode(client_, folder_->id(), true, &error)); |
+ EXPECT_EQ(2, model_->other_node()->child_count()); |
+} |
+ |
} // namespace bookmark_api_helpers |
} // namespace extensions |