• 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 #include "ringtone_setting_manager_test.h"
17 
18 #include <memory>
19 
20 #include "ability_context_impl.h"
21 #include "ringtone_errno.h"
22 #include "ringtone_log.h"
23 #include "ringtone_rdbstore.h"
24 #define private public
25 #include "ringtone_setting_manager.h"
26 #undef private
27 #include "rdb_store.h"
28 #include "rdb_utils.h"
29 
30 using namespace std;
31 using namespace OHOS;
32 using namespace testing::ext;
33 
34 namespace OHOS {
35 namespace Media {
36 std::shared_ptr<RingtoneSettingManager> g_ringtoneSettingManager;
37 shared_ptr<RingtoneUnistore> g_uniStore;
38 
SetUpTestCase()39 void RingtoneSettingManagerTest::SetUpTestCase()
40 {
41 }
42 
TearDownTestCase()43 void RingtoneSettingManagerTest::TearDownTestCase()
44 {
45 }
46 
47 // SetUp:Execute before each test case
SetUp()48 void RingtoneSettingManagerTest::SetUp()
49 {
50     auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
51     auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
52     abilityContextImpl->SetStageContext(stageContext);
53     g_uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
54     auto ret = g_uniStore->Init();
55     EXPECT_EQ(ret, E_OK);
56     auto rawRdb = g_uniStore->GetRaw();
57     g_ringtoneSettingManager = std::make_shared<RingtoneSettingManager>(rawRdb);
58     EXPECT_NE(g_ringtoneSettingManager, nullptr);
59 }
60 
TearDown(void)61 void RingtoneSettingManagerTest::TearDown(void) {}
62 
63 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_UpdateShotSetting_test_001, TestSize.Level0)
64 {
65     std::shared_ptr<RingtoneMetadata> ringtoneMetadata = std::make_shared<RingtoneMetadata>();
66     int32_t shotToneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH);
67     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
68     int32_t sourceType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_2);
69     ringtoneMetadata->SetShotToneType(shotToneType);
70     ringtoneMetadata->SetToneId(0);
71     auto ret = g_ringtoneSettingManager->UpdateShotSetting(ringtoneMetadata, toneType, sourceType);
72     EXPECT_EQ(ret, E_OK);
73     shotToneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_NOT);
74     ringtoneMetadata->SetShotToneType(shotToneType);
75     ret = g_ringtoneSettingManager->UpdateShotSetting(ringtoneMetadata, toneType, sourceType);
76     EXPECT_EQ(ret, E_OK);
77     shotToneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
78     ringtoneMetadata->SetShotToneType(shotToneType);
79     ret = g_ringtoneSettingManager->UpdateShotSetting(ringtoneMetadata, toneType, sourceType);
80     EXPECT_EQ(ret, E_OK);
81 }
82 
83 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_UpdateRingtoneSetting_test_001, TestSize.Level0)
84 {
85     std::shared_ptr<RingtoneMetadata> ringtoneMetadata = std::make_shared<RingtoneMetadata>();
86     int32_t ringToneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_BOTH);
87     int32_t toneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1);
88     int32_t sourceType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_2);
89     ringtoneMetadata->SetRingToneType(ringToneType);
90     ringtoneMetadata->SetToneId(0);
91     auto ret = g_ringtoneSettingManager->UpdateRingtoneSetting(ringtoneMetadata, toneType, sourceType);
92     EXPECT_EQ(ret, E_OK);
93     ringToneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_NOT);
94     ringtoneMetadata->SetRingToneType(ringToneType);
95     ret = g_ringtoneSettingManager->UpdateRingtoneSetting(ringtoneMetadata, toneType, sourceType);
96     EXPECT_EQ(ret, E_OK);
97     ringToneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1);
98     ringtoneMetadata->SetRingToneType(ringToneType);
99     ret = g_ringtoneSettingManager->UpdateRingtoneSetting(ringtoneMetadata, toneType, sourceType);
100     EXPECT_EQ(ret, E_OK);
101 }
102 
103 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_UpdateNotificationSetting_test_001, TestSize.Level0)
104 {
105     std::shared_ptr<RingtoneMetadata> ringtoneMetadata = std::make_shared<RingtoneMetadata>();
106     int32_t toneType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE);
107     int32_t sourceType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE_NOT);
108     ringtoneMetadata->SetToneId(0);
109     auto ret = g_ringtoneSettingManager->UpdateNotificationSetting(ringtoneMetadata, toneType, sourceType);
110     EXPECT_EQ(ret, E_OK);
111     toneType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE_MAX);
112     sourceType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE_MAX);
113     ret = g_ringtoneSettingManager->UpdateNotificationSetting(ringtoneMetadata, toneType, sourceType);
114     EXPECT_EQ(ret, E_OK);
115 }
116 
117 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_UpdateAlarmSetting_test_001, TestSize.Level0)
118 {
119     std::shared_ptr<RingtoneMetadata> ringtoneMetadata = std::make_shared<RingtoneMetadata>();
120     int32_t toneType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE);
121     int32_t sourceType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE_NOT);
122     ringtoneMetadata->SetToneId(0);
123     auto ret = g_ringtoneSettingManager->UpdateAlarmSetting(ringtoneMetadata, toneType, sourceType);
124     EXPECT_EQ(ret, E_OK);
125     g_uniStore->Stop();
126     ret = g_ringtoneSettingManager->UpdateAlarmSetting(ringtoneMetadata, toneType, sourceType);
127     EXPECT_EQ(ret, E_OK);
128 }
129 
130 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_UpdateSettingsByPath_test_001, TestSize.Level0)
131 {
132     Uri uri(RINGTONE_PATH_URI);
133     RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
134     NativeRdb::ValuesBucket values;
135     const string name = "test_name";
136     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
137     string data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_001";
138     values.PutString(RINGTONE_COLUMN_DATA, data);
139     const string title = "insert test";
140     values.PutString(RINGTONE_COLUMN_TITLE, title);
141     values.Put(RINGTONE_COLUMN_MEDIA_TYPE, static_cast<int>(RINGTONE_MEDIA_TYPE_AUDIO));
142     cmd.SetValueBucket(values);
143     int64_t rowId = E_HAS_DB_ERROR;
144     auto ret = g_uniStore->Insert(cmd, rowId);
145     EXPECT_EQ(ret, E_OK);
146     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
147     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
148     int32_t sourceType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_2);
149     ret = g_ringtoneSettingManager->UpdateSettingsByPath(data, settingType, toneType, sourceType);
150     EXPECT_EQ(ret, E_OK);
151     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
152     toneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1);
153     sourceType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_2);
154     ret = g_ringtoneSettingManager->UpdateSettingsByPath(data, settingType, toneType, sourceType);
155     EXPECT_EQ(ret, E_OK);
156     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_NOTIFICATION);
157     toneType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE);
158     sourceType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE_NOT);
159     ret = g_ringtoneSettingManager->UpdateSettingsByPath(data, settingType, toneType, sourceType);
160     EXPECT_EQ(ret, E_OK);
161     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_ALARM);
162     toneType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE);
163     sourceType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE_NOT);
164     ret = g_ringtoneSettingManager->UpdateSettingsByPath(data, settingType, toneType, sourceType);
165     EXPECT_EQ(ret, E_OK);
166     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_MAX);
167     ret = g_ringtoneSettingManager->UpdateSettingsByPath(data, settingType, toneType, sourceType);
168     EXPECT_EQ(ret, E_OK);
169 
170     RingtoneDataCommand cmdDelete(uri, RINGTONE_TABLE, RingtoneOperationType::DELETE);
171     DataShare::DataSharePredicates predicates;
172     NativeRdb::RdbPredicates rdbPredicate = RdbDataShareAdapter::RdbUtils::ToPredicates(predicates, RINGTONE_TABLE);
173     cmdDelete.GetAbsRdbPredicates()->SetWhereClause(rdbPredicate.GetWhereClause());
174     cmdDelete.GetAbsRdbPredicates()->SetWhereArgs(rdbPredicate.GetWhereArgs());
175     int32_t deletedRows = 1;
176     ret = g_uniStore->Delete(cmdDelete, deletedRows);
177     EXPECT_EQ(ret, E_OK);
178 }
179 
180 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_UpdateSettingsWithToneId_test_001, TestSize.Level0)
181 {
182     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
183     int32_t toneId = 0;
184     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
185     auto ret = g_ringtoneSettingManager->UpdateSettingsWithToneId(settingType, toneId, toneType);
186     EXPECT_EQ(ret, E_OK);
187     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
188     toneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1);
189     ret = g_ringtoneSettingManager->UpdateSettingsWithToneId(settingType, toneId, toneType);
190     EXPECT_EQ(ret, E_OK);
191     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_NOTIFICATION);
192     toneType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE);
193     ret = g_ringtoneSettingManager->UpdateSettingsWithToneId(settingType, toneId, toneType);
194     EXPECT_EQ(ret, E_OK);
195     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_ALARM);
196     toneType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE);
197     g_uniStore->Stop();
198     ret = g_ringtoneSettingManager->UpdateSettingsWithToneId(settingType, toneId, toneType);
199     EXPECT_EQ(ret, E_OK);
200     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_MAX);
201     ret = g_ringtoneSettingManager->UpdateSettingsWithToneId(settingType, toneId, toneType);
202     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
203 }
204 
205 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CleanupSettingFromRdb_test_001, TestSize.Level0)
206 {
207     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
208     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
209     int32_t sourceType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_2);
210     auto ret = g_ringtoneSettingManager->CleanupSettingFromRdb(settingType, toneType, sourceType);
211     EXPECT_EQ(ret, E_OK);
212     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH);
213     ret = g_ringtoneSettingManager->CleanupSettingFromRdb(settingType, toneType, sourceType);
214     EXPECT_EQ(ret, E_OK);
215     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
216     toneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1);
217     sourceType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_2);
218     ret = g_ringtoneSettingManager->CleanupSettingFromRdb(settingType, toneType, sourceType);
219     EXPECT_EQ(ret, E_OK);
220     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_NOTIFICATION);
221     toneType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE);
222     ret = g_ringtoneSettingManager->CleanupSettingFromRdb(settingType, toneType, sourceType);
223     EXPECT_EQ(ret, E_OK);
224     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_ALARM);
225     toneType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE);
226     g_uniStore->Stop();
227     ret = g_ringtoneSettingManager->CleanupSettingFromRdb(settingType, toneType, sourceType);
228     EXPECT_EQ(ret, E_OK);
229     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_MAX);
230     ret = g_ringtoneSettingManager->CleanupSettingFromRdb(settingType, toneType, sourceType);
231     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
232 }
233 
234 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CleanupSetting_test_001, TestSize.Level0)
235 {
236     Uri uri(RINGTONE_PATH_URI);
237     RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
238     NativeRdb::ValuesBucket values;
239     const string name = "test_name";
240     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
241     string data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_001";
242     values.PutString(RINGTONE_COLUMN_DATA, data);
243     const string title = "insert test";
244     values.PutString(RINGTONE_COLUMN_TITLE, title);
245     values.Put(RINGTONE_COLUMN_SHOT_TONE_SOURCE_TYPE, static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET));
246     values.Put(RINGTONE_COLUMN_SHOT_TONE_TYPE, static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1));
247     values.Put(RINGTONE_COLUMN_MEDIA_TYPE, static_cast<int>(RINGTONE_MEDIA_TYPE_AUDIO));
248     cmd.SetValueBucket(values);
249     int64_t rowId = E_HAS_DB_ERROR;
250     auto ret = g_uniStore->Insert(cmd, rowId);
251     EXPECT_EQ(ret, E_OK);
252 
253     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
254     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH);
255     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET);
256     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
257     EXPECT_EQ(ret, E_OK);
258     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
259     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
260     EXPECT_EQ(ret, E_OK);
261     NativeRdb::ValuesBucket val;
262     val.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
263     data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_002";
264     val.PutString(RINGTONE_COLUMN_DATA, data);
265     val.PutString(RINGTONE_COLUMN_TITLE, title);
266     val.Put(RINGTONE_COLUMN_SHOT_TONE_SOURCE_TYPE, static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET));
267     val.Put(RINGTONE_COLUMN_SHOT_TONE_TYPE, static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH));
268     cmd.SetValueBucket(val);
269     ret = g_uniStore->Insert(cmd, rowId);
270     EXPECT_EQ(ret, E_OK);
271     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
272     EXPECT_EQ(ret, E_OK);
273 
274     RingtoneDataCommand cmdDelete(uri, RINGTONE_TABLE, RingtoneOperationType::DELETE);
275     DataShare::DataSharePredicates predicates;
276     NativeRdb::RdbPredicates rdbPredicate = RdbDataShareAdapter::RdbUtils::ToPredicates(predicates, RINGTONE_TABLE);
277     cmdDelete.GetAbsRdbPredicates()->SetWhereClause(rdbPredicate.GetWhereClause());
278     cmdDelete.GetAbsRdbPredicates()->SetWhereArgs(rdbPredicate.GetWhereArgs());
279     int32_t deletedRows = 1;
280     ret = g_uniStore->Delete(cmdDelete, deletedRows);
281     EXPECT_EQ(ret, E_OK);
282 }
283 
284 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CleanupSetting_test_002, TestSize.Level0)
285 {
286     Uri uri(RINGTONE_PATH_URI);
287     RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
288     NativeRdb::ValuesBucket values;
289     const string name = "test_name";
290     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
291     string data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_001";
292     values.PutString(RINGTONE_COLUMN_DATA, data);
293     const string title = "insert test";
294     values.PutString(RINGTONE_COLUMN_TITLE, title);
295     values.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET));
296     values.Put(RINGTONE_COLUMN_RING_TONE_TYPE, static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1));
297     values.Put(RINGTONE_COLUMN_MEDIA_TYPE, static_cast<int>(RINGTONE_MEDIA_TYPE_AUDIO));
298     cmd.SetValueBucket(values);
299     int64_t rowId = E_HAS_DB_ERROR;
300     auto ret = g_uniStore->Insert(cmd, rowId);
301     EXPECT_EQ(ret, E_OK);
302 
303     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
304     int32_t toneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_BOTH);
305     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET);
306     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
307     EXPECT_EQ(ret, E_OK);
308     toneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1);
309     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
310     EXPECT_EQ(ret, E_OK);
311     NativeRdb::ValuesBucket val;
312     val.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
313     data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_002";
314     val.PutString(RINGTONE_COLUMN_DATA, data);
315     val.PutString(RINGTONE_COLUMN_TITLE, title);
316     val.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET));
317     val.Put(RINGTONE_COLUMN_RING_TONE_TYPE, static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_BOTH));
318     cmd.SetValueBucket(val);
319     ret = g_uniStore->Insert(cmd, rowId);
320     EXPECT_EQ(ret, E_OK);
321     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
322     EXPECT_EQ(ret, E_OK);
323 
324     RingtoneDataCommand cmdDelete(uri, RINGTONE_TABLE, RingtoneOperationType::DELETE);
325     DataShare::DataSharePredicates predicates;
326     NativeRdb::RdbPredicates rdbPredicate = RdbDataShareAdapter::RdbUtils::ToPredicates(predicates, RINGTONE_TABLE);
327     cmdDelete.GetAbsRdbPredicates()->SetWhereClause(rdbPredicate.GetWhereClause());
328     cmdDelete.GetAbsRdbPredicates()->SetWhereArgs(rdbPredicate.GetWhereArgs());
329     int32_t deletedRows = 1;
330     ret = g_uniStore->Delete(cmdDelete, deletedRows);
331     EXPECT_EQ(ret, E_OK);
332 }
333 
334 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CleanupSetting_test_003, TestSize.Level0)
335 {
336     Uri uri(RINGTONE_PATH_URI);
337     RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
338     NativeRdb::ValuesBucket values;
339     const string name = "test_name";
340     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
341     const string data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_001";
342     values.PutString(RINGTONE_COLUMN_DATA, data);
343     const string title = "insert test";
344     values.PutString(RINGTONE_COLUMN_TITLE, title);
345     values.Put(RINGTONE_COLUMN_ALARM_TONE_SOURCE_TYPE, static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET));
346     values.Put(RINGTONE_COLUMN_ALARM_TONE_TYPE, static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE));
347     values.Put(RINGTONE_COLUMN_MEDIA_TYPE, static_cast<int>(RINGTONE_MEDIA_TYPE_AUDIO));
348     cmd.SetValueBucket(values);
349     int64_t rowId = E_HAS_DB_ERROR;
350     auto ret = g_uniStore->Insert(cmd, rowId);
351     EXPECT_EQ(ret, E_OK);
352 
353     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_ALARM);
354     int32_t toneType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE);
355     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET);
356     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
357     EXPECT_EQ(ret, E_OK);
358     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_NOTIFICATION);
359     toneType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE);
360     sourceType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE);
361     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
362     EXPECT_EQ(ret, E_OK);
363     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_MAX);
364     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
365     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
366     g_ringtoneSettingManager->ringtoneRdb_ = nullptr;
367     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
368     EXPECT_EQ(ret, E_DB_FAIL);
369 
370     RingtoneDataCommand cmdDelete(uri, RINGTONE_TABLE, RingtoneOperationType::DELETE);
371     DataShare::DataSharePredicates predicates;
372     NativeRdb::RdbPredicates rdbPredicate = RdbDataShareAdapter::RdbUtils::ToPredicates(predicates, RINGTONE_TABLE);
373     cmdDelete.GetAbsRdbPredicates()->SetWhereClause(rdbPredicate.GetWhereClause());
374     cmdDelete.GetAbsRdbPredicates()->SetWhereArgs(rdbPredicate.GetWhereArgs());
375     int32_t deletedRows = 1;
376     ret = g_uniStore->Delete(cmdDelete, deletedRows);
377     EXPECT_EQ(ret, E_OK);
378 }
379 
380 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CommitSetting_test_001, TestSize.Level0)
381 {
382     std::shared_ptr<RingtoneMetadata> ringtoneMetadata = std::make_shared<RingtoneMetadata>();
383     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_ALARM);
384     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH);
385     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET);
386     int32_t toneId = 0;
387     string tonePath = "settingMetadata_CommitSetting_test_001";
388     auto ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
389     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
390     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
391     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
392     EXPECT_EQ(ret, E_OK);
393     g_ringtoneSettingManager->FlushSettings();
394     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
395     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
396     EXPECT_EQ(ret, E_OK);
397     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_NOT);
398     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
399     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
400     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
401     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
402     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
403     EXPECT_EQ(ret, E_OK);
404     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_2);
405     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
406     EXPECT_EQ(ret, E_OK);
407     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
408     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
409     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
410     EXPECT_EQ(ret, E_FAIL);
411     g_ringtoneSettingManager->FlushSettings();
412     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
413     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
414     EXPECT_EQ(ret, E_OK);
415     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_2);
416     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
417     EXPECT_EQ(ret, E_OK);
418 }
419 
420 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CommitSettingCompare_test_001, TestSize.Level0)
421 {
422     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_ALARM);
423     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH);
424     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_MAX);
425     auto ret = g_ringtoneSettingManager->CommitSettingCompare(settingType, toneType, sourceType);
426     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
427     sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_CUSTOMISED);
428     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_INVALID);
429     ret = g_ringtoneSettingManager->CommitSettingCompare(settingType, toneType, sourceType);
430     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
431     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_MAX);
432     ret = g_ringtoneSettingManager->CommitSettingCompare(settingType, toneType, sourceType);
433     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
434     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_NOTIFICATION);
435     toneType = NOTIFICATION_TONE_TYPE;
436     ret = g_ringtoneSettingManager->CommitSettingCompare(settingType, toneType, sourceType);
437     EXPECT_EQ(ret, E_OK);
438 }
439 
440 /*
441  * Feature: Service
442  * Function: Test RingtoneSettingManager with CommitSettingCompare
443  * SubFunction: NA
444  * FunctionPoints: NA
445  * EnvConditions: NA
446  * CaseDescription: Test CommitSettingCompare for abnormal branches
447  */
448 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CommitSettingCompare_test_002, TestSize.Level0)
449 {
450     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
451     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_NOT);
452     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_CUSTOMISED);
453     auto ret = g_ringtoneSettingManager->CommitSettingCompare(settingType, toneType, sourceType);
454     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
455 
456     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_MAX);
457     ret = g_ringtoneSettingManager->CommitSettingCompare(settingType, toneType, sourceType);
458     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
459 }
460 
461 /*
462  * Feature: Service
463  * Function: Test RingtoneSettingManager with CommitSetting
464  * SubFunction: NA
465  * FunctionPoints: NA
466  * EnvConditions: NA
467  * CaseDescription: Test CommitSetting when setting is existing
468  */
469 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CommitSetting_test_002, TestSize.Level0)
470 {
471     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
472     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH);
473     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET);
474     int32_t toneId = 0;
475     string tonePath = "settingMetadata_CommitSetting_test_002";
476     auto ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
477     EXPECT_EQ(ret, E_OK);
478 
479     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
480     EXPECT_EQ(ret, E_FAIL);
481 }
482 
483 /*
484  * Feature: Service
485  * Function: Test RingtoneSettingManager with FlushSettings
486  * SubFunction: NA
487  * FunctionPoints: NA
488  * EnvConditions: NA
489  * CaseDescription: Test FlushSettings when ringtone rdb_ is nullptr
490  */
491 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_FlushSettings_test_001, TestSize.Level0)
492 {
493     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
494     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH);
495     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET);
496     g_ringtoneSettingManager->ringtoneRdb_ = nullptr;
497     auto ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
498     EXPECT_EQ(ret, E_DB_FAIL);
499     g_ringtoneSettingManager->FlushSettings();
500 }
501 
502 /*
503  * Feature: Service
504  * Function: Test RingtoneSettingManager with ExtractMetaFromColumn
505  * SubFunction: NA
506  * FunctionPoints: NA
507  * EnvConditions: NA
508  * CaseDescription: Test ExtractMetaFromColumn when column name is invalid
509  */
510 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_ExtractMetaFromColumn_test_001, TestSize.Level0)
511 {
512     std::unique_ptr<RingtoneMetadata> ringtoneMetadata = std::make_unique<RingtoneMetadata>();
513     std::shared_ptr<NativeRdb::ResultSet> results;
514     std::string columnName = "test";
515     g_ringtoneSettingManager->ExtractMetaFromColumn(results, ringtoneMetadata, columnName);
516     EXPECT_TRUE(ringtoneMetadata->memberFuncMap_.find(columnName) == ringtoneMetadata->memberFuncMap_.end());
517 }
518 
519 /*
520  * Feature: Service
521  * Function: Test RingtoneSettingManager with Update
522  * SubFunction: NA
523  * FunctionPoints: NA
524  * EnvConditions: NA
525  * CaseDescription: Test Update when ringtone rdb_ is nullptr
526  */
527 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_Update_test_001, TestSize.Level0)
528 {
529     int changedRows = 0;
530     NativeRdb::ValuesBucket values;
531     const string name = "test_name";
532     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
533     NativeRdb::AbsRdbPredicates predicates(RINGTONE_TABLE);
534     g_ringtoneSettingManager->ringtoneRdb_ = nullptr;
535     int32_t ret = g_ringtoneSettingManager->Update(changedRows, values, predicates);
536     EXPECT_EQ(ret, E_DB_FAIL);
537 }
538 
539 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CommitSettingCompare_test_003, TestSize.Level0)
540 {
541     RINGTONE_INFO_LOG("settingMetadata_CommitSettingCompare_test_003 start.");
542     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
543     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_NOT);
544     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_CUSTOMISED);
545     auto ret = g_ringtoneSettingManager->CommitSettingCompare(settingType, toneType, sourceType);
546     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
547 
548     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_MAX);
549     ret = g_ringtoneSettingManager->CommitSettingCompare(settingType, toneType, sourceType);
550     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
551     RINGTONE_INFO_LOG("settingMetadata_CommitSettingCompare_test_003 end.");
552 }
553 
554 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CommitSetting_test_003, TestSize.Level0)
555 {
556     RINGTONE_INFO_LOG("settingMetadata_CommitSetting_test_003 start.");
557     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
558     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
559     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_CUSTOMISED);
560     int32_t toneId = 0;
561     string tonePath = "settingMetadata_CommitSetting_test_003";
562 
563     auto ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
564     EXPECT_EQ(ret, E_OK);
565 
566     sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET);
567     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
568     EXPECT_EQ(ret, E_OK);
569     RINGTONE_INFO_LOG("settingMetadata_CommitSetting_test_003 end.");
570 }
571 
572 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_GetMetaDataFromResultSet_test_001, TestSize.Level0)
573 {
574     RINGTONE_INFO_LOG("settingMetadata_GetMetaDataFromResultSet_test_001 start.");
575     shared_ptr<NativeRdb::ResultSet> resultSet = nullptr;
576     vector<shared_ptr<RingtoneMetadata>> metaDatas = {};
577     auto ret = g_ringtoneSettingManager->GetMetaDataFromResultSet(resultSet, metaDatas);
578     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
579     RINGTONE_INFO_LOG("settingMetadata_GetMetaDataFromResultSet_test_001 end.");
580 }
581 
582 } // namespace Media
583 } // namespace OHOS