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/history/android/android_urls_database.h"
6
7#include "base/files/file_path.h"
8#include "base/files/scoped_temp_dir.h"
9#include "base/path_service.h"
10#include "chrome/browser/history/history_database.h"
11#include "chrome/browser/history/history_unittest_base.h"
12#include "chrome/common/chrome_constants.h"
13#include "chrome/common/chrome_paths.h"
14#include "chrome/test/base/testing_profile.h"
15
16namespace history {
17
18class AndroidURLsMigrationTest : public HistoryUnitTestBase {
19 public:
20  AndroidURLsMigrationTest() {
21  }
22  virtual ~AndroidURLsMigrationTest() {}
23
24 protected:
25  virtual void SetUp() {
26    profile_.reset(new TestingProfile);
27
28    base::FilePath data_path;
29    ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &data_path));
30    data_path = data_path.AppendASCII("History");
31
32    history_db_name_ = profile_->GetPath().Append(chrome::kHistoryFilename);
33    // Set up history as they would be before migration.
34    ASSERT_NO_FATAL_FAILURE(
35        ExecuteSQLScript(data_path.AppendASCII("history.21.sql"),
36                         history_db_name_));
37  }
38
39 protected:
40  base::FilePath history_db_name_;
41  scoped_ptr<TestingProfile> profile_;
42};
43
44// Disabled as this does not correctly set up all the tables so that migration
45// fails. See http://crbug.com/175460 .
46TEST_F(AndroidURLsMigrationTest, DISABLED_MigrateToVersion22) {
47  HistoryDatabase db;
48  ASSERT_EQ(sql::INIT_OK, db.Init(history_db_name_));
49  // Migration has done.
50  // The column of previous table shouldn't exist.
51  EXPECT_FALSE(db.GetDB().DoesColumnExist("android_urls", "bookmark"));
52  sql::Statement statement(db.GetDB().GetUniqueStatement(
53      "SELECT id, url_id, raw_url FROM android_urls ORDER BY id ASC"));
54  ASSERT_TRUE(statement.Step());
55  EXPECT_EQ(1, statement.ColumnInt64(0));
56  EXPECT_EQ("http://google.com/", statement.ColumnString(2));
57  EXPECT_EQ(1, statement.ColumnInt64(1));
58
59  ASSERT_TRUE(statement.Step());
60  EXPECT_EQ(4, statement.ColumnInt64(0));
61  EXPECT_EQ("www.google.com/", statement.ColumnString(2));
62  EXPECT_EQ(3, statement.ColumnInt64(1));
63
64  EXPECT_FALSE(statement.Step());
65}
66
67}  // namespace history
68