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