Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / bookmarks / bookmark_api_helpers_unittest.cc
index 79ad3de..fc52a53 100644 (file)
@@ -5,6 +5,7 @@
 #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"
@@ -28,7 +29,7 @@ namespace bookmark_api_helpers {
 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);
@@ -38,14 +39,18 @@ class ExtensionBookmarksTest : public testing::Test {
 
     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"));
   }
@@ -55,6 +60,7 @@ class ExtensionBookmarksTest : public testing::Test {
   ChromeBookmarkClient* client_;
   BookmarkModel* model_;
   const BookmarkNode* node_;
+  const BookmarkNode* node2_;
   const BookmarkNode* folder_;
 };
 
@@ -167,5 +173,64 @@ TEST_F(ExtensionBookmarksTest, RemoveNodeRecursive) {
   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