• 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 #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