blob: fd38a9049045161f9654185bab8f6c9ba2092239 [file] [log] [blame]
Avi Drissman8ba1bad2022-09-13 19:22:361// Copyright 2020 The Chromium Authors
David Van Clevea4e3ee12020-01-21 20:07:012// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "components/sqlite_proto/key_value_data.h"
6
7#include "base/memory/scoped_refptr.h"
Sean Maher5b9af51f2022-11-21 15:32:478#include "base/task/single_thread_task_runner.h"
Jan Keitel12a0f972025-04-19 07:44:129#include "base/test/protobuf_matchers.h"
David Van Clevea4e3ee12020-01-21 20:07:0110#include "base/test/task_environment.h"
David Van Clevea4e3ee12020-01-21 20:07:0111#include "components/sqlite_proto/table_manager.h"
12#include "components/sqlite_proto/test_proto.pb.h"
13#include "sql/database.h"
14#include "testing/gmock/include/gmock/gmock.h"
15#include "testing/gtest/include/gtest/gtest.h"
16
17namespace sqlite_proto {
18
19namespace {
20
Jan Keitel12a0f972025-04-19 07:44:1221using base::test::EqualsProto;
22
David Van Clevea4e3ee12020-01-21 20:07:0123template <typename T>
24class FakeKeyValueTable : public KeyValueTable<T> {
25 public:
26 FakeKeyValueTable() : sqlite_proto::KeyValueTable<T>("") {}
27 void GetAllData(std::map<std::string, T>* data_map,
28 sql::Database* db) const override {
29 *data_map = data_;
30 }
31 void UpdateData(const std::string& key,
32 const T& data,
33 sql::Database* db) override {
34 data_[key] = data;
35 }
36 void DeleteData(const std::vector<std::string>& keys,
37 sql::Database* db) override {
38 for (const auto& key : keys)
39 data_.erase(key);
40 }
41 void DeleteAllData(sql::Database* db) override { data_.clear(); }
42
43 std::map<std::string, T> data_;
44};
45
46class FakeTableManager : public TableManager {
47 public:
Sean Maher5b9af51f2022-11-21 15:32:4748 FakeTableManager()
49 : TableManager(base::SingleThreadTaskRunner::GetCurrentDefault()) {}
David Van Clevea4e3ee12020-01-21 20:07:0150 void ScheduleDBTask(const base::Location& from_here,
51 base::OnceCallback<void(sql::Database*)> task) override {
52 GetTaskRunner()->PostTask(
53 from_here, base::BindOnce(&TableManager::ExecuteDBTaskOnDBSequence,
54 this, std::move(task)));
55 }
56 void ExecuteDBTaskOnDBSequence(
57 base::OnceCallback<void(sql::Database*)> task) override {
58 ASSERT_TRUE(GetTaskRunner()->RunsTasksInCurrentSequence());
59 std::move(task).Run(DB());
60 }
61
62 protected:
63 ~FakeTableManager() override = default;
64
65 // TableManager
David Van Cleveda471562021-07-15 01:14:5466 void CreateOrClearTablesIfNecessary() override {}
David Van Clevea4e3ee12020-01-21 20:07:0167 void LogDatabaseStats() override {}
68};
69
David Van Cleve