1 /*
2  * Copyright (C) 2023 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_CLOUDDISK_RDBSTORE_MOCK_H
17 #define OHOS_CLOUDDISK_RDBSTORE_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::Test {
29 using namespace testing;
30 using namespace testing::ext;
31 using namespace std;
32 using namespace NativeRdb;
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 
111     MOCK_METHOD11(Query,
112                   std::shared_ptr<AbsSharedResultSet>(int &errCode,
113                                                        bool distinct,
114                                                        const std::string &table,
115                                                        const std::vector<std::string> &columns,
116                                                        const std::string &whereClause,
117                                                        const std::vector<ValueObject> &bindArgs,
118                                                        const std::string &groupBy,
119                                                        const std::string &indexName,
120                                                        const std::string &orderBy,
121                                                        const int &limit,
122                                                        const int &offset));
123     MOCK_METHOD2(QuerySql,
124                  std::shared_ptr<AbsSharedResultSet>(const std::string &sql,
125                                                      const std::vector<std::string> &selectionArgs));
126     MOCK_METHOD2(QuerySql,
127                  std::shared_ptr<AbsSharedResultSet>(const std::string &sql,
128                                                      const std::vector<ValueObject> &bindArgs));
129     MOCK_METHOD2(QueryByStep,
130                  std::shared_ptr<ResultSet>(const std::string &sql, const std::vector<std::string> &selectionArgs));
131     MOCK_METHOD3(QueryByStep,
132                  std::shared_ptr<ResultSet>(const std::string &sql, const std::vector<ValueObject> &bindArgs,
133                  bool preCount));
134 
135     MOCK_METHOD3(QueryByStep,
136                  std::shared_ptr<ResultSet>(const AbsRdbPredicates &predicates,
137                                             const std::vector<std::string> &columns, bool preCount));
138 
139     MOCK_METHOD4(RemoteQuery,
140                  std::shared_ptr<ResultSet>(const std::string &device,
141                                             const AbsRdbPredicates &predicates,
142                                             const std::vector<std::string> &columns,
143                                             int &errCode));
144 
145     MOCK_METHOD3(GetModifyTime, ModifyTime(const std::string &table, const std::string &columnName,
146                                                        std::vector<PRIKey> &keys));
147 
148     MOCK_METHOD3(SetDistributedTables, int(const std::vector<std::string> &tables, int32_t type,
149                                            const DistributedRdb::DistributedConfig &distributedConfig));
150     MOCK_METHOD3(ObtainDistributedTableName,
151                  std::string(const std::string &device, const std::string &table, int &errCode));
152     MOCK_METHOD3(Sync, int(const SyncOption &option, const AbsRdbPredicates &predicate, const AsyncBrief& async));
153     MOCK_METHOD3(Sync, int(const SyncOption &option, const AbsRdbPredicates &predicate, const AsyncDetail& async));
154     MOCK_METHOD3(Sync, int(const SyncOption &option, const std::vector<std::string>& tables, const AsyncDetail& async));
155     MOCK_METHOD2(Subscribe, int(const SubscribeOption &option, RdbStoreObserver *observer));
156     MOCK_METHOD2(UnSubscribe, int(const SubscribeOption &option, RdbStoreObserver *observer));
157     MOCK_METHOD1(RegisterAutoSyncCallback, int(std::shared_ptr<DetailProgressObserver> syncObserver));
158     MOCK_METHOD1(UnregisterAutoSyncCallback, int(std::shared_ptr<DetailProgressObserver> syncObserver));
159     MOCK_METHOD2(CleanDirtyData, int(const std::string &table, uint64_t cursor));
160     MOCK_METHOD1(Notify, int(const std::string &event));
161     MOCK_METHOD2(DropDeviceData, bool(const std::vector<std::string> &devices, const DropOption &option));
162     MOCK_METHOD3(Update, int(int &changedRows, const ValuesBucket &values, const AbsRdbPredicates &predicates));
163     MOCK_METHOD2(Delete, int(int &deletedRows, const AbsRdbPredicates &predicates));
164     MOCK_METHOD1(GetVersion, int(int &version));
165     MOCK_METHOD1(SetVersion, int(int version));
166     MOCK_METHOD0(BeginTransaction, int());
167     MOCK_METHOD0(RollBack, int());
168     MOCK_METHOD0(Commit, int());
169     MOCK_METHOD0(IsInTransaction, bool());
170     MOCK_METHOD0(GetPath, std::string());
171     MOCK_METHOD0(IsHoldingConnection, bool());
172     MOCK_CONST_METHOD0(IsOpen, bool());
173     MOCK_CONST_METHOD0(IsReadOnly, bool());
174     MOCK_CONST_METHOD0(IsMemoryRdb, bool());
175     MOCK_METHOD2(Restore, int(const std::string &backupPath, const std::vector<uint8_t> &newKey));
176     MOCK_METHOD1(GetRebuilt, int(RebuiltType &rebuilt));
177 };
178 } // namespace OHOS::FileManagement::CloudSync::Test
179 #endif