#include "chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.h"
#include "base/memory/scoped_ptr.h"
+#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
class ExtensionBookmarksTest : public testing::Test {
public:
ExtensionBookmarksTest()
- : client_(NULL), model_(NULL), node_(NULL), folder_(NULL) {}
+ : client_(NULL), model_(NULL), node_(NULL), node2_(NULL), folder_(NULL) {}
virtual void SetUp() OVERRIDE {
profile_.CreateBookmarkModel(false);
node_ = model_->AddURL(model_->other_node(), 0, base::ASCIIToUTF16("Digg"),
GURL("http://www.reddit.com"));
+ model_->SetNodeMetaInfo(node_, "some_key1", "some_value1");
+ model_->SetNodeMetaInfo(node_, "some_key2", "some_value2");
model_->AddURL(model_->other_node(), 0, base::ASCIIToUTF16("News"),
GURL("http://www.foxnews.com"));
folder_ = model_->AddFolder(
model_->other_node(), 0, base::ASCIIToUTF16("outer folder"));
+ model_->SetNodeMetaInfo(folder_, "some_key1", "some_value1");
model_->AddFolder(folder_, 0, base::ASCIIToUTF16("inner folder 1"));
model_->AddFolder(folder_, 0, base::ASCIIToUTF16("inner folder 2"));
- model_->AddURL(
+ node2_ = model_->AddURL(
folder_, 0, base::ASCIIToUTF16("Digg"), GURL("http://reddit.com"));
+ model_->SetNodeMetaInfo(node2_, "some_key2", "some_value2");
model_->AddURL(
folder_, 0, base::ASCIIToUTF16("CNet"), GURL("http://cnet.com"));
}
ChromeBookmarkClient* client_;
BookmarkModel* model_;
const BookmarkNode* node_;
+ const BookmarkNode* node2_;
const BookmarkNode* folder_;
};
EXPECT_EQ(2, model_->other_node()->child_count());
}
+TEST_F(ExtensionBookmarksTest, GetMetaInfo) {
+ base::DictionaryValue id_to_meta_info_map;
+ GetMetaInfo(*model_->other_node(), &id_to_meta_info_map);
+ EXPECT_EQ(8u, id_to_meta_info_map.size());
+
+ // Verify top level node.
+ const base::Value* value = NULL;
+ EXPECT_TRUE(id_to_meta_info_map.Get(
+ base::Int64ToString(model_->other_node()->id()), &value));
+ ASSERT_TRUE(NULL != value);
+ const base::DictionaryValue* dictionary_value = NULL;
+ EXPECT_TRUE(value->GetAsDictionary(&dictionary_value));
+ ASSERT_TRUE(NULL != dictionary_value);
+ EXPECT_EQ(0u, dictionary_value->size());
+
+ // Verify bookmark with two meta info key/value pairs.
+ value = NULL;
+ EXPECT_TRUE(id_to_meta_info_map.Get(
+ base::Int64ToString(node_->id()), &value));
+ ASSERT_TRUE(NULL != value);
+ dictionary_value = NULL;
+ EXPECT_TRUE(value->GetAsDictionary(&dictionary_value));
+ ASSERT_TRUE(NULL != dictionary_value);
+ EXPECT_EQ(2u, dictionary_value->size());
+ std::string string_value;
+ EXPECT_TRUE(dictionary_value->GetString("some_key1", &string_value));
+ EXPECT_EQ("some_value1", string_value);
+ EXPECT_TRUE(dictionary_value->GetString("some_key2", &string_value));
+ EXPECT_EQ("some_value2", string_value);
+
+ // Verify folder with one meta info key/value pair.
+ value = NULL;
+ EXPECT_TRUE(id_to_meta_info_map.Get(
+ base::Int64ToString(folder_->id()), &value));
+ ASSERT_TRUE(NULL != value);
+ dictionary_value = NULL;
+ EXPECT_TRUE(value->GetAsDictionary(&dictionary_value));
+ ASSERT_TRUE(NULL != dictionary_value);
+ EXPECT_EQ(1u, dictionary_value->size());
+ EXPECT_TRUE(dictionary_value->GetString("some_key1", &string_value));
+ EXPECT_EQ("some_value1", string_value);
+
+ // Verify bookmark in a subfolder with one meta info key/value pairs.
+ value = NULL;
+ EXPECT_TRUE(id_to_meta_info_map.Get(
+ base::Int64ToString(node2_->id()), &value));
+ ASSERT_TRUE(NULL != value);
+ dictionary_value = NULL;
+ EXPECT_TRUE(value->GetAsDictionary(&dictionary_value));
+ ASSERT_TRUE(NULL != dictionary_value);
+ EXPECT_EQ(1u, dictionary_value->size());
+ string_value.clear();
+ EXPECT_FALSE(dictionary_value->GetString("some_key1", &string_value));
+ EXPECT_EQ("", string_value);
+ EXPECT_TRUE(dictionary_value->GetString("some_key2", &string_value));
+ EXPECT_EQ("some_value2", string_value);
+
+}
+
} // namespace bookmark_api_helpers
} // namespace extensions