Home | History | Annotate | Download | only in bookmarks
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/bookmarks/bookmark_expanded_state_tracker.h"
      6 
      7 #include "base/strings/utf_string_conversions.h"
      8 #include "chrome/browser/bookmarks/bookmark_model.h"
      9 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
     10 #include "chrome/test/base/testing_profile.h"
     11 #include "chrome/test/base/ui_test_utils.h"
     12 #include "content/public/test/test_browser_thread_bundle.h"
     13 #include "testing/gtest/include/gtest/gtest.h"
     14 
     15 class BookmarkExpandedStateTrackerTest : public testing::Test {
     16  public:
     17   BookmarkExpandedStateTrackerTest();
     18 
     19   virtual void SetUp() OVERRIDE;
     20   virtual void TearDown() OVERRIDE;
     21 
     22  protected:
     23   BookmarkModel* GetModel();
     24 
     25  private:
     26   scoped_ptr<TestingProfile> profile_;
     27   content::TestBrowserThreadBundle thread_bundle_;
     28 
     29   DISALLOW_COPY_AND_ASSIGN(BookmarkExpandedStateTrackerTest);
     30 };
     31 
     32 BookmarkExpandedStateTrackerTest::BookmarkExpandedStateTrackerTest() {}
     33 
     34 void BookmarkExpandedStateTrackerTest::SetUp() {
     35   profile_.reset(new TestingProfile);
     36   profile_->CreateBookmarkModel(true);
     37   ui_test_utils::WaitForBookmarkModelToLoad(GetModel());
     38 }
     39 
     40 BookmarkModel* BookmarkExpandedStateTrackerTest::GetModel() {
     41   return BookmarkModelFactory::GetForProfile(profile_.get());
     42 }
     43 
     44 void BookmarkExpandedStateTrackerTest::TearDown() {
     45   profile_.reset(NULL);
     46 }
     47 
     48 // Various assertions for SetExpandedNodes.
     49 TEST_F(BookmarkExpandedStateTrackerTest, SetExpandedNodes) {
     50   BookmarkModel* model = GetModel();
     51   BookmarkExpandedStateTracker* tracker = model->expanded_state_tracker();
     52 
     53   // Should start out initially empty.
     54   EXPECT_TRUE(tracker->GetExpandedNodes().empty());
     55 
     56   BookmarkExpandedStateTracker::Nodes nodes;
     57   nodes.insert(model->bookmark_bar_node());
     58   tracker->SetExpandedNodes(nodes);
     59   EXPECT_EQ(nodes, tracker->GetExpandedNodes());
     60 
     61   // Add a folder and mark it expanded.
     62   const BookmarkNode* n1 = model->AddFolder(model->bookmark_bar_node(), 0,
     63                                             ASCIIToUTF16("x"));
     64   nodes.insert(n1);
     65   tracker->SetExpandedNodes(nodes);
     66   EXPECT_EQ(nodes, tracker->GetExpandedNodes());
     67 
     68   // Remove the folder, which should remove it from the list of expanded nodes.
     69   model->Remove(model->bookmark_bar_node(), 0);
     70   nodes.erase(n1);
     71   n1 = NULL;
     72   EXPECT_EQ(nodes, tracker->GetExpandedNodes());
     73 }
     74 
     75 TEST_F(BookmarkExpandedStateTrackerTest, RemoveAll) {
     76   BookmarkModel* model = GetModel();
     77   BookmarkExpandedStateTracker* tracker = model->expanded_state_tracker();
     78 
     79   // Add a folder and mark it expanded.
     80   const BookmarkNode* n1 =
     81       model->AddFolder(model->bookmark_bar_node(), 0, ASCIIToUTF16("x"));
     82   BookmarkExpandedStateTracker::Nodes nodes;
     83   nodes.insert(n1);
     84   tracker->SetExpandedNodes(nodes);
     85   // Verify that the node is present.
     86   EXPECT_EQ(nodes, tracker->GetExpandedNodes());
     87   // Call remove all.
     88   model->RemoveAll();
     89   // Verify node is not present.
     90   EXPECT_TRUE(tracker->GetExpandedNodes().empty());
     91 }
     92