• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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