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 #include <gmock/gmock.h>
17 #include <gtest/gtest.h>
18 #include <memory>
19
20 #include "album_data_handler.h"
21 #include "dfs_error.h"
22 #include "gallery_file_const.h"
23 #include "medialibrary_db_const.h"
24 #include "medialibrary_type_const.h"
25 #include "rdb_store_mock.h"
26
27 namespace OHOS::FileManagement::CloudSync::Test {
28 using namespace testing;
29 using namespace testing::ext;
30 using namespace std;
31 using namespace NativeRdb;
32 using namespace DriveKit;
33 const int USER_ID = 100;
34 const std::string BUND_NAME = "com.ohos.photos";
35 class AlbumDataHandlerMock : public AlbumDataHandler {
36 public:
AlbumDataHandlerMock(int32_t userId,const std::string & bundleName,std::shared_ptr<RdbStoreMock> rdb)37 explicit AlbumDataHandlerMock(int32_t userId, const std::string &bundleName, std::shared_ptr<RdbStoreMock> rdb)
38 : AlbumDataHandler(userId, bundleName, rdb, make_shared<bool>(false))
39 {
40 }
41 MOCK_METHOD2(GetDownloadAsset, int32_t(string cloudId,
42 vector<DriveKit::DKDownloadAsset> &outAssetsToDownload));
43 MOCK_METHOD1(OnDownloadSuccess, int32_t(const DriveKit::DKDownloadAsset &asset));
44 MOCK_METHOD1(OnDownloadAssets,
45 int32_t(const std::map<DriveKit::DKDownloadAsset, DriveKit::DKDownloadResult> &resultMap));
46 MOCK_METHOD1(OnDownloadAssets, int32_t(const DKDownloadAsset &asset));
47 MOCK_METHOD1(GetAssetsToDownload, int32_t(std::vector<DriveKit::DKDownloadAsset> &outAssetsToDownload));
48 MOCK_METHOD1(Clean, int32_t(const int action));
49 };
50 class AlbumDataHandlerTest : public testing::Test {
51 public:
52 static void SetUpTestCase(void);
53 static void TearDownTestCase(void);
54 void SetUp();
55 void TearDown();
56 };
57
SetUpTestCase(void)58 void AlbumDataHandlerTest::SetUpTestCase(void)
59 {
60 GTEST_LOG_(INFO) << "SetUpTestCase";
61 }
62
TearDownTestCase(void)63 void AlbumDataHandlerTest::TearDownTestCase(void)
64 {
65 GTEST_LOG_(INFO) << "TearDownTestCase";
66 }
67
SetUp(void)68 void AlbumDataHandlerTest::SetUp(void)
69 {
70 GTEST_LOG_(INFO) << "SetUp";
71 }
72
TearDown(void)73 void AlbumDataHandlerTest::TearDown(void)
74 {
75 GTEST_LOG_(INFO) << "TearDown";
76 }
77
78 /**
79 * @tc.name: OnFetchRecords001
80 * @tc.desc: Verify the OnFetchRecords function
81 * @tc.type: FUNC
82 * @tc.require: I6JPKG
83 */
84 HWTEST_F(AlbumDataHandlerTest, OnFetchRecords001, TestSize.Level1)
85 {
86 GTEST_LOG_(INFO) << "OnFetchRecords001 Begin";
87 try {
88 auto rdb = make_shared<RdbStoreMock>();
89 auto albumDataHandlerMock = make_shared<AlbumDataHandlerMock>(USER_ID, BUND_NAME, rdb);
90 shared_ptr<vector<DKRecord>> records = make_shared<vector<DKRecord>>();
91 OnFetchParams onFetchParams;
92 int res = albumDataHandlerMock->OnFetchRecords(records, onFetchParams);
93 EXPECT_EQ(res, E_OK);
94 } catch (...) {
95 EXPECT_TRUE(false);
96 GTEST_LOG_(INFO) << " OnFetchRecords001 ERROR";
97 }
98
99 GTEST_LOG_(INFO) << "OnFetchRecords001 End";
100 }
101
102 /**
103 * @tc.name: GetFetchCondition001
104 * @tc.desc: Verify the GetFetchCondition function
105 * @tc.type: FUNC
106 * @tc.require: I6JPKG
107 */
108 HWTEST_F(AlbumDataHandlerTest, GetFetchCondition001, TestSize.Level1)
109 {
110 GTEST_LOG_(INFO) << "GetFetchCondition001 Begin";
111 try {
112 FetchCondition cond;
113 auto rdb = make_shared<RdbStoreMock>();
114 auto albumDataHandlerMock = make_shared<AlbumDataHandlerMock>(USER_ID, BUND_NAME, rdb);
115 albumDataHandlerMock->GetFetchCondition(cond);
116 EXPECT_TRUE(true);
117 } catch (...) {
118 EXPECT_TRUE(false);
119 GTEST_LOG_(INFO) << " GetFetchCondition001 ERROR";
120 }
121
122 GTEST_LOG_(INFO) << "GetFetchCondition001 End";
123 }
124
125 /**
126 * @tc.name: GetRetryRecords001
127 * @tc.desc: Verify the GetRetryRecords function
128 * @tc.type: FUNC
129 * @tc.require: I6JPKG
130 */
131 HWTEST_F(AlbumDataHandlerTest, GetRetryRecords001, TestSize.Level1)
132 {
133 GTEST_LOG_(INFO) << "GetRetryRecords001 Begin";
134 try {
135 auto rdb = make_shared<RdbStoreMock>();
136 auto albumDataHandlerMock = make_shared<AlbumDataHandlerMock>(USER_ID, BUND_NAME, rdb);
137 vector<DriveKit::DKRecordId> records;
138 int32_t ret = albumDataHandlerMock->GetRetryRecords(records);
139 EXPECT_EQ(E_OK, ret);
140 } catch (...) {
141 EXPECT_TRUE(false);
142 GTEST_LOG_(INFO) << " GetRetryRecords001 ERROR";
143 }
144
145 GTEST_LOG_(INFO) << "GetRetryRecords001 End";
146 }
147
148 /**
149 * @tc.name: GetCreatedRecords001
150 * @tc.desc: Verify the GetCreatedRecords function
151 * @tc.type: FUNC
152 * @tc.require: I6JPKG
153 */
154 HWTEST_F(AlbumDataHandlerTest, GetCreatedRecords001, TestSize.Level1)
155 {
156 GTEST_LOG_(INFO) << "GetCreatedRecords001 Begin";
157 try {
158 auto rdb = make_shared<RdbStoreMock>();
159 auto albumDataHandlerMock = make_shared<AlbumDataHandlerMock>(USER_ID, BUND_NAME, rdb);
160 vector<DriveKit::DKRecord> records;
161 int32_t ret = albumDataHandlerMock->GetCreatedRecords(records);
162 EXPECT_EQ(E_RDB, ret);
163 } catch (...) {
164 EXPECT_TRUE(false);
165 GTEST_LOG_(INFO) << " GetCreatedRecords001 ERROR";
166 }
167
168 GTEST_LOG_(INFO) << "GetCreatedRecords001 End";
169 }
170
171 /**
172 * @tc.name: GetDeletedRecords001
173 * @tc.desc: Verify the GetDeletedRecords function
174 * @tc.type: FUNC
175 * @tc.require: I6JPKG
176 */
177 HWTEST_F(AlbumDataHandlerTest, GetDeletedRecords001, TestSize.Level1)
178 {
179 GTEST_LOG_(INFO) << "GetDeletedRecords001 Begin";
180 try {
181 auto rdb = make_shared<RdbStoreMock>();
182 auto albumDataHandlerMock = make_shared<AlbumDataHandlerMock>(USER_ID, BUND_NAME, rdb);
183 vector<DriveKit::DKRecord> records;
184 int32_t ret = albumDataHandlerMock->GetDeletedRecords(records);
185 EXPECT_EQ(E_RDB, ret);
186 } catch (...) {
187 EXPECT_TRUE(false);
188 GTEST_LOG_(INFO) << " GetDeletedRecords001 ERROR";
189 }
190
191 GTEST_LOG_(INFO) << "GetDeletedRecords001 End";
192 }
193
194 /**
195 * @tc.name: GetMetaModifiedRecords001
196 * @tc.desc: Verify the GetMetaModifiedRecords function
197 * @tc.type: FUNC
198 * @tc.require: I6JPKG
199 */
200 HWTEST_F(AlbumDataHandlerTest, GetMetaModifiedRecords001, TestSize.Level1)
201 {
202 GTEST_LOG_(INFO) << "GetMetaModifiedRecords001 Begin";
203 try {
204 auto rdb = make_shared<RdbStoreMock>();
205 auto albumDataHandlerMock = make_shared<AlbumDataHandlerMock>(USER_ID, BUND_NAME, rdb);
206 vector<DriveKit::DKRecord> records;
207 int32_t ret = albumDataHandlerMock->GetMetaModifiedRecords(records);
208 EXPECT_EQ(E_RDB, ret);
209 } catch (...) {
210 EXPECT_TRUE(false);
211 GTEST_LOG_(INFO) << " GetMetaModifiedRecords001 ERROR";
212 }
213
214 GTEST_LOG_(INFO) << "GetMetaModifiedRecords001 End";
215 }
216
217 /**
218 * @tc.name: OnCreateRecords001
219 * @tc.desc: Verify the OnCreateRecords function
220 * @tc.type: FUNC
221 * @tc.require: I6JPKG
222 */
223 HWTEST_F(AlbumDataHandlerTest, OnCreateRecords001, TestSize.Level1)
224 {
225 GTEST_LOG_(INFO) << "OnCreateRecords001 Begin";
226 try {
227 auto rdb = make_shared<RdbStoreMock>();
228 auto albumDataHandlerMock = make_shared<AlbumDataHandlerMock>(USER_ID, BUND_NAME, rdb);
229 map<DKRecordId, DKRecordOperResult> map;
230 int32_t ret = albumDataHandlerMock->OnCreateRecords(map);
231 EXPECT_EQ(E_OK, ret);
232 } catch (...) {
233 EXPECT_TRUE(false);
234 GTEST_LOG_(INFO) << " OnCreateRecords001 ERROR";
235 }
236
237 GTEST_LOG_(INFO) << "OnCreateRecords001 End";
238 }
239
240 /**
241 * @tc.name: OnDeleteRecords001
242 * @tc.desc: Verify the OnDeleteRecords function
243 * @tc.type: FUNC
244 * @tc.require: I6JPKG
245 */
246 HWTEST_F(AlbumDataHandlerTest, OnDeleteRecords001, TestSize.Level1)
247 {
248 GTEST_LOG_(INFO) << "OnDeleteRecords001 Begin";
249 try {
250 auto rdb = make_shared<RdbStoreMock>();
251 auto albumDataHandlerMock = make_shared<AlbumDataHandlerMock>(USER_ID, BUND_NAME, rdb);
252 map<DKRecordId, DKRecordOperResult> map;
253 int32_t ret = albumDataHandlerMock->OnDeleteRecords(map);
254 EXPECT_EQ(E_OK, ret);
255 } catch (...) {
256 EXPECT_TRUE(false);
257 GTEST_LOG_(INFO) << " OnDeleteRecords001 ERROR";
258 }
259
260 GTEST_LOG_(INFO) << "OnDeleteRecords001 End";
261 }
262
263 /**
264 * @tc.name: OnModifyMdirtyRecords001
265 * @tc.desc: Verify the OnModifyMdirtyRecords function
266 * @tc.type: FUNC
267 * @tc.require: I6JPKG
268 */
269 HWTEST_F(AlbumDataHandlerTest, OnModifyMdirtyRecords001, TestSize.Level1)
270 {
271 GTEST_LOG_(INFO) << "OnModifyMdirtyRecords001 Begin";
272 try {
273 auto rdb = make_shared<RdbStoreMock>();
274 auto albumDataHandlerMock = make_shared<AlbumDataHandlerMock>(USER_ID, BUND_NAME, rdb);
275 map<DKRecordId, DKRecordOperResult> map;
276 int32_t ret = albumDataHandlerMock->OnModifyMdirtyRecords(map);
277 EXPECT_EQ(E_OK, ret);
278 } catch (...) {
279 EXPECT_TRUE(false);
280 GTEST_LOG_(INFO) << " OnModifyMdirtyRecords001 ERROR";
281 }
282
283 GTEST_LOG_(INFO) << "OnModifyMdirtyRecords001 End";
284 }
285 } // namespace OHOS::FileManagement::CloudSync::Test