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