enhanced_bookmark_utils_unittest.cc revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
1// Copyright 2014 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 "base/base64.h"
6#include "base/strings/utf_string_conversions.h"
7#include "components/bookmarks/browser/bookmark_model.h"
8#include "components/bookmarks/test/test_bookmark_client.h"
9#include "components/enhanced_bookmarks/enhanced_bookmark_utils.h"
10#include "testing/gtest/include/gtest/gtest.h"
11
12namespace {
13
14const GURL bookmark_url("http://example.com/index.html");
15
16class EnhancedBookmarkUtilsTest : public testing::Test {
17 public:
18  EnhancedBookmarkUtilsTest() {}
19  virtual ~EnhancedBookmarkUtilsTest() {}
20
21 protected:
22  DISALLOW_COPY_AND_ASSIGN(EnhancedBookmarkUtilsTest);
23
24  // Adds a bookmark as the subnode at index 0 to other_node.
25  // |name| should be ASCII encoded.
26  // Returns the newly added bookmark.
27  const BookmarkNode* AddBookmark(BookmarkModel* model, std::string name) {
28    return model->AddURL(model->other_node(),
29                         0,  // index.
30                         base::ASCIIToUTF16(name),
31                         bookmark_url);
32  }
33};
34
35TEST_F(EnhancedBookmarkUtilsTest, TestBookmarkSearch) {
36  test::TestBookmarkClient bookmark_client;
37  scoped_ptr<BookmarkModel> bookmark_model(bookmark_client.CreateModel(false));
38  const BookmarkNode* node1 = AddBookmark(bookmark_model.get(), "john hopkins");
39  const BookmarkNode* node2 = AddBookmark(bookmark_model.get(), "JohN hopkins");
40  const BookmarkNode* node3 = AddBookmark(bookmark_model.get(), "katy perry");
41  const BookmarkNode* node4 = AddBookmark(bookmark_model.get(), "lil'john13");
42  const BookmarkNode* node5 = AddBookmark(bookmark_model.get(), "jo hn");
43
44  std::vector<const BookmarkNode*> result =
45      enhanced_bookmark_utils::FindBookmarksWithQuery(bookmark_model.get(),
46                                                      "john");
47  ASSERT_EQ(result.size(), 3u);
48
49  CHECK(std::find(result.begin(), result.end(), node1) != result.end());
50  CHECK(std::find(result.begin(), result.end(), node2) != result.end());
51  CHECK(std::find(result.begin(), result.end(), node4) != result.end());
52
53  CHECK(std::find(result.begin(), result.end(), node3) == result.end());
54  CHECK(std::find(result.begin(), result.end(), node5) == result.end());
55};
56
57}  // namespace
58