OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/file_util.h" | 5 #include "base/file_util.h" |
6 #include "base/path_service.h" | 6 #include "base/path_service.h" |
7 #include "base/scoped_temp_dir.h" | 7 #include "base/scoped_temp_dir.h" |
8 #include "base/stringprintf.h" | 8 #include "base/stringprintf.h" |
9 #include "base/time.h" | 9 #include "base/time.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
11 #include "chrome/browser/autocomplete/shortcuts_provider_shortcut.h" | |
12 #include "chrome/browser/history/shortcuts_database.h" | 11 #include "chrome/browser/history/shortcuts_database.h" |
13 #include "chrome/common/guid.h" | 12 #include "chrome/common/guid.h" |
14 #include "sql/statement.h" | 13 #include "sql/statement.h" |
15 | 14 |
16 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
17 | 16 |
18 using base::Time; | |
19 using base::TimeDelta; | |
20 using shortcuts_provider::Shortcut; | |
21 using shortcuts_provider::ShortcutMap; | |
22 | |
23 namespace history { | 17 namespace history { |
24 | 18 |
25 struct ShortcutsDatabaseTestInfo { | 19 struct ShortcutsDatabaseTestInfo { |
26 std::string guid; | 20 std::string guid; |
27 std::string url; | 21 std::string url; |
28 std::string title; // The text that orginally was searched for. | 22 std::string title; // The text that orginally was searched for. |
29 std::string contents; | 23 std::string contents; |
30 std::string contents_class; | 24 std::string contents_class; |
31 std::string description; | 25 std::string description; |
32 std::string description_class; | 26 std::string description_class; |
(...skipping 14 matching lines...) Expand all Loading... |
47 }; | 41 }; |
48 | 42 |
49 class ShortcutsDatabaseTest : public testing::Test { | 43 class ShortcutsDatabaseTest : public testing::Test { |
50 public: | 44 public: |
51 void SetUp(); | 45 void SetUp(); |
52 void TearDown(); | 46 void TearDown(); |
53 | 47 |
54 void ClearDB(); | 48 void ClearDB(); |
55 size_t CountRecords() const; | 49 size_t CountRecords() const; |
56 | 50 |
57 Shortcut ShortcutFromTestInfo(const ShortcutsDatabaseTestInfo& info); | 51 ShortcutsBackend::Shortcut ShortcutFromTestInfo( |
| 52 const ShortcutsDatabaseTestInfo& info); |
58 | 53 |
59 void AddAll(); | 54 void AddAll(); |
60 | 55 |
61 ScopedTempDir temp_dir_; | 56 ScopedTempDir temp_dir_; |
62 scoped_refptr<ShortcutsDatabase> db_; | 57 scoped_refptr<ShortcutsDatabase> db_; |
63 }; | 58 }; |
64 | 59 |
65 void ShortcutsDatabaseTest::SetUp() { | 60 void ShortcutsDatabaseTest::SetUp() { |
66 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 61 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
67 db_ = new ShortcutsDatabase(temp_dir_.path()); | 62 db_ = new ShortcutsDatabase(temp_dir_.path()); |
(...skipping 11 matching lines...) Expand all Loading... |
79 EXPECT_TRUE(s.Run()); | 74 EXPECT_TRUE(s.Run()); |
80 } | 75 } |
81 | 76 |
82 size_t ShortcutsDatabaseTest::CountRecords() const { | 77 size_t ShortcutsDatabaseTest::CountRecords() const { |
83 sql::Statement s(db_->db_.GetUniqueStatement( | 78 sql::Statement s(db_->db_.GetUniqueStatement( |
84 "SELECT count(*) FROM omni_box_shortcuts")); | 79 "SELECT count(*) FROM omni_box_shortcuts")); |
85 EXPECT_TRUE(s.Step()); | 80 EXPECT_TRUE(s.Step()); |
86 return static_cast<size_t>(s.ColumnInt(0)); | 81 return static_cast<size_t>(s.ColumnInt(0)); |
87 } | 82 } |
88 | 83 |
89 Shortcut ShortcutsDatabaseTest::ShortcutFromTestInfo( | 84 ShortcutsBackend::Shortcut ShortcutsDatabaseTest::ShortcutFromTestInfo( |
90 const ShortcutsDatabaseTestInfo& info) { | 85 const ShortcutsDatabaseTestInfo& info) { |
91 Time visit_time = Time::Now() - TimeDelta::FromDays(info.days_from_now); | 86 return ShortcutsBackend::Shortcut(info.guid, ASCIIToUTF16(info.title), |
92 return Shortcut(info.guid, | 87 GURL(info.url), ASCIIToUTF16(info.contents), |
93 ASCIIToUTF16(info.title), | 88 AutocompleteMatch::ClassificationsFromString(info.contents_class), |
94 ASCIIToUTF16(info.url), | 89 ASCIIToUTF16(info.description), |
95 ASCIIToUTF16(info.contents), | 90 AutocompleteMatch::ClassificationsFromString(info.description_class), |
96 ASCIIToUTF16(info.contents_class), | 91 base::Time::Now() - base::TimeDelta::FromDays(info.days_from_now), |
97 ASCIIToUTF16(info.description), | 92 info.typed_count); |
98 ASCIIToUTF16(info.description_class), | |
99 visit_time.ToInternalValue(), | |
100 info.typed_count); | |
101 } | 93 } |
102 | 94 |
103 void ShortcutsDatabaseTest::AddAll() { | 95 void ShortcutsDatabaseTest::AddAll() { |
104 ClearDB(); | 96 ClearDB(); |
105 for (size_t i = 0; i < arraysize(shortcut_test_db); ++i) { | 97 for (size_t i = 0; i < arraysize(shortcut_test_db); ++i) { |
106 db_->AddShortcut(ShortcutFromTestInfo(shortcut_test_db[i])); | 98 db_->AddShortcut(ShortcutFromTestInfo(shortcut_test_db[i])); |
107 } | 99 } |
108 EXPECT_EQ(arraysize(shortcut_test_db), CountRecords()); | 100 EXPECT_EQ(arraysize(shortcut_test_db), CountRecords()); |
109 } | 101 } |
110 | 102 |
111 TEST_F(ShortcutsDatabaseTest, AddShortcut) { | 103 TEST_F(ShortcutsDatabaseTest, AddShortcut) { |
112 ClearDB(); | 104 ClearDB(); |
113 EXPECT_EQ(0U, CountRecords()); | 105 EXPECT_EQ(0U, CountRecords()); |
114 EXPECT_TRUE(db_->AddShortcut(ShortcutFromTestInfo(shortcut_test_db[0]))); | 106 EXPECT_TRUE(db_->AddShortcut(ShortcutFromTestInfo(shortcut_test_db[0]))); |
115 EXPECT_EQ(1U, CountRecords()); | 107 EXPECT_EQ(1U, CountRecords()); |
116 EXPECT_TRUE(db_->AddShortcut(ShortcutFromTestInfo(shortcut_test_db[1]))); | 108 EXPECT_TRUE(db_->AddShortcut(ShortcutFromTestInfo(shortcut_test_db[1]))); |
117 EXPECT_EQ(2U, CountRecords()); | 109 EXPECT_EQ(2U, CountRecords()); |
118 EXPECT_TRUE(db_->AddShortcut(ShortcutFromTestInfo(shortcut_test_db[2]))); | 110 EXPECT_TRUE(db_->AddShortcut(ShortcutFromTestInfo(shortcut_test_db[2]))); |
119 EXPECT_EQ(3U, CountRecords()); | 111 EXPECT_EQ(3U, CountRecords()); |
120 } | 112 } |
121 | 113 |
122 TEST_F(ShortcutsDatabaseTest, UpdateShortcut) { | 114 TEST_F(ShortcutsDatabaseTest, UpdateShortcut) { |
123 AddAll(); | 115 AddAll(); |
124 Shortcut shortcut(ShortcutFromTestInfo(shortcut_test_db[1])); | 116 ShortcutsBackend::Shortcut shortcut( |
| 117 ShortcutFromTestInfo(shortcut_test_db[1])); |
125 shortcut.contents = ASCIIToUTF16("gro.todhsals"); | 118 shortcut.contents = ASCIIToUTF16("gro.todhsals"); |
126 EXPECT_TRUE(db_->UpdateShortcut(shortcut)); | 119 EXPECT_TRUE(db_->UpdateShortcut(shortcut)); |
127 std::map<std::string, Shortcut> shortcuts; | 120 ShortcutsDatabase::GuidToShortcutMap shortcuts; |
128 EXPECT_TRUE(db_->LoadShortcuts(&shortcuts)); | 121 EXPECT_TRUE(db_->LoadShortcuts(&shortcuts)); |
129 std::map<std::string, Shortcut>::iterator it = shortcuts.find(shortcut.id); | 122 ShortcutsDatabase::GuidToShortcutMap::iterator it = |
| 123 shortcuts.find(shortcut.id); |
130 EXPECT_TRUE(it != shortcuts.end()); | 124 EXPECT_TRUE(it != shortcuts.end()); |
131 EXPECT_TRUE(it->second.contents == shortcut.contents); | 125 EXPECT_TRUE(it->second.contents == shortcut.contents); |
132 } | 126 } |
133 | 127 |
134 TEST_F(ShortcutsDatabaseTest, DeleteShortcutsWithIds) { | 128 TEST_F(ShortcutsDatabaseTest, DeleteShortcutsWithIds) { |
135 AddAll(); | 129 AddAll(); |
136 std::vector<std::string> shortcut_ids; | 130 std::vector<std::string> shortcut_ids; |
137 shortcut_ids.push_back(shortcut_test_db[0].guid); | 131 shortcut_ids.push_back(shortcut_test_db[0].guid); |
138 shortcut_ids.push_back(shortcut_test_db[2].guid); | 132 shortcut_ids.push_back(shortcut_test_db[2].guid); |
139 EXPECT_TRUE(db_->DeleteShortcutsWithIds(shortcut_ids)); | 133 EXPECT_TRUE(db_->DeleteShortcutsWithIds(shortcut_ids)); |
140 EXPECT_EQ(arraysize(shortcut_test_db) - 2, CountRecords()); | 134 EXPECT_EQ(arraysize(shortcut_test_db) - 2, CountRecords()); |
141 | 135 |
142 std::map<std::string, Shortcut> shortcuts; | 136 ShortcutsDatabase::GuidToShortcutMap shortcuts; |
143 EXPECT_TRUE(db_->LoadShortcuts(&shortcuts)); | 137 EXPECT_TRUE(db_->LoadShortcuts(&shortcuts)); |
144 | 138 |
145 std::map<std::string, Shortcut>::iterator it = | 139 ShortcutsDatabase::GuidToShortcutMap::iterator it = |
146 shortcuts.find(shortcut_test_db[0].guid); | 140 shortcuts.find(shortcut_test_db[0].guid); |
147 EXPECT_TRUE(it == shortcuts.end()); | 141 EXPECT_TRUE(it == shortcuts.end()); |
148 | 142 |
149 it = shortcuts.find(shortcut_test_db[1].guid); | 143 it = shortcuts.find(shortcut_test_db[1].guid); |
150 EXPECT_TRUE(it != shortcuts.end()); | 144 EXPECT_TRUE(it != shortcuts.end()); |
151 | 145 |
152 it = shortcuts.find(shortcut_test_db[2].guid); | 146 it = shortcuts.find(shortcut_test_db[2].guid); |
153 EXPECT_TRUE(it == shortcuts.end()); | 147 EXPECT_TRUE(it == shortcuts.end()); |
154 } | 148 } |
155 | 149 |
156 TEST_F(ShortcutsDatabaseTest, DeleteShortcutsWithUrl) { | 150 TEST_F(ShortcutsDatabaseTest, DeleteShortcutsWithUrl) { |
157 AddAll(); | 151 AddAll(); |
158 | 152 |
159 EXPECT_TRUE(db_->DeleteShortcutsWithUrl("http://slashdot.org/")); | 153 EXPECT_TRUE(db_->DeleteShortcutsWithUrl("http://slashdot.org/")); |
160 EXPECT_EQ(arraysize(shortcut_test_db) - 2, CountRecords()); | 154 EXPECT_EQ(arraysize(shortcut_test_db) - 2, CountRecords()); |
161 | 155 |
162 std::map<std::string, Shortcut> shortcuts; | 156 ShortcutsDatabase::GuidToShortcutMap shortcuts; |
163 EXPECT_TRUE(db_->LoadShortcuts(&shortcuts)); | 157 EXPECT_TRUE(db_->LoadShortcuts(&shortcuts)); |
164 | 158 |
165 std::map<std::string, Shortcut>::iterator it = | 159 ShortcutsDatabase::GuidToShortcutMap::iterator it = |
166 shortcuts.find(shortcut_test_db[0].guid); | 160 shortcuts.find(shortcut_test_db[0].guid); |
167 EXPECT_TRUE(it != shortcuts.end()); | 161 EXPECT_TRUE(it != shortcuts.end()); |
168 | 162 |
169 it = shortcuts.find(shortcut_test_db[1].guid); | 163 it = shortcuts.find(shortcut_test_db[1].guid); |
170 EXPECT_TRUE(it == shortcuts.end()); | 164 EXPECT_TRUE(it == shortcuts.end()); |
171 | 165 |
172 it = shortcuts.find(shortcut_test_db[2].guid); | 166 it = shortcuts.find(shortcut_test_db[2].guid); |
173 EXPECT_TRUE(it == shortcuts.end()); | 167 EXPECT_TRUE(it == shortcuts.end()); |
174 } | 168 } |
175 | 169 |
176 TEST_F(ShortcutsDatabaseTest, LoadShortcuts) { | 170 TEST_F(ShortcutsDatabaseTest, LoadShortcuts) { |
177 AddAll(); | 171 AddAll(); |
178 std::map<std::string, Shortcut> shortcuts; | 172 ShortcutsDatabase::GuidToShortcutMap shortcuts; |
179 EXPECT_TRUE(db_->LoadShortcuts(&shortcuts)); | 173 EXPECT_TRUE(db_->LoadShortcuts(&shortcuts)); |
180 | 174 |
181 for (size_t i = 0; i < arraysize(shortcut_test_db); ++i) { | 175 for (size_t i = 0; i < arraysize(shortcut_test_db); ++i) { |
182 SCOPED_TRACE(base::StringPrintf("Looking for shortcut #%d", | 176 SCOPED_TRACE(base::StringPrintf("Looking for shortcut #%d", |
183 static_cast<int>(i))); | 177 static_cast<int>(i))); |
184 EXPECT_TRUE(shortcuts.find(shortcut_test_db[i].guid) != shortcuts.end()); | 178 EXPECT_TRUE(shortcuts.find(shortcut_test_db[i].guid) != shortcuts.end()); |
185 } | 179 } |
186 } | 180 } |
187 | 181 |
188 TEST_F(ShortcutsDatabaseTest, DeleteAllShortcuts) { | 182 TEST_F(ShortcutsDatabaseTest, DeleteAllShortcuts) { |
189 AddAll(); | 183 AddAll(); |
190 std::map<std::string, Shortcut> shortcuts; | 184 ShortcutsDatabase::GuidToShortcutMap shortcuts; |
191 EXPECT_TRUE(db_->LoadShortcuts(&shortcuts)); | 185 EXPECT_TRUE(db_->LoadShortcuts(&shortcuts)); |
192 EXPECT_EQ(arraysize(shortcut_test_db), shortcuts.size()); | 186 EXPECT_EQ(arraysize(shortcut_test_db), shortcuts.size()); |
193 EXPECT_TRUE(db_->DeleteAllShortcuts()); | 187 EXPECT_TRUE(db_->DeleteAllShortcuts()); |
194 EXPECT_TRUE(db_->LoadShortcuts(&shortcuts)); | 188 EXPECT_TRUE(db_->LoadShortcuts(&shortcuts)); |
195 EXPECT_EQ(0U, shortcuts.size()); | 189 EXPECT_EQ(0U, shortcuts.size()); |
196 } | 190 } |
197 | 191 |
198 } // namespace history | 192 } // namespace history |
OLD | NEW |