Index: chrome/browser/extensions/activity_database_unittest.cc |
=================================================================== |
--- chrome/browser/extensions/activity_database_unittest.cc (revision 0) |
+++ chrome/browser/extensions/activity_database_unittest.cc (revision 0) |
@@ -0,0 +1,95 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include <string> |
+#include "base/file_path.h" |
+#include "base/file_util.h" |
+#include "base/files/scoped_temp_dir.h" |
+#include "chrome/browser/extensions/activity_database.h" |
+#include "chrome/browser/extensions/blocked_actions.h" |
+#include "chrome/browser/extensions/manager_actions.h" |
+#include "chrome/browser/extensions/url_actions.h" |
+#include "sql/statement.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace extensions { |
+ |
+// Check that the database is initialized properly. |
+TEST(ActivityDatabaseTest, Init) { |
+ base::ScopedTempDir temp_dir; |
+ FilePath db_file; |
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
+ db_file = temp_dir.path().AppendASCII("ActivityInit.db"); |
+ file_util::Delete(db_file, false); |
+ |
+ ActivityDatabase* activity_db = new ActivityDatabase(); |
+ activity_db->AddRef(); |
+ ASSERT_EQ(sql::INIT_OK, activity_db->Init(db_file, NULL)); |
+ ASSERT_TRUE(activity_db->initialized()); |
+ activity_db->Release(); |
+ |
+ sql::Connection db; |
+ ASSERT_TRUE(db.Open(db_file)); |
+ ASSERT_TRUE(db.DoesTableExist(url_table_name_)); |
+ ASSERT_TRUE(db.DoesTableExist(blocked_table_name_)); |
+ ASSERT_TRUE(db.DoesTableExist(manager_table_name_)); |
+ db.Close(); |
+} |
+ |
+// Check that actions are recorded in the db. |
+TEST(ActivityDatabaseTest, RecordAction) { |
+ base::ScopedTempDir temp_dir; |
+ FilePath db_file; |
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
+ db_file = temp_dir.path().AppendASCII("ActivityRecord.db"); |
+ file_util::Delete(db_file, false); |
+ |
+ ActivityDatabase* activity_db = new ActivityDatabase(); |
+ activity_db->AddRef(); |
+ ASSERT_EQ(sql::INIT_OK, activity_db->Init(db_file, NULL)); |
+ scoped_refptr<ManagerAction> action = new ManagerAction( |
+ "punky", |
+ ManagerAction::READ, |
+ ManagerAction::BOOKMARK, |
+ "brewster", |
+ base::Time::Now()); |
+ activity_db->RecordManagerAction(action); |
+ activity_db->Close(); |
+ activity_db->Release(); |
+ |
+ sql::Connection db; |
+ ASSERT_TRUE(db.Open(db_file)); |
+ |
+ std::string sql_str = "SELECT * FROM " + std::string(manager_table_name_); |
+ sql::Statement statement(db.GetUniqueStatement(sql_str.c_str())); |
+ ASSERT_TRUE(statement.Step()); |
+ ASSERT_EQ("punky", statement.ColumnString(0)); |
+ ASSERT_EQ("READ", statement.ColumnString(2)); |
+ ASSERT_EQ("BOOKMARK", statement.ColumnString(3)); |
+ ASSERT_EQ("brewster", statement.ColumnString(4)); |
+} |
+ |
+// Check that nothing explodes if the DB isn't initialized. |
+TEST(ActivityDatabaseTest, InitFailure) { |
+ base::ScopedTempDir temp_dir; |
+ FilePath db_file; |
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
+ db_file = temp_dir.path().AppendASCII("ActivityRecord.db"); |
+ file_util::Delete(db_file, false); |
+ |
+ ActivityDatabase* activity_db = new ActivityDatabase(); |
+ activity_db->AddRef(); |
+ scoped_refptr<ManagerAction> action = new ManagerAction( |
+ "punky", |
+ ManagerAction::READ, |
+ ManagerAction::BOOKMARK, |
+ "brewster", |
+ base::Time::Now()); |
+ activity_db->RecordManagerAction(action); |
+ activity_db->Close(); |
+ activity_db->Release(); |
+} |
+ |
+} // namespace |
+ |