15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h" 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/history/top_sites_database.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace history { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TopSitesDatabaseTest : public testing::Test { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUp() { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Get a temporary directory for the test DB files. 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file_name_ = temp_dir_.path().AppendASCII("TestTopSites.db"); 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ScopedTempDir temp_dir_; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath file_name_; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(TopSitesDatabaseTest, UpgradeToVersion2) { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TopSitesDatabase db; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(db.Init(file_name_)); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create a version 1 table. SQLite doesn't support DROP COLUMN with 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ALTER TABLE. Hence, we recreate a table here. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(db.db_->Execute("DROP TABLE IF EXISTS thumbnails")); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(db.db_->Execute("CREATE TABLE thumbnails (" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "url LONGVARCHAR PRIMARY KEY," 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "url_rank INTEGER ," 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "title LONGVARCHAR," 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "thumbnail BLOB," 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "redirects LONGVARCHAR," 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "boring_score DOUBLE DEFAULT 1.0, " 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "good_clipping INTEGER DEFAULT 0, " 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "at_top INTEGER DEFAULT 0, " 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "last_updated INTEGER DEFAULT 0)")); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db.meta_table_.SetVersionNumber(1); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure the table meets the version 1 criteria. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1, db.meta_table_.GetVersionNumber()); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(db.db_->DoesColumnExist("thumbnails", "load_completed")); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Upgrade to version 2. 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(db.UpgradeToVersion2()); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure the table meets the version 2 criteria. 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(2, db.meta_table_.GetVersionNumber()); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(db.db_->DoesColumnExist("thumbnails", "load_completed")); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace history 56