1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef OHOS_CLOUD_SYNC_SA_RDB_STORE_MOCK_H 17 #define OHOS_CLOUD_SYNC_SA_RDB_STORE_MOCK_H 18 19 #include "abs_rdb_predicates.h" 20 #include "rdb_helper.h" 21 #include "result_set.h" 22 #include "value_object.h" 23 #include "values_bucket.h" 24 25 #include <gmock/gmock.h> 26 #include <gtest/gtest.h> 27 28 namespace OHOS::FileManagement::CloudDisk { 29 using namespace std; 30 using namespace NativeRdb; 31 32 33 class RdbStoreMock final : public NativeRdb::RdbStore { 34 public: 35 MOCK_METHOD3(Insert, int(int64_t &outRowId, const std::string &table, const ValuesBucket &initialValues)); 36 MOCK_METHOD3(BatchInsert, 37 int(int64_t &outInsertNum, 38 const std::string &table, 39 const std::vector<ValuesBucket> &initialBatchValues)); 40 MOCK_METHOD3(Replace, int(int64_t &outRowId, const std::string &table, const ValuesBucket &initialValues)); 41 MOCK_METHOD4(InsertWithConflictResolution, 42 int(int64_t &outRowId, 43 const std::string &table, 44 const ValuesBucket &initialValues, 45 ConflictResolution conflictResolution)); 46 MOCK_METHOD5(Update, 47 int(int &changedRows, 48 const std::string &table, 49 const ValuesBucket &values, 50 const std::string &whereClause, 51 const std::vector<std::string> &whereArgs)); 52 MOCK_METHOD5(Update, 53 int(int &changedRows, 54 const std::string &table, 55 const ValuesBucket &values, 56 const std::string &whereClause, 57 const std::vector<ValueObject> &bindArgs)); 58 59 MOCK_METHOD6(UpdateWithConflictResolution, 60 int(int &changedRows, 61 const std::string &table, 62 const ValuesBucket &values, 63 const std::string &whereClause, 64 const std::vector<std::string> &whereArgs, 65 ConflictResolution conflictResolution)); 66 67 MOCK_METHOD6(UpdateWithConflictResolution, 68 int(int &changedRows, 69 const std::string &table, 70 const ValuesBucket &values, 71 const std::string &whereClause, 72 const std::vector<ValueObject> &bindArgs, 73 ConflictResolution conflictResolution)); 74 75 MOCK_METHOD4(Delete, 76 int(int &deletedRows, 77 const std::string &table, 78 const std::string &whereClause, 79 const std::vector<std::string> &whereArgs)); 80 81 MOCK_METHOD4(Delete, 82 int(int &deletedRows, 83 const std::string &table, 84 const std::string &whereClause, 85 const std::vector<ValueObject> &bindArgs)); 86 87 MOCK_METHOD2(ExecuteSql, int(const std::string &sql, const std::vector<ValueObject> &bindArgs)); 88 89 MOCK_METHOD3(ExecuteAndGetLong, 90 int(int64_t &outValue, const std::string &sql, const std::vector<ValueObject> &bindArgs)); 91 92 MOCK_METHOD3(ExecuteAndGetString, 93 int(std::string &outValue, const std::string &sql, const std::vector<ValueObject> &bindArgs)); 94 95 MOCK_METHOD3(ExecuteForLastInsertedRowId, 96 int(int64_t &outValue, const std::string &sql, const std::vector<ValueObject> &bindArgs)); 97 98 MOCK_METHOD3(ExecuteForChangedRowCount, 99 int(int64_t &outValue, const std::string &sql, const std::vector<ValueObject> &bindArgs)); 100 101 MOCK_METHOD2(Backup, int(const std::string &databasePath, const std::vector<uint8_t> &destEncryptKey)); 102 103 MOCK_METHOD3(Attach, 104 int(const std::string &alias, const std::string &pathName, const std::vector<uint8_t> destEncryptKey)); 105 106 MOCK_METHOD2(Count, int(int64_t &outValue, const AbsRdbPredicates &predicates)); 107 MOCK_METHOD2(Query, 108 std::shared_ptr<AbsSharedResultSet>(const AbsRdbPredicates &predicates, 109 const std::vector<std::string> &columns)); 110 MOCK_METHOD11(Query, 111 std::shared_ptr<AbsSharedResultSet>(int &errCode, 112 bool distinct, 113 const std::string &table, 114 const std::vector<std::string> &columns, 115 const std::string &whereClause, 116 const std::vector<ValueObject> &bindArgs, 117 const std::string &groupBy, 118 const std::string &indexName, 119 const std::string &orderBy, 120 const int &limit, 121 const int &offset)); 122 MOCK_METHOD2(QuerySql, 123 std::shared_ptr<AbsSharedResultSet>(const std::string &sql, 124 const std::vector<std::string> &selectionArgs)); 125 MOCK_METHOD2(QuerySql, 126 std::shared_ptr<AbsSharedResultSet>(const std::string &sql, 127 const std::vector<ValueObject> &bindArgs)); 128 MOCK_METHOD2(QueryByStep, 129 std::shared_ptr<ResultSet>(const std::string &sql, const std::vector<std::string> &selectionArgs)); 130 MOCK_METHOD3(QueryByStep, 131 std::shared_ptr<ResultSet>(const std::string &sql, const std::vector<ValueObject> &bindArgs, 132 bool preCount)); 133 134 MOCK_METHOD3(QueryByStep, 135 std::shared_ptr<ResultSet>(const AbsRdbPredicates &predicates, 136 const std::vector<std::string> &columns, bool preCount)); 137 138 MOCK_METHOD4(RemoteQuery, 139 std::shared_ptr<ResultSet>(const std::string &device, 140 const AbsRdbPredicates &predicates, 141 const std::vector<std::string> &columns, 142 int &errCode)); 143 144 MOCK_METHOD3(GetModifyTime, ModifyTime(const std::string &table, const std::string &columnName, 145 std::vector<PRIKey> &keys)); 146 147 MOCK_METHOD3(SetDistributedTables, int(const std::vector<std::string> &tables, int32_t type, 148 const DistributedRdb::DistributedConfig &distributedConfig)); 149 MOCK_METHOD3(ObtainDistributedTableName, 150 std::string(const std::string &device, const std::string &table, int &errCode)); 151 MOCK_METHOD3(Sync, int(const SyncOption &option, const AbsRdbPredicates &predicate, const AsyncBrief& async)); 152 MOCK_METHOD3(Sync, int(const SyncOption &option, const AbsRdbPredicates &predicate, const AsyncDetail& async)); 153 MOCK_METHOD3(Sync, int(const SyncOption &option, const std::vector<std::string>& tables, const AsyncDetail& async)); 154 MOCK_METHOD2(Subscribe, int(const SubscribeOption &option, RdbStoreObserver *observer)); 155 MOCK_METHOD2(UnSubscribe, int(const SubscribeOption &option, RdbStoreObserver *observer)); 156 MOCK_METHOD1(RegisterAutoSyncCallback, int(std::shared_ptr<DetailProgressObserver> syncObserver)); 157 MOCK_METHOD1(UnregisterAutoSyncCallback, int(std::shared_ptr<DetailProgressObserver> syncObserver)); 158 MOCK_METHOD2(CleanDirtyData, int(const std::string &table, uint64_t cursor)); 159 MOCK_METHOD1(Notify, int(const std::string &event)); 160 MOCK_METHOD2(DropDeviceData, bool(const std::vector<std::string> &devices, const DropOption &option)); 161 MOCK_METHOD3(Update, int(int &changedRows, const ValuesBucket &values, const AbsRdbPredicates &predicates)); 162 MOCK_METHOD2(Delete, int(int &deletedRows, const AbsRdbPredicates &predicates)); 163 MOCK_METHOD1(GetVersion, int(int &version)); 164 MOCK_METHOD1(SetVersion, int(int version)); 165 MOCK_METHOD0(BeginTransaction, int()); 166 MOCK_METHOD0(RollBack, int()); 167 MOCK_METHOD0(Commit, int()); 168 MOCK_METHOD0(IsInTransaction, bool()); 169 MOCK_METHOD0(GetPath, std::string()); 170 MOCK_METHOD0(IsHoldingConnection, bool()); 171 MOCK_CONST_METHOD0(IsOpen, bool()); 172 MOCK_CONST_METHOD0(IsReadOnly, bool()); 173 MOCK_CONST_METHOD0(IsMemoryRdb, bool()); 174 MOCK_METHOD2(Restore, int(const std::string &backupPath, const std::vector<uint8_t> &newKey)); 175 MOCK_METHOD1(GetRebuilt, int(RebuiltType &rebuilt)); 176 MOCK_METHOD1(CreateTransaction, std::pair<int32_t, std::shared_ptr<Transaction>>(int32_t type)); 177 }; 178 179 class Assistant { 180 public: 181 static inline std::shared_ptr<Assistant> ins = nullptr; 182 public: 183 virtual ~Assistant() = default; 184 virtual shared_ptr<RdbStore> GetRdbStore(const RdbStoreConfig &, int, RdbOpenCallback &, int &) = 0; 185 virtual int DeleteRdbStore(const std::string &) = 0; 186 virtual std::string GetDefaultDatabasePath(const std::string &, const std::string &, int &) = 0; 187 }; 188 189 class AssistantMock : public Assistant { 190 public: 191 MOCK_METHOD4(GetRdbStore, shared_ptr<RdbStore>(const RdbStoreConfig &, int, RdbOpenCallback &, int &)); 192 MOCK_METHOD1(DeleteRdbStore, int(const std::string &)); 193 MOCK_METHOD3(GetDefaultDatabasePath, std::string(const std::string &, const std::string &, int &)); 194 }; 195 } // namespace OHOS::FileManagement::CloudSync::Test 196 #endif