• 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_rdbstore.h"
23 #define private public
24 #include "ringtone_setting_manager.h"
25 #undef private
26 #include "rdb_store.h"
27 #include "rdb_utils.h"
28 
29 using namespace std;
30 using namespace OHOS;
31 using namespace testing::ext;
32 
33 namespace OHOS {
34 namespace Media {
35 std::shared_ptr<RingtoneSettingManager> g_ringtoneSettingManager;
36 shared_ptr<RingtoneUnistore> g_uniStore;
37 
SetUpTestCase()38 void RingtoneSettingManagerTest::SetUpTestCase()
39 {
40 }
41 
TearDownTestCase()42 void RingtoneSettingManagerTest::TearDownTestCase()
43 {
44 }
45 
46 // SetUp:Execute before each test case
SetUp()47 void RingtoneSettingManagerTest::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     auto ret = g_uniStore->Init();
54     EXPECT_EQ(ret, E_OK);
55     auto rawRdb = g_uniStore->GetRaw();
56     g_ringtoneSettingManager = std::make_shared<RingtoneSettingManager>(rawRdb);
57     EXPECT_NE(g_ringtoneSettingManager, nullptr);
58 }
59 
TearDown(void)60 void RingtoneSettingManagerTest::TearDown(void) {}
61 
62 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_UpdateShotSetting_test_001, TestSize.Level0)
63 {
64     std::shared_ptr<RingtoneMetadata> ringtoneMetadata = std::make_shared<RingtoneMetadata>();
65     int32_t shotToneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH);
66     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
67     int32_t sourceType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_2);
68     ringtoneMetadata->SetShotToneType(shotToneType);
69     ringtoneMetadata->SetToneId(0);
70     auto ret = g_ringtoneSettingManager->UpdateShotSetting(ringtoneMetadata, toneType, sourceType);
71     EXPECT_EQ(ret, E_OK);
72     shotToneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_NOT);
73     ringtoneMetadata->SetShotToneType(shotToneType);
74     ret = g_ringtoneSettingManager->UpdateShotSetting(ringtoneMetadata, toneType, sourceType);
75     EXPECT_EQ(ret, E_OK);
76     shotToneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
77     ringtoneMetadata->SetShotToneType(shotToneType);
78     ret = g_ringtoneSettingManager->UpdateShotSetting(ringtoneMetadata, toneType, sourceType);
79     EXPECT_EQ(ret, E_OK);
80 }
81 
82 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_UpdateRingtoneSetting_test_001, TestSize.Level0)
83 {
84     std::shared_ptr<RingtoneMetadata> ringtoneMetadata = std::make_shared<RingtoneMetadata>();
85     int32_t ringToneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_BOTH);
86     int32_t toneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1);
87     int32_t sourceType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_2);
88     ringtoneMetadata->SetRingToneType(ringToneType);
89     ringtoneMetadata->SetToneId(0);
90     auto ret = g_ringtoneSettingManager->UpdateRingtoneSetting(ringtoneMetadata, toneType, sourceType);
91     EXPECT_EQ(ret, E_OK);
92     ringToneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_NOT);
93     ringtoneMetadata->SetRingToneType(ringToneType);
94     ret = g_ringtoneSettingManager->UpdateRingtoneSetting(ringtoneMetadata, toneType, sourceType);
95     EXPECT_EQ(ret, E_OK);
96     ringToneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1);
97     ringtoneMetadata->SetRingToneType(ringToneType);
98     ret = g_ringtoneSettingManager->UpdateRingtoneSetting(ringtoneMetadata, toneType, sourceType);
99     EXPECT_EQ(ret, E_OK);
100 }
101 
102 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_UpdateNotificationSetting_test_001, TestSize.Level0)
103 {
104     std::shared_ptr<RingtoneMetadata> ringtoneMetadata = std::make_shared<RingtoneMetadata>();
105     int32_t toneType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE);
106     int32_t sourceType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE_NOT);
107     ringtoneMetadata->SetToneId(0);
108     auto ret = g_ringtoneSettingManager->UpdateNotificationSetting(ringtoneMetadata, toneType, sourceType);
109     EXPECT_EQ(ret, E_OK);
110     toneType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE_MAX);
111     sourceType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE_MAX);
112     ret = g_ringtoneSettingManager->UpdateNotificationSetting(ringtoneMetadata, toneType, sourceType);
113     EXPECT_EQ(ret, E_OK);
114 }
115 
116 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_UpdateAlarmSetting_test_001, TestSize.Level0)
117 {
118     std::shared_ptr<RingtoneMetadata> ringtoneMetadata = std::make_shared<RingtoneMetadata>();
119     int32_t toneType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE);
120     int32_t sourceType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE_NOT);
121     ringtoneMetadata->SetToneId(0);
122     auto ret = g_ringtoneSettingManager->UpdateAlarmSetting(ringtoneMetadata, toneType, sourceType);
123     EXPECT_EQ(ret, E_OK);
124     g_uniStore->Stop();
125     ret = g_ringtoneSettingManager->UpdateAlarmSetting(ringtoneMetadata, toneType, sourceType);
126     EXPECT_EQ(ret, E_OK);
127 }
128 
129 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_UpdateSettingsByPath_test_001, TestSize.Level0)
130 {
131     Uri uri(RINGTONE_PATH_URI);
132     RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
133     NativeRdb::ValuesBucket values;
134     const string name = "test_name";
135     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
136     string data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_001";
137     values.PutString(RINGTONE_COLUMN_DATA, data);
138     const string title = "insert test";
139     values.PutString(RINGTONE_COLUMN_TITLE, title);
140     cmd.SetValueBucket(values);
141     int64_t rowId = E_HAS_DB_ERROR;
142     auto ret = g_uniStore->Insert(cmd, rowId);
143     EXPECT_EQ(ret, E_OK);
144     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
145     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
146     int32_t sourceType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_2);
147     ret = g_ringtoneSettingManager->UpdateSettingsByPath(data, settingType, toneType, sourceType);
148     EXPECT_EQ(ret, E_OK);
149     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
150     toneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1);
151     sourceType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_2);
152     ret = g_ringtoneSettingManager->UpdateSettingsByPath(data, settingType, toneType, sourceType);
153     EXPECT_EQ(ret, E_OK);
154     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_NOTIFICATION);
155     toneType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE);
156     sourceType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE_NOT);
157     ret = g_ringtoneSettingManager->UpdateSettingsByPath(data, settingType, toneType, sourceType);
158     EXPECT_EQ(ret, E_OK);
159     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_ALARM);
160     toneType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE);
161     sourceType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE_NOT);
162     ret = g_ringtoneSettingManager->UpdateSettingsByPath(data, settingType, toneType, sourceType);
163     EXPECT_EQ(ret, E_OK);
164     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_MAX);
165     ret = g_ringtoneSettingManager->UpdateSettingsByPath(data, settingType, toneType, sourceType);
166     EXPECT_EQ(ret, E_OK);
167 
168     RingtoneDataCommand cmdDelete(uri, RINGTONE_TABLE, RingtoneOperationType::DELETE);
169     DataShare::DataSharePredicates predicates;
170     NativeRdb::RdbPredicates rdbPredicate = RdbDataShareAdapter::RdbUtils::ToPredicates(predicates, RINGTONE_TABLE);
171     cmdDelete.GetAbsRdbPredicates()->SetWhereClause(rdbPredicate.GetWhereClause());
172     cmdDelete.GetAbsRdbPredicates()->SetWhereArgs(rdbPredicate.GetWhereArgs());
173     int32_t deletedRows = 1;
174     ret = g_uniStore->Delete(cmdDelete, deletedRows);
175     EXPECT_EQ(ret, E_OK);
176 }
177 
178 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_UpdateSettingsWithToneId_test_001, TestSize.Level0)
179 {
180     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
181     int32_t toneId = 0;
182     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
183     auto ret = g_ringtoneSettingManager->UpdateSettingsWithToneId(settingType, toneId, toneType);
184     EXPECT_EQ(ret, E_OK);
185     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
186     toneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1);
187     ret = g_ringtoneSettingManager->UpdateSettingsWithToneId(settingType, toneId, toneType);
188     EXPECT_EQ(ret, E_OK);
189     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_NOTIFICATION);
190     toneType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE);
191     ret = g_ringtoneSettingManager->UpdateSettingsWithToneId(settingType, toneId, toneType);
192     EXPECT_EQ(ret, E_OK);
193     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_ALARM);
194     toneType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE);
195     g_uniStore->Stop();
196     ret = g_ringtoneSettingManager->UpdateSettingsWithToneId(settingType, toneId, toneType);
197     EXPECT_EQ(ret, E_OK);
198     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_MAX);
199     ret = g_ringtoneSettingManager->UpdateSettingsWithToneId(settingType, toneId, toneType);
200     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
201 }
202 
203 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CleanupSettingFromRdb_test_001, TestSize.Level0)
204 {
205     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
206     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
207     int32_t sourceType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_2);
208     auto ret = g_ringtoneSettingManager->CleanupSettingFromRdb(settingType, toneType, sourceType);
209     EXPECT_EQ(ret, E_OK);
210     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH);
211     ret = g_ringtoneSettingManager->CleanupSettingFromRdb(settingType, toneType, sourceType);
212     EXPECT_EQ(ret, E_OK);
213     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
214     toneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1);
215     sourceType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_2);
216     ret = g_ringtoneSettingManager->CleanupSettingFromRdb(settingType, toneType, sourceType);
217     EXPECT_EQ(ret, E_OK);
218     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_NOTIFICATION);
219     toneType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE);
220     ret = g_ringtoneSettingManager->CleanupSettingFromRdb(settingType, toneType, sourceType);
221     EXPECT_EQ(ret, E_OK);
222     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_ALARM);
223     toneType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE);
224     g_uniStore->Stop();
225     ret = g_ringtoneSettingManager->CleanupSettingFromRdb(settingType, toneType, sourceType);
226     EXPECT_EQ(ret, E_OK);
227     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_MAX);
228     ret = g_ringtoneSettingManager->CleanupSettingFromRdb(settingType, toneType, sourceType);
229     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
230 }
231 
232 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CleanupSetting_test_001, TestSize.Level0)
233 {
234     Uri uri(RINGTONE_PATH_URI);
235     RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
236     NativeRdb::ValuesBucket values;
237     const string name = "test_name";
238     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
239     string data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_001";
240     values.PutString(RINGTONE_COLUMN_DATA, data);
241     const string title = "insert test";
242     values.PutString(RINGTONE_COLUMN_TITLE, title);
243     values.Put(RINGTONE_COLUMN_SHOT_TONE_SOURCE_TYPE, static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET));
244     values.Put(RINGTONE_COLUMN_SHOT_TONE_TYPE, static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1));
245     cmd.SetValueBucket(values);
246     int64_t rowId = E_HAS_DB_ERROR;
247     auto ret = g_uniStore->Insert(cmd, rowId);
248     EXPECT_EQ(ret, E_OK);
249 
250     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
251     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH);
252     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET);
253     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
254     EXPECT_EQ(ret, E_OK);
255     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
256     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
257     EXPECT_EQ(ret, E_OK);
258     NativeRdb::ValuesBucket val;
259     val.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
260     data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_002";
261     val.PutString(RINGTONE_COLUMN_DATA, data);
262     val.PutString(RINGTONE_COLUMN_TITLE, title);
263     val.Put(RINGTONE_COLUMN_SHOT_TONE_SOURCE_TYPE, static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET));
264     val.Put(RINGTONE_COLUMN_SHOT_TONE_TYPE, static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH));
265     cmd.SetValueBucket(val);
266     ret = g_uniStore->Insert(cmd, rowId);
267     EXPECT_EQ(ret, E_OK);
268     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
269     EXPECT_EQ(ret, E_OK);
270 
271     RingtoneDataCommand cmdDelete(uri, RINGTONE_TABLE, RingtoneOperationType::DELETE);
272     DataShare::DataSharePredicates predicates;
273     NativeRdb::RdbPredicates rdbPredicate = RdbDataShareAdapter::RdbUtils::ToPredicates(predicates, RINGTONE_TABLE);
274     cmdDelete.GetAbsRdbPredicates()->SetWhereClause(rdbPredicate.GetWhereClause());
275     cmdDelete.GetAbsRdbPredicates()->SetWhereArgs(rdbPredicate.GetWhereArgs());
276     int32_t deletedRows = 1;
277     ret = g_uniStore->Delete(cmdDelete, deletedRows);
278     EXPECT_EQ(ret, E_OK);
279 }
280 
281 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CleanupSetting_test_002, TestSize.Level0)
282 {
283     Uri uri(RINGTONE_PATH_URI);
284     RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
285     NativeRdb::ValuesBucket values;
286     const string name = "test_name";
287     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
288     string data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_001";
289     values.PutString(RINGTONE_COLUMN_DATA, data);
290     const string title = "insert test";
291     values.PutString(RINGTONE_COLUMN_TITLE, title);
292     values.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET));
293     values.Put(RINGTONE_COLUMN_RING_TONE_TYPE, static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1));
294     cmd.SetValueBucket(values);
295     int64_t rowId = E_HAS_DB_ERROR;
296     auto ret = g_uniStore->Insert(cmd, rowId);
297     EXPECT_EQ(ret, E_OK);
298 
299     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
300     int32_t toneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_BOTH);
301     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET);
302     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
303     EXPECT_EQ(ret, E_OK);
304     toneType = static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_1);
305     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
306     EXPECT_EQ(ret, E_OK);
307     NativeRdb::ValuesBucket val;
308     val.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
309     data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_002";
310     val.PutString(RINGTONE_COLUMN_DATA, data);
311     val.PutString(RINGTONE_COLUMN_TITLE, title);
312     val.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET));
313     val.Put(RINGTONE_COLUMN_RING_TONE_TYPE, static_cast<int32_t>(RingToneType::RING_TONE_TYPE_SIM_CARD_BOTH));
314     cmd.SetValueBucket(val);
315     ret = g_uniStore->Insert(cmd, rowId);
316     EXPECT_EQ(ret, E_OK);
317     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
318     EXPECT_EQ(ret, E_OK);
319 
320     RingtoneDataCommand cmdDelete(uri, RINGTONE_TABLE, RingtoneOperationType::DELETE);
321     DataShare::DataSharePredicates predicates;
322     NativeRdb::RdbPredicates rdbPredicate = RdbDataShareAdapter::RdbUtils::ToPredicates(predicates, RINGTONE_TABLE);
323     cmdDelete.GetAbsRdbPredicates()->SetWhereClause(rdbPredicate.GetWhereClause());
324     cmdDelete.GetAbsRdbPredicates()->SetWhereArgs(rdbPredicate.GetWhereArgs());
325     int32_t deletedRows = 1;
326     ret = g_uniStore->Delete(cmdDelete, deletedRows);
327     EXPECT_EQ(ret, E_OK);
328 }
329 
330 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CleanupSetting_test_003, TestSize.Level0)
331 {
332     Uri uri(RINGTONE_PATH_URI);
333     RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
334     NativeRdb::ValuesBucket values;
335     const string name = "test_name";
336     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
337     const string data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_001";
338     values.PutString(RINGTONE_COLUMN_DATA, data);
339     const string title = "insert test";
340     values.PutString(RINGTONE_COLUMN_TITLE, title);
341     values.Put(RINGTONE_COLUMN_ALARM_TONE_SOURCE_TYPE, static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET));
342     values.Put(RINGTONE_COLUMN_ALARM_TONE_TYPE, static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE));
343     cmd.SetValueBucket(values);
344     int64_t rowId = E_HAS_DB_ERROR;
345     auto ret = g_uniStore->Insert(cmd, rowId);
346     EXPECT_EQ(ret, E_OK);
347 
348     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_ALARM);
349     int32_t toneType = static_cast<int32_t>(AlarmToneType::ALARM_TONE_TYPE);
350     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET);
351     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
352     EXPECT_EQ(ret, E_OK);
353     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_NOTIFICATION);
354     toneType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE);
355     sourceType = static_cast<int32_t>(NotificationToneType::NOTIFICATION_TONE_TYPE);
356     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
357     EXPECT_EQ(ret, E_OK);
358     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_MAX);
359     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
360     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
361     g_ringtoneSettingManager->ringtoneRdb_ = nullptr;
362     ret = g_ringtoneSettingManager->CleanupSetting(settingType, toneType, sourceType);
363     EXPECT_EQ(ret, E_DB_FAIL);
364 
365     RingtoneDataCommand cmdDelete(uri, RINGTONE_TABLE, RingtoneOperationType::DELETE);
366     DataShare::DataSharePredicates predicates;
367     NativeRdb::RdbPredicates rdbPredicate = RdbDataShareAdapter::RdbUtils::ToPredicates(predicates, RINGTONE_TABLE);
368     cmdDelete.GetAbsRdbPredicates()->SetWhereClause(rdbPredicate.GetWhereClause());
369     cmdDelete.GetAbsRdbPredicates()->SetWhereArgs(rdbPredicate.GetWhereArgs());
370     int32_t deletedRows = 1;
371     ret = g_uniStore->Delete(cmdDelete, deletedRows);
372     EXPECT_EQ(ret, E_OK);
373 }
374 
375 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CommitSetting_test_001, TestSize.Level0)
376 {
377     std::shared_ptr<RingtoneMetadata> ringtoneMetadata = std::make_shared<RingtoneMetadata>();
378     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_ALARM);
379     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH);
380     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_PRESET);
381     int32_t toneId = 0;
382     string tonePath = "settingMetadata_CommitSetting_test_001";
383     auto ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
384     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
385     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
386     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
387     EXPECT_EQ(ret, E_OK);
388     g_ringtoneSettingManager->FlushSettings();
389     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
390     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
391     EXPECT_EQ(ret, E_OK);
392     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_NOT);
393     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
394     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
395     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_SHOT);
396     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
397     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
398     EXPECT_EQ(ret, E_OK);
399     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_2);
400     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
401     EXPECT_EQ(ret, E_OK);
402     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_RINGTONE);
403     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
404     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
405     EXPECT_EQ(ret, E_FAIL);
406     g_ringtoneSettingManager->FlushSettings();
407     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_1);
408     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
409     EXPECT_EQ(ret, E_OK);
410     toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_2);
411     ret = g_ringtoneSettingManager->CommitSetting(toneId, tonePath, settingType, toneType, sourceType);
412     EXPECT_EQ(ret, E_OK);
413 }
414 
415 HWTEST_F(RingtoneSettingManagerTest, settingMetadata_CommitSettingCompare_test_001, TestSize.Level0)
416 {
417     int32_t settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_ALARM);
418     int32_t toneType = static_cast<int32_t>(ShotToneType::SHOT_TONE_TYPE_SIM_CARD_BOTH);
419     int32_t sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_MAX);
420     auto ret = g_ringtoneSettingManager->CommitSettingCompare(settingType, toneType, sourceType);
421     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
422     sourceType = static_cast<int32_t>(SourceType::SOURCE_TYPE_CUSTOMISED);
423     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_INVALID);
424     ret = g_ringtoneSettingManager->CommitSettingCompare(settingType, toneType, sourceType);
425     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
426     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_MAX);
427     ret = g_ringtoneSettingManager->CommitSettingCompare(settingType, toneType, sourceType);
428     EXPECT_EQ(ret, E_INVALID_ARGUMENTS);
429     settingType = static_cast<int32_t>(ToneSettingType::TONE_SETTING_TYPE_NOTIFICATION);
430     toneType = NOTIFICATION_TONE_TYPE;
431     ret = g_ringtoneSettingManager->CommitSettingCompare(settingType, toneType, sourceType);
432     EXPECT_EQ(ret, E_OK);
433 }
434 } // namespace Media
435 } // namespace OHOS