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 #define MLOG_TAG "FileExtUnitTest"
16
17 #include "ringtone_rdbstore_test.h"
18
19 #include "ability_context_impl.h"
20 #include "ringtone_log.h"
21 #include "rdb_store.h"
22 #include "rdb_utils.h"
23 #include "ringtone_errno.h"
24 #define private public
25 #include "ringtone_rdbstore.h"
26 #undef private
27
28 using namespace std;
29 using namespace OHOS;
30 using namespace testing::ext;
31
32 namespace OHOS {
33 namespace Media {
34 shared_ptr<RingtoneUnistore> g_uniStore = nullptr;
35 const std::string CREATE_RINGTONE_TABLE = "CREATE TABLE IF NOT EXISTS " + RINGTONE_TABLE + "(" +
36 RINGTONE_COLUMN_TONE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
37 RINGTONE_COLUMN_DATA + " TEXT , " +
38 RINGTONE_COLUMN_SIZE + " BIGINT DEFAULT 0, " + ")";
39
SetUpTestCase()40 void RingtoneRdbStorelUnitTest::SetUpTestCase()
41 {
42 }
43
TearDownTestCase()44 void RingtoneRdbStorelUnitTest::TearDownTestCase() {}
45
46 // SetUp:Execute before each test case
SetUp()47 void RingtoneRdbStorelUnitTest::SetUp()
48 {
49 auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
50 auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
51 abilityContextImpl->SetStageContext(stageContext);
52 g_uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
53 EXPECT_NE(g_uniStore, nullptr);
54 int32_t ret = g_uniStore->Init();
55 EXPECT_EQ(ret, E_OK);
56 }
57
TearDown(void)58 void RingtoneRdbStorelUnitTest::TearDown(void) {}
59
60 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_Insert_test_001, TestSize.Level0)
61 {
62 if (g_uniStore == nullptr) {
63 exit(1);
64 }
65 Uri uri(RINGTONE_PATH_URI);
66 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
67 NativeRdb::ValuesBucket values;
68 const string name = "test name";
69 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
70 const string data = "rdbStore_Insert_test_001";
71 values.PutString(RINGTONE_COLUMN_DATA, data);
72 const string title = "insert test";
73 values.PutString(RINGTONE_COLUMN_TITLE, title);
74 values.PutInt(RINGTONE_COLUMN_MEDIA_TYPE, 2);
75 cmd.SetValueBucket(values);
76 g_uniStore->Init();
77 int64_t rowId = E_HAS_DB_ERROR;
78 int32_t ret = g_uniStore->Insert(cmd, rowId);
79 EXPECT_EQ(ret, E_OK);
80 }
81
82 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_Insert_test_002, TestSize.Level0)
83 {
84 if (g_uniStore == nullptr) {
85 exit(1);
86 }
87 Uri uri(RINGTONE_PATH_URI);
88 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
89 NativeRdb::ValuesBucket values;
90 const string name = "rdbStore_Insert_test_002";
91 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
92 const string displayname = "rdbStore_Insert_test_002/test";
93 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, displayname);
94 values.PutInt(RINGTONE_COLUMN_MEDIA_TYPE, 2);
95 cmd.SetValueBucket(values);
96 int64_t rowId = E_HAS_DB_ERROR;
97 int32_t ret = g_uniStore->Insert(cmd, rowId);
98 EXPECT_EQ(ret, E_OK);
99 }
100
101 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_Insert_test_003, TestSize.Level0)
102 {
103 if (g_uniStore == nullptr) {
104 exit(1);
105 }
106 Uri uri(RINGTONE_PATH_URI);
107 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
108 int64_t rowId = E_HAS_DB_ERROR;
109 int32_t ret = g_uniStore->Insert(cmd, rowId);
110 EXPECT_EQ(ret, E_HAS_DB_ERROR);
111 }
112
113 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_Insert_test_004, TestSize.Level0)
114 {
115 if (g_uniStore == nullptr) {
116 exit(1);
117 }
118 Uri uri(RINGTONE_PATH_URI);
119 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
120 NativeRdb::ValuesBucket values;
121 const string name = "rdbStore_Insert_test_004";
122 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
123 values.PutInt(RINGTONE_COLUMN_MEDIA_TYPE, 2);
124 cmd.SetValueBucket(values);
125 g_uniStore->Stop();
126 int64_t rowId = E_HAS_DB_ERROR;
127 int32_t ret = g_uniStore->Insert(cmd, rowId);
128 EXPECT_EQ(ret, E_HAS_DB_ERROR);
129 }
130
131 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_Query_test_001, TestSize.Level0)
132 {
133 if (g_uniStore == nullptr) {
134 exit(1);
135 }
136 Uri uri(RINGTONE_PATH_URI);
137 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::QUERY);
138 vector<string> columns;
139 columns.push_back(RINGTONE_COLUMN_DISPLAY_NAME);
140 g_uniStore->Init();
141 auto queryResultSet = g_uniStore->Query(cmd, columns);
142 EXPECT_NE(queryResultSet, nullptr);
143 }
144
145 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_Query_test_002, TestSize.Level0)
146 {
147 if (g_uniStore == nullptr) {
148 exit(1);
149 }
150 Uri uri(RINGTONE_PATH_URI);
151 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::QUERY);
152 vector<string> columns;
153 columns.push_back(RINGTONE_COLUMN_TITLE);
154 g_uniStore->Stop();
155 auto queryResultSet = g_uniStore->Query(cmd, columns);
156 EXPECT_EQ(queryResultSet, nullptr);
157 }
158
159 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_Delete_test_001, TestSize.Level0)
160 {
161 if (g_uniStore == nullptr) {
162 exit(1);
163 }
164 Uri uri(RINGTONE_PATH_URI);
165 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::DELETE);
166 int32_t rowId = 1;
167
168 DataShare::DataSharePredicates predicates;
169 NativeRdb::RdbPredicates rdbPredicate = RdbDataShareAdapter::RdbUtils::ToPredicates(predicates, RINGTONE_TABLE);
170 cmd.GetAbsRdbPredicates()->SetWhereClause(rdbPredicate.GetWhereClause());
171 cmd.GetAbsRdbPredicates()->SetWhereArgs(rdbPredicate.GetWhereArgs());
172
173 g_uniStore->Init();
174 int32_t ret = g_uniStore->Delete(cmd, rowId);
175 EXPECT_EQ(ret, E_OK);
176 }
177
178 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_Delete_test_002, TestSize.Level0)
179 {
180 if (g_uniStore == nullptr) {
181 exit(1);
182 }
183 g_uniStore->Stop();
184 Uri uri(RINGTONE_PATH_URI);
185 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::DELETE);
186 int32_t rowId = 1;
187 int32_t ret = g_uniStore->Delete(cmd, rowId);
188 EXPECT_EQ(ret, E_HAS_DB_ERROR);
189 }
190
191 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_Update_test_001, TestSize.Level0)
192 {
193 if (g_uniStore == nullptr) {
194 exit(1);
195 }
196 Uri uri(RINGTONE_PATH_URI);
197 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::UPDATE);
198 NativeRdb::ValuesBucket valuesBucket;
199 const string title = "rdbStore_Update_test_001";
200 valuesBucket.PutString(RINGTONE_COLUMN_TITLE, title);
201 cmd.SetValueBucket(valuesBucket);
202 g_uniStore->Init();
203 int32_t rowId = E_HAS_DB_ERROR;
204 int32_t ret = g_uniStore->Update(cmd, rowId);
205 EXPECT_EQ(ret, E_OK);
206 }
207
208 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_Update_test_002, TestSize.Level0)
209 {
210 if (g_uniStore == nullptr) {
211 exit(1);
212 }
213 Uri uri(RINGTONE_PATH_URI);
214 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::UPDATE);
215 int32_t updatedRows = -1;
216 int32_t ret = g_uniStore->Update(cmd, updatedRows);
217 EXPECT_EQ(ret, E_HAS_DB_ERROR);
218 }
219
220 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_Update_test_003, TestSize.Level0)
221 {
222 if (g_uniStore == nullptr) {
223 exit(1);
224 }
225 g_uniStore->Stop();
226 Uri uri(RINGTONE_PATH_URI);
227 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::UPDATE);
228 int32_t rowId = E_HAS_DB_ERROR;
229 int32_t ret = g_uniStore->Update(cmd, rowId);
230 EXPECT_EQ(ret, E_HAS_DB_ERROR);
231 }
232
233 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_ExecuteSql_test_001, TestSize.Level0)
234 {
235 if (g_uniStore == nullptr) {
236 exit(1);
237 }
238 const string modifySql = "UPDATE " + RINGTONE_TABLE + " SET ";
239 int32_t ret = g_uniStore->ExecuteSql(modifySql);
240 EXPECT_EQ(ret, E_HAS_DB_ERROR);
241 }
242
243 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_ExecuteSql_test_002, TestSize.Level0)
244 {
245 if (g_uniStore == nullptr) {
246 exit(1);
247 }
248 g_uniStore->Stop();
249 const string modifySql = "UPDATE " + RINGTONE_TABLE + " SET ";
250 int32_t ret = g_uniStore->ExecuteSql(modifySql);
251 EXPECT_EQ(ret, E_HAS_DB_ERROR);
252 }
253
254 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_QuerySql_test_001, TestSize.Level0)
255 {
256 if (g_uniStore == nullptr) {
257 exit(1);
258 }
259 g_uniStore->Init();
260 auto queryResultSet = g_uniStore->QuerySql(CREATE_RINGTONE_TABLE);
261 EXPECT_NE(queryResultSet, nullptr);
262 EXPECT_NE(g_uniStore->GetRaw(), nullptr);
263 }
264
265 HWTEST_F(RingtoneRdbStorelUnitTest, rdbStore_QuerySql_test_002, TestSize.Level0)
266 {
267 if (g_uniStore == nullptr) {
268 exit(1);
269 }
270 g_uniStore->Stop();
271 auto queryResultSet = g_uniStore->QuerySql(CREATE_RINGTONE_TABLE);
272 EXPECT_EQ(queryResultSet, nullptr);
273 }
274
275 HWTEST_F(RingtoneRdbStorelUnitTest, dataCallBack_OnCreate_test_001, TestSize.Level0)
276 {
277 RingtoneDataCallBack rdbDataCallBack;
278 g_uniStore->Init();
279 auto ret = rdbDataCallBack.OnCreate(*g_uniStore->GetRaw());
280 EXPECT_EQ(ret, E_OK);;
281 int32_t oldVersion = 0;
282 int32_t newVersion = 1;
283 ret = rdbDataCallBack.OnUpgrade(*g_uniStore->GetRaw(), oldVersion, newVersion);
284 EXPECT_EQ(ret, E_OK);
285 }
286
287 HWTEST_F(RingtoneRdbStorelUnitTest, dataCallBack_Stop_test_001, TestSize.Level0)
288 {
289 if (g_uniStore == nullptr) {
290 exit(1);
291 }
292 Uri uri(RINGTONE_PATH_URI);
293 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::QUERY);
294 vector<string> columns;
295 columns.push_back(RINGTONE_COLUMN_TITLE);
296 std::shared_ptr<OHOS::AbilityRuntime::Context> context = nullptr;
297 RingtoneRdbStore::GetInstance(context);
298 g_uniStore->Stop();
299 g_uniStore->Stop();
300 auto queryResultSet = g_uniStore->Query(cmd, columns);
301 EXPECT_EQ(queryResultSet, nullptr);
302 }
303
304 HWTEST_F(RingtoneRdbStorelUnitTest, dataCallBack_OnCreate_test_002, TestSize.Level0)
305 {
306 RINGTONE_INFO_LOG("dataCallBack_OnCreate_test_002 start.");
307 RingtoneDataCallBack rdbDataCallBack;
308 g_uniStore->Init();
309 auto ret = rdbDataCallBack.OnCreate(*g_uniStore->GetRaw());
310 EXPECT_EQ(ret, E_OK);;
311 int32_t oldVersion = 16;
312 int32_t newVersion = 64;
313 ret = rdbDataCallBack.OnUpgrade(*g_uniStore->GetRaw(), oldVersion, newVersion);
314 EXPECT_EQ(ret, E_OK);
315 RINGTONE_INFO_LOG("dataCallBack_OnCreate_test_002 end.");
316 }
317
318 HWTEST_F(RingtoneRdbStorelUnitTest, dataCallBack_OnCreate_test_003, TestSize.Level0)
319 {
320 RINGTONE_INFO_LOG("dataCallBack_OnCreate_test_003 start.");
321 Uri uri(RINGTONE_PATH_URI);
322 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
323 NativeRdb::ValuesBucket values;
324 const string name = "test name";
325 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
326 const string data = "dataCallBack_OnCreate_test_003";
327 values.PutString(RINGTONE_COLUMN_DATA, data);
328 const string title = "insert test";
329 values.PutString(RINGTONE_COLUMN_TITLE, title);
330 values.PutString(RINGTONE_COLUMN_MIME_TYPE, "application/octet-stream");
331 values.PutInt(RINGTONE_COLUMN_MEDIA_TYPE, 2);
332 cmd.SetValueBucket(values);
333 g_uniStore->Init();
334 int64_t rowId = E_HAS_DB_ERROR;
335 int32_t ret = g_uniStore->Insert(cmd, rowId);
336 EXPECT_EQ(ret, E_OK);
337
338 RingtoneDataCallBack rdbDataCallBack;
339 g_uniStore->Init();
340 ret = rdbDataCallBack.OnCreate(*g_uniStore->GetRaw());
341 EXPECT_EQ(ret, E_OK);;
342 int32_t oldVersion = 0;
343 int32_t newVersion = 1;
344 ret = rdbDataCallBack.OnUpgrade(*g_uniStore->GetRaw(), oldVersion, newVersion);
345 EXPECT_EQ(ret, E_OK);
346 RINGTONE_INFO_LOG("dataCallBack_OnCreate_test_003 end.");
347 }
348
349 HWTEST_F(RingtoneRdbStorelUnitTest, dataCallBack_OnCreate_test_004, TestSize.Level0)
350 {
351 RINGTONE_INFO_LOG("dataCallBack_OnCreate_test_004 start.");
352 Uri uri(RINGTONE_PATH_URI);
353 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
354 NativeRdb::ValuesBucket values;
355 const string name = "test name";
356 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
357 const string data = "/data/storage/test/test.ogg";
358 values.PutString(RINGTONE_COLUMN_DATA, data);
359 const string title = "insert test";
360 values.PutString(RINGTONE_COLUMN_TITLE, title);
361 values.PutString(RINGTONE_COLUMN_MIME_TYPE, "application/octet-stream");
362 values.PutInt(RINGTONE_COLUMN_MEDIA_TYPE, -1);
363 values.PutInt(RINGTONE_COLUMN_MEDIA_TYPE, 2);
364 cmd.SetValueBucket(values);
365 g_uniStore->Init();
366 int64_t rowId = E_HAS_DB_ERROR;
367 int32_t ret = g_uniStore->Insert(cmd, rowId);
368 EXPECT_EQ(ret, E_OK);
369
370 RingtoneDataCallBack rdbDataCallBack;
371 g_uniStore->Init();
372 ret = rdbDataCallBack.OnCreate(*g_uniStore->GetRaw());
373 EXPECT_EQ(ret, E_OK);;
374 int32_t oldVersion = 0;
375 int32_t newVersion = 1;
376 ret = rdbDataCallBack.OnUpgrade(*g_uniStore->GetRaw(), oldVersion, newVersion);
377 EXPECT_EQ(ret, E_OK);
378 RINGTONE_INFO_LOG("dataCallBack_OnCreate_test_004 end.");
379 }
380
381 HWTEST_F(RingtoneRdbStorelUnitTest, dataCallBack_OnCreate_test_005, TestSize.Level0)
382 {
383 RINGTONE_INFO_LOG("dataCallBack_OnCreate_test_005 start.");
384 Uri uri(RINGTONE_PATH_URI);
385 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
386 NativeRdb::ValuesBucket values;
387 const string name = "test name";
388 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
389 const string data = "/data/storage/test/test.ogg";
390 values.PutString(RINGTONE_COLUMN_DATA, data);
391 const string title = "insert test";
392 values.PutString(RINGTONE_COLUMN_TITLE, title);
393 values.PutString(RINGTONE_COLUMN_MIME_TYPE, "audio/ogg");
394 values.PutInt(RINGTONE_COLUMN_MEDIA_TYPE, -1);
395 values.PutInt(RINGTONE_COLUMN_MEDIA_TYPE, 2);
396 cmd.SetValueBucket(values);
397 g_uniStore->Init();
398 int64_t rowId = E_HAS_DB_ERROR;
399 int32_t ret = g_uniStore->Insert(cmd, rowId);
400 EXPECT_EQ(ret, E_OK);
401
402 RingtoneDataCallBack rdbDataCallBack;
403 g_uniStore->Init();
404 ret = rdbDataCallBack.OnCreate(*g_uniStore->GetRaw());
405 EXPECT_EQ(ret, E_OK);;
406 int32_t oldVersion = 0;
407 int32_t newVersion = 1;
408 ret = rdbDataCallBack.OnUpgrade(*g_uniStore->GetRaw(), oldVersion, newVersion);
409 EXPECT_EQ(ret, E_OK);
410 RINGTONE_INFO_LOG("dataCallBack_OnCreate_test_005 end.");
411 }
412
413 } // namespace Media
414 } // namespace OHOS
415