1 /*
2 * Copyright (c) 2021-2022 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 "voicemailability_test.h"
17
18 #include "data_ability_operation_builder.h"
19 #include "random_number_utils.h"
20
21 using namespace OHOS::Contacts;
22
23 namespace Contacts {
24 namespace Test {
VoicemailAbilityTest()25 VoicemailAbilityTest::VoicemailAbilityTest()
26 {
27 }
28
~VoicemailAbilityTest()29 VoicemailAbilityTest::~VoicemailAbilityTest()
30 {
31 }
32
VoicemailStatusInsert(std::string phoneNumber, int status)33 int64_t VoicemailAbilityTest::VoicemailStatusInsert(std::string phoneNumber, int status)
34 {
35 OHOS::Uri uriVoicemail(VoicemailUri::VOICEMAIL);
36 OHOS::DataShare::DataShareValuesBucket voicemailValues;
37 voicemailValues.Put("phone_number", phoneNumber);
38 voicemailValues.Put("voice_status", status);
39 int64_t code = voicemailAbility.Insert(uriVoicemail, voicemailValues);
40 return code;
41 }
42
VoicemailUpdate( OHOS::DataShare::DataShareValuesBucket updateValues, OHOS::DataShare::DataSharePredicates predicates)43 int VoicemailAbilityTest::VoicemailUpdate(
44 OHOS::DataShare::DataShareValuesBucket updateValues, OHOS::DataShare::DataSharePredicates predicates)
45 {
46 OHOS::Uri uriVoicemail(VoicemailUri::VOICEMAIL);
47 int code = voicemailAbility.Update(uriVoicemail, predicates, updateValues);
48 return code;
49 }
50
VoicemailDelete(OHOS::DataShare::DataSharePredicates predicates)51 int VoicemailAbilityTest::VoicemailDelete(OHOS::DataShare::DataSharePredicates predicates)
52 {
53 OHOS::Uri uriVoicemail(VoicemailUri::VOICEMAIL);
54 int code = voicemailAbility.Delete(uriVoicemail, predicates);
55 return code;
56 }
57
VoicemailQuery( std::vector<std::string> columns, OHOS::DataShare::DataSharePredicates predicates)58 std::shared_ptr<OHOS::DataShare::DataShareResultSet> VoicemailAbilityTest::VoicemailQuery(
59 std::vector<std::string> columns, OHOS::DataShare::DataSharePredicates predicates)
60 {
61 OHOS::Uri uriVoicemail(VoicemailUri::VOICEMAIL);
62 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet =
63 voicemailAbility.Query(uriVoicemail, predicates, columns);
64 return resultSet;
65 }
66
CheckResultSetBatch(OHOS::DataShare::DataSharePredicates predicates, std::vector<std::string> &columns, OHOS::DataShare::DataShareValuesBucket values, std::string testName)67 void VoicemailAbilityTest::CheckResultSetBatch(OHOS::DataShare::DataSharePredicates predicates,
68 std::vector<std::string> &columns, OHOS::DataShare::DataShareValuesBucket values, std::string testName)
69 {
70 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = VoicemailQuery(columns, predicates);
71 int rowCount = 0;
72 resultSet->GetRowCount(rowCount);
73 EXPECT_EQ(1, rowCount);
74 CheckResultSet(values, resultSet, testName);
75 }
76
VoicemailInsertValues(OHOS::DataShare::DataShareValuesBucket &values)77 int VoicemailAbilityTest::VoicemailInsertValues(OHOS::DataShare::DataShareValuesBucket &values)
78 {
79 OHOS::Uri uriVoicemail(VoicemailUri::VOICEMAIL);
80 int64_t code = voicemailAbility.Insert(uriVoicemail, values);
81 int result = code;
82 return result;
83 }
84
VoicemailInsertValue(std::string displayName, OHOS::DataShare::DataShareValuesBucket &values)85 int64_t VoicemailAbilityTest::VoicemailInsertValue(std::string displayName,
86 OHOS::DataShare::DataShareValuesBucket &values)
87 {
88 OHOS::Uri uriVoicemail(VoicemailUri::VOICEMAIL);
89 values.Put("display_name", displayName);
90 int64_t code = voicemailAbility.Insert(uriVoicemail, values);
91 return code;
92 }
93
GetVoiceMailValues( int columnsStart, int columnsEnd, std::vector<std::string> &columns)94 OHOS::DataShare::DataShareValuesBucket VoicemailAbilityTest::GetVoiceMailValues(
95 int columnsStart, int columnsEnd, std::vector<std::string> &columns)
96 {
97 std::string voiceMailTestStringValue = std::to_string(ContactsRand());
98 OHOS::DataShare::DataShareValuesBucket valuesBucket;
99 RandomNumberUtils randomNumberUtils;
100 std::string phoneNumber = randomNumberUtils.Generating(8);
101 valuesBucket.Put("phone_number", phoneNumber + voiceMailTestStringValue);
102 valuesBucket.Put("quicksearch_key", "dfquicksearch_key" + voiceMailTestStringValue);
103 valuesBucket.Put("display_name", "dfName" + voiceMailTestStringValue);
104 valuesBucket.Put("voicemail_uri", "dfUri::voicemail_uri" + voiceMailTestStringValue);
105 valuesBucket.Put("voicemail_type", ContactsRand());
106 valuesBucket.Put("voice_file_size", ContactsRand());
107 valuesBucket.Put("voice_duration", ContactsRand());
108 valuesBucket.Put("voice_status", ContactsRand());
109 valuesBucket.Put("origin_type", "origin_type" + voiceMailTestStringValue);
110 valuesBucket.Put("create_time", ContactsRand());
111 std::vector<std::string> columnsTemp;
112 GetVoiceMailValuesColumn(columnsTemp);
113 int allSize = columnsTemp.size();
114 for (int i = 0; i < allSize; i++) {
115 if (i >= columnsStart && i < columnsEnd) {
116 columns.push_back(columnsTemp[i]);
117 } else {
118 valuesBucket.Put(columnsTemp[i], "");
119 }
120 }
121 return valuesBucket;
122 }
123
GetVoiceMailValuesColumn(std::vector<std::string> &columns)124 void VoicemailAbilityTest::GetVoiceMailValuesColumn(std::vector<std::string> &columns)
125 {
126 columns.push_back("phone_number");
127 columns.push_back("quicksearch_key");
128 columns.push_back("display_name");
129 columns.push_back("voicemail_uri");
130 columns.push_back("voicemail_type");
131 columns.push_back("voice_file_size");
132 columns.push_back("voice_duration");
133 columns.push_back("voice_status");
134 columns.push_back("origin_type");
135 columns.push_back("create_time");
136 }
137
ClearVoicemail()138 void VoicemailAbilityTest::ClearVoicemail()
139 {
140 OHOS::DataShare::DataSharePredicates predicates;
141 predicates.GreaterThan("id", "0");
142 int deleteCode = VoicemailDelete(predicates);
143 EXPECT_EQ(0, deleteCode);
144 }
145
146 /*
147 * @tc.number voicemail_Insert_test_100
148 * @tc.name Add a voice mailbox with status 1 and verify that the insertion was successful
149 * @tc.desc Added ability to voice mailbox status
150 * @tc.level Level1
151 * @tc.size MediumTest
152 * @tc.type Function
153 */
HWTEST_F(VoicemailAbilityTest, voicemail_Insert_test_100, testing::ext::TestSize.Level1)154 HWTEST_F(VoicemailAbilityTest, voicemail_Insert_test_100, testing::ext::TestSize.Level1)
155 {
156 HILOG_INFO("--- voicemail_Insert_test_100 is starting! ---");
157 OHOS::DataShare::DataShareValuesBucket values;
158 RandomNumberUtils randomNumberUtils;
159 std::string phoneNumber = randomNumberUtils.Generating(6);
160 values.Put("phone_number", phoneNumber);
161 values.Put("voice_status", 1);
162 int voicemailId = VoicemailInsertValues(values);
163 HILOG_INFO("voicemail_Insert_test_100 : voicemailId = %{public}d", voicemailId);
164 EXPECT_GT(voicemailId, 0);
165
166 OHOS::DataShare::DataSharePredicates predicates;
167 predicates.EqualTo("id", std::to_string(voicemailId));
168 std::vector<std::string> columns;
169 columns.push_back("phone_number");
170 columns.push_back("voice_status");
171 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
172 int rowCount = 0;
173 result->GetRowCount(rowCount);
174 EXPECT_EQ(1, rowCount);
175 CheckResultSet(values, result, "voicemail_Insert_test_100");
176 ClearVoicemail();
177 }
178
179 /*
180 * @tc.number voicemail_Insert_test_200
181 * @tc.name Add a single piece of voicemail data and verify whether the insertion is successful
182 * @tc.desc New capabilities for voicemail data
183 * @tc.level Level1
184 * @tc.size MediumTest
185 * @tc.type Function
186 */
HWTEST_F(VoicemailAbilityTest, voicemail_Insert_test_200, testing::ext::TestSize.Level1)187 HWTEST_F(VoicemailAbilityTest, voicemail_Insert_test_200, testing::ext::TestSize.Level1)
188 {
189 HILOG_INFO("--- voicemail_Insert_test_200 is staring! ---");
190 OHOS::DataShare::DataShareValuesBucket values;
191 RandomNumberUtils randomNumberUtils;
192 std::string phoneNumber = randomNumberUtils.Generating(6);
193 values.Put("phone_number", phoneNumber);
194 int voicemailId = VoicemailInsertValues(values);
195 HILOG_INFO("voicemail_Insert_test_200 : voicemailId = %{public}d", voicemailId);
196 EXPECT_GT(voicemailId, 0);
197 OHOS::DataShare::DataSharePredicates predicates;
198 predicates.EqualTo("id", std::to_string(voicemailId));
199 std::vector<std::string> columns;
200 columns.push_back("phone_number");
201 columns.push_back("id");
202 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
203 int rowCount = 0;
204 result->GetRowCount(rowCount);
205 EXPECT_EQ(1, rowCount);
206 CheckResultSet(values, result, "voicemail_Insert_test_200");
207 ClearVoicemail();
208 }
209
210 /*
211 * @tc.number voicemail_Insert_test_300
212 * @tc.name Add a full field data to voicemail and verify that the insertion was successful
213 * @tc.desc Added ability to call record
214 * @tc.level Level1
215 * @tc.size MediumTest
216 * @tc.type Function
217 */
HWTEST_F(VoicemailAbilityTest, voicemail_Insert_test_300, testing::ext::TestSize.Level1)218 HWTEST_F(VoicemailAbilityTest, voicemail_Insert_test_300, testing::ext::TestSize.Level1)
219 {
220 HILOG_INFO("-----voicemail_Insert_test_300 is starting!-----");
221 std::vector<std::string> columns;
222 GetVoiceMailValuesColumn(columns);
223 int columnsSize = 10;
224 OHOS::DataShare::DataShareValuesBucket valuesBucket = GetVoiceMailValues(0, columnsSize, columns);
225 int rawId = VoicemailInsertValues(valuesBucket);
226 EXPECT_GT(rawId, 0);
227
228 OHOS::DataShare::DataSharePredicates predicates;
229 predicates.EqualTo("id", std::to_string(rawId));
230 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = VoicemailQuery(columns, predicates);
231 // resultSet count 1
232 int rowCount = 0;
233 resultSet->GetRowCount(rowCount);
234 EXPECT_EQ(1, rowCount);
235
236 CheckResultSet(valuesBucket, resultSet, "voicemail_Insert_test_300");
237 OHOS::DataShare::DataSharePredicates predicates2;
238 predicates2.EqualTo("id", std::to_string(rawId));
239 // test end delete data
240 int deleteCode = VoicemailDelete(predicates2);
241 EXPECT_EQ(deleteCode, 0);
242 ClearVoicemail();
243 }
244
245 /*
246 * @tc.number voicemail_Update_test_400
247 * @tc.name Delete the voicemail status and verify that the deletion was successful
248 * @tc.desc Voicemail status deletion capability
249 * @tc.level Level1
250 * @tc.size MediumTest
251 * @tc.type Function
252 */
HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_400, testing::ext::TestSize.Level1)253 HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_400, testing::ext::TestSize.Level1)
254 {
255 HILOG_INFO("--- voicemail_Update_test_400 is starting! ---");
256 OHOS::DataShare::DataShareValuesBucket values;
257 RandomNumberUtils randomNumberUtils;
258 std::string phoneNumber = randomNumberUtils.Generating(4);
259 values.Put("phone_number", phoneNumber);
260 values.Put("voice_status", 1);
261 int voicemailId = VoicemailInsertValues(values);
262 EXPECT_GT(voicemailId, 0);
263
264 OHOS::DataShare::DataShareValuesBucket updateValues;
265 updateValues.Put("voice_status", 0);
266 OHOS::DataShare::DataSharePredicates predicates;
267 predicates.EqualTo("id", std::to_string(voicemailId));
268 int updateCode = VoicemailUpdate(updateValues, predicates);
269 EXPECT_EQ(updateCode, 0);
270
271 OHOS::DataShare::DataSharePredicates predicates2;
272 predicates2.EqualTo("voice_status", "0");
273 predicates2.And();
274 predicates2.EqualTo("id", std::to_string(voicemailId));
275 std::vector<std::string> columns;
276 columns.push_back("voice_status");
277 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates2);
278 int rowCount = 0;
279 result->GetRowCount(rowCount);
280 EXPECT_EQ(1, rowCount);
281 CheckResultSet(updateValues, result, "voicemail_Update_test_400");
282 ClearVoicemail();
283 }
284
285 /*
286 * @tc.number voicemail_Delete_test_500
287 * @tc.name Delete a single voice mailbox data and verify whether the deletion is successful
288 * @tc.desc Voicemail data deletion capability
289 * @tc.level Level1
290 * @tc.size MediumTest
291 * @tc.type Function
292 */
HWTEST_F(VoicemailAbilityTest, voicemail_Delete_test_500, testing::ext::TestSize.Level1)293 HWTEST_F(VoicemailAbilityTest, voicemail_Delete_test_500, testing::ext::TestSize.Level1)
294 {
295 HILOG_INFO("--- voicemail_Delete_test_500 is starting! ---");
296 OHOS::DataShare::DataShareValuesBucket values;
297 RandomNumberUtils randomNumberUtils;
298 std::string phoneNumber = randomNumberUtils.Generating(6);
299 values.Put("phone_number", phoneNumber);
300 int voicemailId = VoicemailInsertValues(values);
301 HILOG_INFO("voicemail_Delete_test_500 : voicemailId = %{public}d", voicemailId);
302 EXPECT_GT(voicemailId, 0);
303
304 OHOS::DataShare::DataSharePredicates predicates;
305 predicates.EqualTo("id", std::to_string(voicemailId));
306 int deleteCode = VoicemailDelete(predicates);
307 HILOG_INFO("voicemail_Delete_test_500: deleteCode = %{public}d", deleteCode);
308 EXPECT_EQ(deleteCode, 0);
309
310 OHOS::DataShare::DataSharePredicates predicates2;
311 predicates2.EqualTo("id", std::to_string(voicemailId));
312 std::vector<std::string> columns;
313 columns.push_back("phone_number");
314 columns.push_back("id");
315 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates2);
316 int rowCount = 0;
317 result->GetRowCount(rowCount);
318 EXPECT_EQ(0, rowCount);
319 result->Close();
320 ClearVoicemail();
321 }
322
323 /*
324 * @tc.number voicemail_Delete_test_600
325 * @tc.name Insert 3 pieces of voicemail data first, then delete 2 of them, and verify whether the deletion is
326 * successful
327 * @tc.desc Voicemail data deletion capability
328 * @tc.level Level1
329 * @tc.size MediumTest
330 * @tc.type Function
331 */
HWTEST_F(VoicemailAbilityTest, voicemail_Delete_test_600, testing::ext::TestSize.Level1)332 HWTEST_F(VoicemailAbilityTest, voicemail_Delete_test_600, testing::ext::TestSize.Level1)
333 {
334 HILOG_INFO("--- voicemail_Delete_test_600 is staring! ---");
335 OHOS::DataShare::DataShareValuesBucket valuesOne;
336 RandomNumberUtils randomNumberUtils;
337 std::string phoneNumber = randomNumberUtils.Generating(7);
338 valuesOne.Put("phone_number", phoneNumber);
339 int voicemailIdOne = VoicemailInsertValues(valuesOne);
340 HILOG_INFO("voicemail_Delete_test_600 : voicemailIdOne = %{public}d", voicemailIdOne);
341 EXPECT_GT(voicemailIdOne, 0);
342
343 OHOS::DataShare::DataShareValuesBucket valuesTwo;
344 valuesTwo.Put("phone_number", phoneNumber);
345 int voicemailIdTwo = VoicemailInsertValues(valuesTwo);
346 HILOG_INFO("voicemail_Delete_test_600 : voicemailIdTwo = %{public}d", voicemailIdTwo);
347 EXPECT_GT(voicemailIdTwo, 0);
348
349 OHOS::DataShare::DataShareValuesBucket valuesThree;
350 valuesThree.Put("phone_number", phoneNumber);
351 int voicemailIdThree = VoicemailInsertValues(valuesThree);
352 HILOG_INFO("voicemail_Delete_test_600 : voicemailIdThree = %{public}d", voicemailIdThree);
353 EXPECT_GT(voicemailIdThree, 0);
354
355 OHOS::DataShare::DataSharePredicates predicates;
356 predicates.EqualTo("id", std::to_string(voicemailIdOne));
357 predicates.Or();
358 predicates.EqualTo("id", std::to_string(voicemailIdThree));
359 int deleteCode = VoicemailDelete(predicates);
360 HILOG_INFO("voicemail_Delete_test_600: deleteCode = %{public}d", deleteCode);
361 EXPECT_EQ(deleteCode, 0);
362
363 std::vector<std::string> columns;
364 columns.push_back("phone_number");
365 columns.push_back("id");
366 valuesTwo.Put("id", voicemailIdTwo);
367 OHOS::DataShare::DataSharePredicates predicates2;
368 predicates2.EqualTo("id", std::to_string(voicemailIdOne));
369 predicates2.Or();
370 predicates2.EqualTo("id", std::to_string(voicemailIdTwo));
371 predicates2.Or();
372 predicates2.EqualTo("id", std::to_string(voicemailIdThree));
373 predicates2.OrderByAsc("id");
374 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates2);
375 int rowCount = 0;
376 result->GetRowCount(rowCount);
377 EXPECT_EQ(1, rowCount);
378 CheckResultSet(valuesTwo, result, "voicemail_Delete_test_600");
379 ClearVoicemail();
380 }
381
382 /*
383 * @tc.number voicemail_Delete_test_700
384 * @tc.name Delete all fields of single voice mailbox data, and verify whether the deletion is successful
385 * @tc.desc Call log deletion capability
386 * @tc.level Level1
387 * @tc.size MediumTest
388 * @tc.type Function
389 */
HWTEST_F(VoicemailAbilityTest, voicemail_Delete_test_700, testing::ext::TestSize.Level1)390 HWTEST_F(VoicemailAbilityTest, voicemail_Delete_test_700, testing::ext::TestSize.Level1)
391 {
392 HILOG_INFO("-----voicemail_Delete_test_700 is starting!-----");
393 // insert
394 std::vector<std::string> columns;
395 GetVoiceMailValuesColumn(columns);
396 int columnsSize = 10;
397 OHOS::DataShare::DataShareValuesBucket valuesBucket = GetVoiceMailValues(0, columnsSize, columns);
398 int rawId = VoicemailInsertValues(valuesBucket);
399 EXPECT_GT(rawId, 0);
400
401 OHOS::DataShare::DataSharePredicates predicates;
402 predicates.EqualTo("id", std::to_string(rawId));
403 // test end delete data
404 int deleteCode = VoicemailDelete(predicates);
405 EXPECT_EQ(deleteCode, 0);
406
407 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetDeleteQuery = VoicemailQuery(columns, predicates);
408 // resultSet count 0
409 int rowCount = 0;
410 resultSetDeleteQuery->GetRowCount(rowCount);
411 EXPECT_EQ(0, rowCount);
412 resultSetDeleteQuery->Close();
413 HILOG_INFO("-----voicemail_Delete_test_700 is edn!-----");
414 ClearVoicemail();
415 }
416
417 /*
418 * @tc.number voicemail_Delete_test_800
419 * @tc.name Delete voice mailbox data in batch and verify whether the deletion is successful
420 * @tc.desc delete ability to call records in batches
421 * @tc.level Level1
422 * @tc.size MediumTest
423 * @tc.type Function
424 */
HWTEST_F(VoicemailAbilityTest, voicemail_Delete_test_800, testing::ext::TestSize.Level1)425 HWTEST_F(VoicemailAbilityTest, voicemail_Delete_test_800, testing::ext::TestSize.Level1)
426 {
427 HILOG_INFO("--- voicemail_Delete_test_800 is starting!---");
428 OHOS::DataShare::DataShareValuesBucket voicemailValues;
429 RandomNumberUtils randomNumberUtils;
430 std::string phoneNumber = randomNumberUtils.Generating(6);
431 voicemailValues.Put("phone_number", phoneNumber);
432 int voicemailIdOne = VoicemailInsertValues(voicemailValues);
433 EXPECT_GT(voicemailIdOne, 0);
434 voicemailValues.Put("phone_number", phoneNumber);
435 int voicemailIdTwo = VoicemailInsertValues(voicemailValues);
436 EXPECT_GT(voicemailIdTwo, 0);
437
438 OHOS::DataShare::DataSharePredicates predicates;
439 predicates.GreaterThan("id", "0");
440 std::shared_ptr<OHOS::DataShare::DataSharePredicates> executePredicates =
441 std::make_shared<OHOS::DataShare::DataSharePredicates>(predicates);
442 std::shared_ptr<Uri> uri = std::make_shared<Uri>(VoicemailUri::VOICEMAIL);
443 std::shared_ptr<OHOS::DataShare::DataShareOperation> operation =
444 OHOS::DataShare::DataShareOperation::NewDeleteBuilder(uri)
445 ->WithPredicatesBackReference(0, 0)
446 ->WithPredicates(executePredicates)
447 ->WithInterruptionAllowed(true)
448 ->Build();
449 std::vector<std::shared_ptr<OHOS::DataShare::DataShareOperation>> executeBatchOperations;
450 executeBatchOperations.push_back(operation);
451 InitAbility();
452 std::vector<std::shared_ptr<OHOS::DataShare::DataShareResult>> dataShareResult =
453 voicemailAbility.ExecuteBatch(executeBatchOperations);
454 EXPECT_EQ(0, dataShareResult[0]->GetCount());
455 std::vector<std::string> columns;
456 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetInsertQuery = VoicemailQuery(columns, predicates);
457 int rowCount = 0;
458 resultSetInsertQuery->GetRowCount(rowCount);
459 EXPECT_EQ(0, rowCount);
460 ClearVoicemail();
461 }
462
463 /*
464 * @tc.number voicemail_Update_test_900
465 * @tc.name Update the voice mailbox status and verify whether the update is successful (voice_status changes from 0
466 * to 1)
467 * @tc.desc Voicemail status update capability
468 * @tc.level Level1
469 * @tc.size MediumTest
470 * @tc.type Function
471 */
HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_900, testing::ext::TestSize.Level1)472 HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_900, testing::ext::TestSize.Level1)
473 {
474 HILOG_INFO("--- voicemail_Update_test_900 is starting! ---");
475 OHOS::DataShare::DataShareValuesBucket values;
476 RandomNumberUtils randomNumberUtils;
477 std::string phoneNumber = randomNumberUtils.Generating(9);
478 values.Put("phone_number", phoneNumber);
479 values.Put("voice_status", 0);
480 int voicemailId = VoicemailInsertValues(values);
481 HILOG_INFO("voicemail_Update_test_900 : voicemailId = %{public}d", voicemailId);
482 EXPECT_GT(voicemailId, 0);
483
484 OHOS::DataShare::DataShareValuesBucket updateValues;
485 updateValues.Put("voice_status", 1);
486 OHOS::DataShare::DataSharePredicates predicates;
487 predicates.EqualTo("id", std::to_string(voicemailId));
488 int updateCode = VoicemailUpdate(updateValues, predicates);
489 EXPECT_EQ(updateCode, 0);
490
491 updateValues.Put("phone_number", phoneNumber);
492 OHOS::DataShare::DataSharePredicates predicates2;
493 predicates2.EqualTo("id", std::to_string(voicemailId));
494 std::vector<std::string> columns;
495 columns.push_back("phone_number");
496 columns.push_back("voice_status");
497 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates2);
498 int rowCount = 0;
499 result->GetRowCount(rowCount);
500 EXPECT_EQ(1, rowCount);
501 CheckResultSet(updateValues, result, "voicemail_Update_test_900");
502 ClearVoicemail();
503 }
504
505 /*
506 * @tc.number voicemail_Update_test_1000
507 * @tc.name FUpdate single voicemail data and verify whether the update is successful
508 * @tc.desc Voicemail data update capability
509 * @tc.level Level1
510 * @tc.size MediumTest
511 * @tc.type Function
512 */
HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_1000, testing::ext::TestSize.Level1)513 HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_1000, testing::ext::TestSize.Level1)
514 {
515 HILOG_INFO("--- voicemail_Update_test_1000 is staring! ---");
516 OHOS::DataShare::DataShareValuesBucket values;
517 RandomNumberUtils randomNumberUtils;
518 std::string phoneNumber = randomNumberUtils.Generating(5);
519 values.Put("phone_number", phoneNumber);
520 int voicemailId = VoicemailInsertValues(values);
521 HILOG_INFO("voicemail_Update_test_1000 : voicemailId = %{public}d", voicemailId);
522 EXPECT_GT(voicemailId, 0);
523
524 OHOS::DataShare::DataShareValuesBucket updateValues;
525 std::string phoneNumber_test = randomNumberUtils.Generating(11);
526 updateValues.Put("phone_number", std::string(phoneNumber_test));
527 OHOS::DataShare::DataSharePredicates predicates;
528 predicates.EqualTo("id", std::to_string(voicemailId));
529 int updateCode = VoicemailUpdate(updateValues, predicates);
530 HILOG_INFO("voicemail_Update_test_1000: updateCode = %{public}d", updateCode);
531 EXPECT_EQ(updateCode, 0);
532
533 OHOS::DataShare::DataSharePredicates predicates2;
534 predicates2.EqualTo("id", std::to_string(voicemailId));
535 std::vector<std::string> columns;
536 columns.push_back("phone_number");
537 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates2);
538 int rowCount = 0;
539 result->GetRowCount(rowCount);
540 EXPECT_EQ(1, rowCount);
541 CheckResultSet(updateValues, result, "voicemail_Update_test_1000");
542 ClearVoicemail();
543 }
544
545 /*
546 * @tc.number voicemail_Update_test_1100
547 * @tc.name Insert 3 pieces of voicemail data, modify 2 of them, and verify whether the modification is successful
548 * @tc.desc Voicemail data update capability
549 * @tc.level Level1
550 * @tc.size MediumTest
551 * @tc.type Function
552 */
HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_1100, testing::ext::TestSize.Level1)553 HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_1100, testing::ext::TestSize.Level1)
554 {
555 HILOG_INFO("--- voicemail_Update_test_1100 is staring! ---");
556 OHOS::DataShare::DataShareValuesBucket valuesOne;
557 RandomNumberUtils randomNumberUtils;
558 std::string phoneNumber = randomNumberUtils.Generating(9);
559 valuesOne.Put("phone_number", phoneNumber);
560 int voicemailIdOne = VoicemailInsertValues(valuesOne);
561 EXPECT_GT(voicemailIdOne, 0);
562
563 OHOS::DataShare::DataShareValuesBucket valuesTwo;
564 valuesTwo.Put("phone_number", phoneNumber);
565 int voicemailIdTwo = VoicemailInsertValues(valuesTwo);
566 EXPECT_GT(voicemailIdTwo, 0);
567
568 OHOS::DataShare::DataShareValuesBucket valuesThree;
569 valuesThree.Put("phone_number", phoneNumber);
570 int voicemailIdThree = VoicemailInsertValues(valuesThree);
571 EXPECT_GT(voicemailIdThree, 0);
572
573 OHOS::DataShare::DataShareValuesBucket updateValues;
574 std::string phoneNumber_test = randomNumberUtils.Generating(8);
575 updateValues.Put("phone_number", std::string(phoneNumber_test));
576 OHOS::DataShare::DataSharePredicates predicates;
577 predicates.EqualTo("id", std::to_string(voicemailIdOne));
578 int updateCode = VoicemailUpdate(updateValues, predicates);
579 EXPECT_EQ(updateCode, 0);
580
581 OHOS::DataShare::DataShareValuesBucket updateValuesTwo;
582 std::string phoneNumber_test_name = randomNumberUtils.Generating(7);
583 updateValuesTwo.Put("phone_number", std::string(phoneNumber_test_name));
584 OHOS::DataShare::DataSharePredicates predicates2;
585 predicates2.EqualTo("id", std::to_string(voicemailIdTwo));
586 updateCode = VoicemailUpdate(updateValuesTwo, predicates2);
587 EXPECT_EQ(updateCode, 0);
588
589 std::vector<std::string> columns;
590 columns.push_back("phone_number");
591 OHOS::DataShare::DataSharePredicates predicates3;
592 predicates3.EqualTo("id", std::to_string(voicemailIdOne));
593 predicates3.Or();
594 predicates3.EqualTo("id", std::to_string(voicemailIdTwo));
595 predicates3.OrderByAsc("id");
596 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates3);
597 int rowCount = 0;
598 result->GetRowCount(rowCount);
599 EXPECT_EQ(2, rowCount);
600 std::vector<OHOS::DataShare::DataShareValuesBucket> valuesVector;
601 valuesVector.push_back(updateValues);
602 valuesVector.push_back(updateValuesTwo);
603 CheckResultSetList(valuesVector, result, "voicemail_Update_test_1100");
604 ClearVoicemail();
605 }
606
607 /*
608 * @tc.number voicemail_Update_test_1200
609 * @tc.name Update the full field data of voice mailbox and verify whether the update is successful
610 * @tc.desc Support all call log update capability
611 * @tc.level Level1
612 * @tc.size MediumTest
613 * @tc.type Function
614 */
HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_1200, testing::ext::TestSize.Level1)615 HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_1200, testing::ext::TestSize.Level1)
616 {
617 HILOG_INFO("-----voicemail_Update_test_1200 is starting!-----");
618 std::vector<std::string> columns;
619 GetVoiceMailValuesColumn(columns);
620 int columnsSize = 10;
621 OHOS::DataShare::DataShareValuesBucket valuesBucket = GetVoiceMailValues(0, columnsSize, columns);
622 int rawId = VoicemailInsertValues(valuesBucket);
623 OHOS::DataShare::DataSharePredicates predicates;
624 predicates.EqualTo("id", std::to_string(rawId));
625 OHOS::DataShare::DataShareValuesBucket upDateValuesBucket = GetVoiceMailValues(0, columnsSize, columns);
626 int upDateCode = VoicemailUpdate(upDateValuesBucket, predicates);
627 EXPECT_EQ(upDateCode, 0);
628
629 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = VoicemailQuery(columns, predicates);
630 // resultSet count 1
631 int rowCount = 0;
632 resultSet->GetRowCount(rowCount);
633 EXPECT_EQ(1, rowCount);
634
635 CheckResultSet(upDateValuesBucket, resultSet, "voicemail_Update_test_1200");
636 OHOS::DataShare::DataSharePredicates predicates2;
637 predicates2.EqualTo("id", std::to_string(rawId));
638 // test end delete data
639 int deleteCode = VoicemailDelete(predicates2);
640 EXPECT_EQ(deleteCode, 0);
641 HILOG_INFO("-----voicemail_Update_test_1200 is edn!-----");
642 ClearVoicemail();
643 }
644
645 /*
646 * @tc.number voicemail_Update_test_1300
647 * @tc.name Batch update voice mailbox data and verify whether the update is successful
648 * @tc.desc update ability to call records in batches
649 * @tc.level Level1
650 * @tc.size MediumTest
651 * @tc.type Function
652 */
HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_1300, testing::ext::TestSize.Level1)653 HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_1300, testing::ext::TestSize.Level1)
654 {
655 HILOG_INFO("--- voicemail_Update_test_1300 is starting!---");
656 OHOS::DataShare::DataShareValuesBucket voicemailValues;
657 RandomNumberUtils randomNumberUtils;
658 std::string phoneNumber = randomNumberUtils.Generating(6);
659 voicemailValues.Put("phone_number", phoneNumber);
660 int voicemailIdOne = VoicemailInsertValues(voicemailValues);
661 EXPECT_GT(voicemailIdOne, 0);
662 voicemailValues.Put("phone_number", phoneNumber);
663 int voicemailIdTwo = VoicemailInsertValues(voicemailValues);
664 EXPECT_GT(voicemailIdTwo, 0);
665 OHOS::DataShare::DataSharePredicates predicates;
666 predicates.EqualTo("id", std::to_string(voicemailIdOne));
667 predicates.Or();
668 predicates.EqualTo("id", std::to_string(voicemailIdTwo));
669 std::shared_ptr<OHOS::DataShare::DataShareValuesBucket> values =
670 std::make_shared<OHOS::DataShare::DataShareValuesBucket>(voicemailValues);
671 std::shared_ptr<OHOS::DataShare::DataSharePredicates> executePredicates =
672 std::make_shared<OHOS::DataShare::DataSharePredicates>(predicates);
673 std::shared_ptr<Uri> uri = std::make_shared<Uri>(VoicemailUri::VOICEMAIL);
674 std::shared_ptr<OHOS::DataShare::DataShareOperation> operation =
675 OHOS::DataShare::DataShareOperation::NewUpdateBuilder(uri)
676 ->WithValuesBucket(values)
677 ->WithPredicatesBackReference(0, 0)
678 ->WithPredicates(executePredicates)
679 ->WithInterruptionAllowed(true)
680 ->Build();
681 std::vector<std::shared_ptr<OHOS::DataShare::DataShareOperation>> executeBatchOperations;
682 executeBatchOperations.push_back(operation);
683 InitAbility();
684 std::vector<std::shared_ptr<OHOS::DataShare::DataShareResult>> dataShareResult =
685 voicemailAbility.ExecuteBatch(executeBatchOperations);
686 EXPECT_EQ(0, dataShareResult[0]->GetCount());
687 std::vector<std::string> columns;
688 columns.push_back("phone_number");
689 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetInsertQuery = VoicemailQuery(columns, predicates);
690 int rowCount = 0;
691 resultSetInsertQuery->GetRowCount(rowCount);
692 EXPECT_EQ(2, rowCount);
693 std::vector<OHOS::DataShare::DataShareValuesBucket> listValue;
694 listValue.push_back(voicemailValues);
695 listValue.push_back(voicemailValues);
696 CheckResultSetList(listValue, resultSetInsertQuery, "voicemail_Update_test_1300");
697 ClearVoicemail();
698 }
699
700 /*
701 * @tc.number voicemail_Query_test_1400
702 * @tc.name Query the voice mailbox in status 1 and return the query results
703 * @tc.desc Voicemail status query capability
704 * @tc.level Level1
705 * @tc.size MediumTest
706 * @tc.type Function
707 */
HWTEST_F(VoicemailAbilityTest, voicemail_Query_test_1400, testing::ext::TestSize.Level1)708 HWTEST_F(VoicemailAbilityTest, voicemail_Query_test_1400, testing::ext::TestSize.Level1)
709 {
710 HILOG_INFO("--- voicemail_Query_test_1400 is starting! ---");
711 OHOS::DataShare::DataShareValuesBucket values;
712 RandomNumberUtils randomNumberUtils;
713 std::string phoneNumber = randomNumberUtils.Generating(9);
714 values.Put("phone_number", phoneNumber);
715 values.Put("voice_status", 1);
716 int voicemailId = VoicemailInsertValues(values);
717 HILOG_INFO("voicemail_Query_test_1400 : voicemailId = %{public}d", voicemailId);
718 EXPECT_GT(voicemailId, 0);
719
720 values.Put("id", voicemailId);
721 std::vector<std::string> columns;
722 columns.push_back("id");
723 columns.push_back("phone_number");
724 columns.push_back("voice_status");
725 OHOS::DataShare::DataSharePredicates predicates;
726 predicates.EqualTo("voice_status", "1");
727 predicates.And();
728 predicates.EqualTo("id", std::to_string(voicemailId));
729 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
730 int rowCount = 0;
731 result->GetRowCount(rowCount);
732 EXPECT_EQ(1, rowCount);
733 CheckResultSet(values, result, "voicemail_Query_test_1400");
734 ClearVoicemail();
735 }
736
737 /*
738 * @tc.number voicemail_Query_test_1500
739 * @tc.name Insert a single voice mailbox and query the inserted voice mailbox data according to the returned ID
740 * @tc.desc Voicemail data query capability
741 * @tc.level Level1
742 * @tc.size MediumTest
743 * @tc.type Function
744 */
HWTEST_F(VoicemailAbilityTest, voicemail_Query_test_1500, testing::ext::TestSize.Level1)745 HWTEST_F(VoicemailAbilityTest, voicemail_Query_test_1500, testing::ext::TestSize.Level1)
746 {
747 HILOG_INFO("--- voicemail_Query_test_1500 is staring! ---");
748 OHOS::DataShare::DataShareValuesBucket values;
749 RandomNumberUtils randomNumberUtils;
750 std::string phoneNumber = randomNumberUtils.Generating(5);
751 values.Put("phone_number", phoneNumber);
752 int voicemailId = VoicemailInsertValues(values);
753 HILOG_INFO("voicemail_Query_test_1500 : voicemailId = %{public}d", voicemailId);
754 EXPECT_GT(voicemailId, 0);
755 std::vector<std::string> columns;
756 columns.push_back("id");
757 columns.push_back("phone_number");
758 OHOS::DataShare::DataSharePredicates predicates;
759 predicates.EqualTo("id", std::to_string(voicemailId));
760 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
761 int rowCount = 0;
762 result->GetRowCount(rowCount);
763 EXPECT_EQ(1, rowCount);
764 CheckResultSet(values, result, "voicemail_Query_test_1500");
765 ClearVoicemail();
766 }
767
768 /*
769 * @tc.number voicemail_Query_test_1600
770 * @tc.name Insert multiple voice mailboxes, and query the inserted voice mailbox data according to the returned ID
771 * @tc.desc Voicemail data query capability
772 * @tc.level Level1
773 * @tc.size MediumTest
774 * @tc.type Function
775 */
HWTEST_F(VoicemailAbilityTest, voicemail_Query_test_1600, testing::ext::TestSize.Level1)776 HWTEST_F(VoicemailAbilityTest, voicemail_Query_test_1600, testing::ext::TestSize.Level1)
777 {
778 HILOG_INFO("--- voicemail_Query_test_1600 is staring! ---");
779 OHOS::DataShare::DataShareValuesBucket values;
780 RandomNumberUtils randomNumberUtils;
781 std::string phoneNumber = randomNumberUtils.Generating(5);
782 values.Put("phone_number", phoneNumber);
783 int voicemailIdOne = VoicemailInsertValues(values);
784 HILOG_INFO("voicemail_Query_test_1600 : voicemailIdOne = %{public}d", voicemailIdOne);
785 EXPECT_GT(voicemailIdOne, 0);
786
787 OHOS::DataShare::DataShareValuesBucket valuesTwo;
788 std::string phoneNumber_test = randomNumberUtils.Generating(6);
789 valuesTwo.Put("phone_number", phoneNumber_test);
790 int voicemailIdTwo = VoicemailInsertValues(valuesTwo);
791 HILOG_INFO("voicemail_Query_test_1600 : voicemailIdTwo = %{public}d", voicemailIdTwo);
792 EXPECT_GT(voicemailIdTwo, 0);
793
794 std::vector<std::string> columns;
795 columns.push_back("id");
796 columns.push_back("phone_number");
797 OHOS::DataShare::DataSharePredicates predicates;
798 predicates.EqualTo("id", std::to_string(voicemailIdOne));
799 predicates.Or();
800 predicates.EqualTo("id", std::to_string(voicemailIdTwo));
801 predicates.OrderByAsc("id");
802 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
803 int rowCount = 0;
804 result->GetRowCount(rowCount);
805 EXPECT_EQ(2, rowCount);
806 std::vector<OHOS::DataShare::DataShareValuesBucket> valuesVector;
807 valuesVector.push_back(values);
808 valuesVector.push_back(valuesTwo);
809 CheckResultSetList(valuesVector, result, "voicemail_Query_test_1600");
810 ClearVoicemail();
811 }
812
813 /*
814 * @tc.number voicemail_Query_test_1700
815 * @tc.name Query all voice mail data and return query results
816 * @tc.desc Voicemail data query capability
817 * @tc.level Level1
818 * @tc.size MediumTest
819 * @tc.type Function
820 */
HWTEST_F(VoicemailAbilityTest, voicemail_Query_test_1700, testing::ext::TestSize.Level1)821 HWTEST_F(VoicemailAbilityTest, voicemail_Query_test_1700, testing::ext::TestSize.Level1)
822 {
823 // query database count There are two test cases above ,the number is 4
824 HILOG_INFO("--- voicemail_Query_test_1700 is staring! ---");
825 std::vector<std::string> columns;
826 columns.push_back("id");
827 columns.push_back("phone_number");
828 OHOS::DataShare::DataSharePredicates predicates;
829 predicates.GreaterThan("id", "0");
830 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
831 int rowCount = 0;
832 result->GetRowCount(rowCount);
833 result->Close();
834 ClearVoicemail();
835 }
836
837 /*
838 * @tc.number voicemail_BatchInsert_test_1800
839 * @tc.name Add 3 voice mail messages with status and verify whether the insertion is successful
840 * @tc.desc Added ability to batch voicemail status
841 * @tc.level Level1
842 * @tc.size MediumTest
843 * @tc.type Function
844 */
HWTEST_F(VoicemailAbilityTest, voicemail_BatchInsert_test_1800, testing::ext::TestSize.Level1)845 HWTEST_F(VoicemailAbilityTest, voicemail_BatchInsert_test_1800, testing::ext::TestSize.Level1)
846 {
847 HILOG_INFO("--- voicemail_BatchInsert_test_1800 is starting! ---");
848
849 OHOS::Uri uriData(VoicemailUri::VOICEMAIL);
850 OHOS::DataShare::DataShareValuesBucket voicemailValuesOne;
851 int number = 6;
852 RandomNumberUtils randomNumberUtils;
853 std::string phoneNumber = randomNumberUtils.Generating(number);
854 voicemailValuesOne.Put("phone_number", std::string(phoneNumber));
855 voicemailValuesOne.Put("voice_status", 1);
856 OHOS::DataShare::DataShareValuesBucket voicemailValuesTwo;
857 voicemailValuesTwo.Put("phone_number", std::string(phoneNumber));
858 voicemailValuesTwo.Put("voice_status", 0);
859 OHOS::DataShare::DataShareValuesBucket voicemailValuesThree;
860 voicemailValuesThree.Put("phone_number", std::string(phoneNumber));
861 voicemailValuesThree.Put("voice_status", 0);
862
863 std::vector<OHOS::DataShare::DataShareValuesBucket> listAddBluk;
864 listAddBluk.push_back(voicemailValuesOne);
865 listAddBluk.push_back(voicemailValuesTwo);
866 listAddBluk.push_back(voicemailValuesThree);
867 int batchInsertCode = voicemailAbility.BatchInsert(uriData, listAddBluk);
868 EXPECT_EQ(batchInsertCode, 0);
869
870 OHOS::DataShare::DataSharePredicates predicates;
871 predicates.EqualTo("phone_number", phoneNumber);
872 predicates.Or();
873 predicates.EqualTo("phone_number", phoneNumber);
874 predicates.OrderByAsc("id");
875 std::vector<std::string> columns;
876 columns.push_back("phone_number");
877 columns.push_back("voice_status");
878 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
879 int rowCount = 0;
880 result->GetRowCount(rowCount);
881 EXPECT_EQ(2, rowCount);
882 std::vector<OHOS::DataShare::DataShareValuesBucket> listValue;
883 listValue.push_back(voicemailValuesOne);
884 listValue.push_back(voicemailValuesThree);
885 CheckResultSetList(listValue, result, "voicemail_BatchInsert_test_1800");
886 ClearVoicemail();
887 }
888
889 /*
890 * @tc.number voicemail_BatchInsert_test_1900
891 * @tc.name Add 5 voice mail data and verify whether the insertion is successful
892 * @tc.desc New capabilities for voice mail data in batches
893 * @tc.level Level1
894 * @tc.size MediumTest
895 * @tc.type Function
896 */
HWTEST_F(VoicemailAbilityTest, voicemail_BatchInsert_test_1900, testing::ext::TestSize.Level1)897 HWTEST_F(VoicemailAbilityTest, voicemail_BatchInsert_test_1900, testing::ext::TestSize.Level1)
898 {
899 HILOG_INFO("--- voicemail_BatchInsert_test_1900 is staring! ---");
900 OHOS::Uri uriData(VoicemailUri::VOICEMAIL);
901 OHOS::DataShare::DataShareValuesBucket voicemailValuesOne;
902 int number = 6;
903 RandomNumberUtils randomNumberUtils;
904 std::string phoneNumber = randomNumberUtils.Generating(number);
905 voicemailValuesOne.Put("phone_number", std::string(phoneNumber));
906 voicemailValuesOne.Put("display_name", std::string("xiaoming"));
907 OHOS::DataShare::DataShareValuesBucket voicemailValuesTwo;
908 voicemailValuesTwo.Put("phone_number", std::string(phoneNumber));
909 voicemailValuesTwo.Put("display_name", std::string("xiaozi"));
910 OHOS::DataShare::DataShareValuesBucket voicemailValuesThree;
911 voicemailValuesThree.Put("phone_number", std::string(phoneNumber));
912 voicemailValuesThree.Put("display_name", std::string("xiaozhi"));
913 OHOS::DataShare::DataShareValuesBucket voicemailValuesFour;
914 voicemailValuesFour.Put("phone_number", std::string(phoneNumber));
915 voicemailValuesFour.Put("display_name", std::string("xiaohei"));
916 OHOS::DataShare::DataShareValuesBucket voicemailValuesFive;
917 voicemailValuesFive.Put("phone_number", std::string(phoneNumber));
918 voicemailValuesFive.Put("display_name", std::string("xiaohong"));
919 std::vector<OHOS::DataShare::DataShareValuesBucket> listAddBluk;
920 listAddBluk.push_back(voicemailValuesOne);
921 listAddBluk.push_back(voicemailValuesTwo);
922 listAddBluk.push_back(voicemailValuesThree);
923 listAddBluk.push_back(voicemailValuesFour);
924 listAddBluk.push_back(voicemailValuesFive);
925 int batchInsertCode = voicemailAbility.BatchInsert(uriData, listAddBluk);
926 EXPECT_EQ(0, batchInsertCode);
927
928 int size = listAddBluk.size();
929 std::vector<std::string> columns;
930 columns.push_back("phone_number");
931 columns.push_back("display_name");
932 for (int i = 0; i < size; i++) {
933 OHOS::DataShare::DataSharePredicates predicates;
934 bool isValid = false;
935 std::string name = listAddBluk[i].Get("display_name", isValid);
936 predicates.EqualTo("display_name", name);
937 predicates.And();
938 std::string phoneNumber = listAddBluk[i].Get("phone_number", isValid);
939 predicates.EqualTo("phone_number", phoneNumber);
940 CheckResultSetBatch(predicates, columns, listAddBluk[i], "voicemail_BatchInsert_test_1900");
941 }
942 ClearVoicemail();
943 }
944
945 /*
946 * @tc.number abnormal_voicemail_Insert_test_2000
947 * @tc.name When voice mail status is added, a non-existent field is passed in
948 * @tc.desc Exception use case
949 * @tc.level Level1
950 * @tc.size MediumTest
951 * @tc.type Function
952 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Insert_test_2000, testing::ext::TestSize.Level1)953 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Insert_test_2000, testing::ext::TestSize.Level1)
954 {
955 HILOG_INFO("--- abnormal_voicemail_Insert_test_2000 is starting! ---");
956
957 OHOS::Uri uriVoicemail(VoicemailUri::VOICEMAIL);
958 OHOS::DataShare::DataShareValuesBucket voicemailValues;
959 int number = 6;
960 RandomNumberUtils randomNumberUtils;
961 std::string phoneNumber = randomNumberUtils.Generating(number);
962 voicemailValues.Put("phone_numbers", phoneNumber);
963 int64_t voicemailId = voicemailAbility.Insert(uriVoicemail, voicemailValues);
964 HILOG_INFO("abnormal_voicemail_Insert_test_2000: voicemailId = %{public}ld", voicemailId);
965 EXPECT_EQ(voicemailId, -1);
966
967 OHOS::DataShare::DataSharePredicates predicates;
968 predicates.EqualTo("phone_number", phoneNumber);
969 std::vector<std::string> columns;
970 columns.push_back("phone_number");
971 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
972 int rowCount = 0;
973 result->GetRowCount(rowCount);
974 EXPECT_EQ(0, rowCount);
975 result->Close();
976 ClearVoicemail();
977 }
978
979 /*
980 * @tc.number abnormal_voicemail_Insert_test_2100
981 * @tc.name When adding voice mail data, a nonexistent table name is passed in
982 * @tc.desc Exception use case
983 * @tc.level Level1
984 * @tc.size MediumTest
985 * @tc.type Function
986 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Insert_test_2100, testing::ext::TestSize.Level1)987 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Insert_test_2100, testing::ext::TestSize.Level1)
988 {
989 HILOG_INFO("--- abnormal_voicemail_Insert_test_2100 is starting! ---");
990
991 OHOS::Uri errorUriVoicemails(VoicemailUri::ERROR_URI);
992 OHOS::DataShare::DataShareValuesBucket voicemailValues;
993 int number = 6;
994 RandomNumberUtils randomNumberUtils;
995 std::string phoneNumber = randomNumberUtils.Generating(number);
996 voicemailValues.Put("phone_number", phoneNumber);
997 int64_t voicemailId = voicemailAbility.Insert(errorUriVoicemails, voicemailValues);
998 HILOG_INFO("abnormal_voicemail_Insert_test_2100: voicemailId = %{public}ld", voicemailId);
999 EXPECT_EQ(voicemailId, -1);
1000
1001 OHOS::DataShare::DataSharePredicates predicates;
1002 std::string phoneNumber2 = randomNumberUtils.Generating(number);
1003 predicates.EqualTo("phone_number", phoneNumber2);
1004 std::vector<std::string> columns;
1005 columns.push_back("phone_number");
1006 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
1007 int rowCount = 0;
1008 result->GetRowCount(rowCount);
1009 EXPECT_EQ(0, rowCount);
1010 result->Close();
1011 ClearVoicemail();
1012 }
1013
1014 /*
1015 * @tc.number abnormal_voicemail_Update_test_2200
1016 * @tc.name When deleting voicemail status, a non-existent field is passed in
1017 * @tc.desc Exception use case
1018 * @tc.level Level1
1019 * @tc.size MediumTest
1020 * @tc.type Function
1021 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Update_test_2200, testing::ext::TestSize.Level1)1022 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Update_test_2200, testing::ext::TestSize.Level1)
1023 {
1024 HILOG_INFO("--- abnormal_voicemail_Update_test_2200 is starting! ---");
1025 int64_t voicemailId = VoicemailStatusInsert("123456", 1);
1026 HILOG_INFO("abnormal_voicemail_Update_test_2200: voicemailId = %{public}ld", voicemailId);
1027 EXPECT_GT(voicemailId, 0);
1028
1029 OHOS::DataShare::DataShareValuesBucket updateValues;
1030 updateValues.Put("voice_status", 0);
1031 OHOS::DataShare::DataSharePredicates predicates;
1032 predicates.EqualTo("ids", std::to_string(voicemailId));
1033 int updateCode = VoicemailUpdate(updateValues, predicates);
1034 HILOG_INFO("abnormal_voicemail_Update_test_2200 : updateCode = %{public}d", updateCode);
1035 EXPECT_EQ(updateCode, -1);
1036
1037 OHOS::DataShare::DataSharePredicates predicates2;
1038 int number = 6;
1039 RandomNumberUtils randomNumberUtils;
1040 std::string phoneNumber = randomNumberUtils.Generating(number);
1041 predicates2.EqualTo("phone_number", phoneNumber);
1042 predicates2.And();
1043 predicates2.EqualTo("voice_status", "0");
1044 std::vector<std::string> columns;
1045 columns.push_back("phone_number");
1046 columns.push_back("voice_status");
1047 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates2);
1048 int rowCount = 0;
1049 result->GetRowCount(rowCount);
1050 EXPECT_EQ(0, rowCount);
1051 result->Close();
1052 ClearVoicemail();
1053 }
1054
1055 /*
1056 * @tc.number abnormal_voicemail_Delete_test_2300
1057 * @tc.name When deleting voicemail data, a non-existent field is passed in
1058 * @tc.desc Exception use case
1059 * @tc.level Level1
1060 * @tc.size MediumTest
1061 * @tc.type Function
1062 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Delete_test_2300, testing::ext::TestSize.Level1)1063 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Delete_test_2300, testing::ext::TestSize.Level1)
1064 {
1065 HILOG_INFO("--- abnormal_voicemail_Delete_test_2300 is starting! ---");
1066 OHOS::DataShare::DataShareValuesBucket values;
1067 int number = 8;
1068 RandomNumberUtils randomNumberUtils;
1069 std::string phoneNumber = randomNumberUtils.Generating(number);
1070 values.Put("phone_number", phoneNumber);
1071 int voicemailId = VoicemailInsertValues(values);
1072 HILOG_INFO("abnormal_voicemail_Delete_test_2300 : voicemailId = %{public}d", voicemailId);
1073 EXPECT_GT(voicemailId, 0);
1074
1075 OHOS::DataShare::DataSharePredicates predicates;
1076 predicates.EqualTo("ids", std::to_string(voicemailId));
1077 int deleteCode = VoicemailDelete(predicates);
1078 HILOG_INFO("abnormal_voicemail_Delete_test_2300: deleteCode = %{public}d", deleteCode);
1079 EXPECT_EQ(deleteCode, -1);
1080 OHOS::DataShare::DataSharePredicates predicates2;
1081 predicates2.EqualTo("id", std::to_string(voicemailId));
1082 std::vector<std::string> columns;
1083 columns.push_back("phone_number");
1084 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates2);
1085 int rowCount = 0;
1086 result->GetRowCount(rowCount);
1087 EXPECT_EQ(1, rowCount);
1088 CheckResultSet(values, result, "abnormal_voicemail_Delete_test_2300");
1089 ClearVoicemail();
1090 }
1091
1092 /*
1093 * @tc.number abnormal_voicemail_Delete_test_2400
1094 * @tc.name When deleting voicemail data, a nonexistent table name is passed in
1095 * @tc.desc Exception use case
1096 * @tc.level Level1
1097 * @tc.size MediumTest
1098 * @tc.type Function
1099 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Delete_test_2400, testing::ext::TestSize.Level1)1100 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Delete_test_2400, testing::ext::TestSize.Level1)
1101 {
1102 HILOG_INFO("--- abnormal_voicemail_Delete_test_2400 is starting! ---");
1103 OHOS::DataShare::DataShareValuesBucket values;
1104 int number = 6;
1105 RandomNumberUtils randomNumberUtils;
1106 std::string phoneNumber = randomNumberUtils.Generating(number);
1107 values.Put("phone_number", phoneNumber);
1108 int voicemailId = VoicemailInsertValues(values);
1109 HILOG_INFO("abnormal_voicemail_Delete_test_2400 : voicemailId = %{public}d", voicemailId);
1110 EXPECT_GT(voicemailId, 0);
1111
1112 OHOS::Uri uriVoicemails(VoicemailUri::ERROR_URI);
1113 OHOS::DataShare::DataSharePredicates predicates;
1114 predicates.EqualTo("id", std::to_string(voicemailId));
1115 int deleteCode = voicemailAbility.Delete(uriVoicemails, predicates);
1116 HILOG_INFO("abnormal_voicemail_Delete_test_2400: deleteCode = %{public}d", deleteCode);
1117 EXPECT_NE(deleteCode, 0);
1118
1119 std::vector<std::string> columns;
1120 columns.push_back("phone_number");
1121 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
1122 int rowCount = 0;
1123 result->GetRowCount(rowCount);
1124 EXPECT_EQ(1, rowCount);
1125 CheckResultSet(values, result, "abnormal_voicemail_Delete_test_2400");
1126 ClearVoicemail();
1127 }
1128
1129 /*
1130 * @tc.number abnormal_voicemail_Update_test_2500
1131 * @tc.name When updating voicemail status, a non-existent field was passed in
1132 * @tc.desc Exception use case
1133 * @tc.level Level1
1134 * @tc.size MediumTest
1135 * @tc.type Function
1136 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Update_test_2500, testing::ext::TestSize.Level1)1137 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Update_test_2500, testing::ext::TestSize.Level1)
1138 {
1139 HILOG_INFO("--- abnormal_voicemail_Update_test_2500 is starting! ---");
1140 int64_t voicemailId = VoicemailStatusInsert("123456", 1);
1141 HILOG_INFO("abnormal_voicemail_Update_test_2500: voicemailId = %{public}ld", voicemailId);
1142 EXPECT_GT(voicemailId, 0);
1143
1144 OHOS::DataShare::DataShareValuesBucket updateValues;
1145 updateValues.Put("voice_status", 0);
1146 OHOS::DataShare::DataSharePredicates predicates;
1147 predicates.EqualTo("ids", std::to_string(voicemailId));
1148 int updateCode = VoicemailUpdate(updateValues, predicates);
1149 HILOG_INFO("abnormal_voicemail_Update_test_2500 : updateCode = %{public}d", updateCode);
1150 EXPECT_EQ(updateCode, -1);
1151
1152 OHOS::DataShare::DataSharePredicates predicates2;
1153 int number = 6;
1154 RandomNumberUtils randomNumberUtils;
1155 std::string phoneNumber = randomNumberUtils.Generating(number);
1156 predicates2.EqualTo("phone_number", phoneNumber);
1157 predicates2.And();
1158 predicates2.EqualTo("voice_status", "0");
1159 std::vector<std::string> columns;
1160 columns.push_back("phone_number");
1161 columns.push_back("voice_status");
1162 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates2);
1163 int rowCount = 0;
1164 result->GetRowCount(rowCount);
1165 EXPECT_EQ(0, rowCount);
1166 result->Close();
1167 ClearVoicemail();
1168 }
1169
1170 /*
1171 * @tc.number abnormal_voicemail_Update_test_2600
1172 * @tc.name When updating voicemail data, a non-existent field was passed in
1173 * @tc.desc Exception use case
1174 * @tc.level Level1
1175 * @tc.size MediumTest
1176 * @tc.type Function
1177 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Update_test_2600, testing::ext::TestSize.Level1)1178 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Update_test_2600, testing::ext::TestSize.Level1)
1179 {
1180 HILOG_INFO("--- abnormal_voicemail_Update_test_2600 is staring! ---");
1181 OHOS::DataShare::DataShareValuesBucket values;
1182 int number = 11;
1183 RandomNumberUtils randomNumberUtils;
1184 std::string phoneNumber = randomNumberUtils.Generating(number);
1185 values.Put("phone_number", phoneNumber);
1186 int voicemailId = VoicemailInsertValues(values);
1187 HILOG_INFO("abnormal_voicemail_Update_test_2600 : voicemailId = %{public}d", voicemailId);
1188 EXPECT_GT(voicemailId, 0);
1189
1190 OHOS::DataShare::DataShareValuesBucket updateValues;
1191 updateValues.Put("phone_number", std::string(phoneNumber));
1192 OHOS::DataShare::DataSharePredicates predicates;
1193 predicates.EqualTo("ids", std::to_string(voicemailId));
1194 int updateCode = VoicemailUpdate(updateValues, predicates);
1195 HILOG_INFO("abnormal_voicemail_Update_test_2600: updateCode = %{public}d", updateCode);
1196 EXPECT_EQ(updateCode, -1);
1197 ClearVoicemail();
1198 }
1199
1200 /*
1201 * @tc.number abnormal_voicemail_Update_test_2700
1202 * @tc.name When updating voicemail data, a nonexistent table name is passed in
1203 * @tc.desc Exception use case
1204 * @tc.level Level1
1205 * @tc.size MediumTest
1206 * @tc.type Function
1207 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Update_test_2700, testing::ext::TestSize.Level1)1208 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Update_test_2700, testing::ext::TestSize.Level1)
1209 {
1210 HILOG_INFO("--- abnormal_voicemail_Update_test_2700 is staring! ---");
1211 OHOS::DataShare::DataShareValuesBucket values;
1212 int number_test = 6;
1213 RandomNumberUtils randomNumberUtils;
1214 std::string phoneNumber_test = randomNumberUtils.Generating(number_test);
1215 values.Put("phone_number", phoneNumber_test);
1216 int voicemailId = VoicemailInsertValues(values);
1217 HILOG_INFO("abnormal_voicemail_Update_test_2700 : voicemailId = %{public}d", voicemailId);
1218 EXPECT_GT(voicemailId, 0);
1219
1220 OHOS::Uri uriVoicemails(VoicemailUri::ERROR_URI);
1221 OHOS::DataShare::DataShareValuesBucket updateValues;
1222 int number = 11;
1223 std::string phoneNumber = randomNumberUtils.Generating(number);
1224 updateValues.Put("phone_number", std::string(phoneNumber));
1225 OHOS::DataShare::DataSharePredicates predicates;
1226 predicates.EqualTo("id", std::to_string(voicemailId));
1227 int updateCode = voicemailAbility.Update(uriVoicemails, predicates, updateValues);
1228 HILOG_INFO("abnormal_voicemail_Update_test_2700: updateCode = %{public}d", updateCode);
1229 EXPECT_EQ(updateCode, -1);
1230 std::vector<std::string> columns;
1231 columns.push_back("phone_number");
1232 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
1233 int rowCount = 0;
1234 result->GetRowCount(rowCount);
1235 EXPECT_EQ(1, rowCount);
1236 CheckResultSet(values, result, "abnormal_voicemail_Update_test_2700");
1237 ClearVoicemail();
1238 }
1239
1240 /*
1241 * @tc.number abnormal_voicemail_Query_test_2800
1242 * @tc.name When querying voicemail status, a non-existent field is passed in
1243 * @tc.desc Exception use case
1244 * @tc.level Level1
1245 * @tc.size MediumTest
1246 * @tc.type Function
1247 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Query_test_2800, testing::ext::TestSize.Level1)1248 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Query_test_2800, testing::ext::TestSize.Level1)
1249 {
1250 HILOG_INFO("--- abnormal_voicemail_Query_test_2800 is starting! ---");
1251 std::vector<std::string> columns;
1252 columns.push_back("id");
1253 columns.push_back("phone_numbers");
1254 columns.push_back("voice_status");
1255 OHOS::DataShare::DataSharePredicates predicates;
1256 predicates.EqualTo("voice_status", "1");
1257 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = VoicemailQuery(columns, predicates);
1258 int rowCount = 0;
1259 resultSet->GetRowCount(rowCount);
1260 EXPECT_EQ(-1, rowCount);
1261 resultSet->Close();
1262 ClearVoicemail();
1263 }
1264
1265 /*
1266 * @tc.number abnormal_voicemail_Query_test_2900
1267 * @tc.name An incorrect field was passed in when querying voicemail data
1268 * @tc.desc Exception use case
1269 * @tc.level Level1
1270 * @tc.size MediumTest
1271 * @tc.type Function
1272 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Query_test_2900, testing::ext::TestSize.Level1)1273 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Query_test_2900, testing::ext::TestSize.Level1)
1274 {
1275 HILOG_INFO("-----abnormal_voicemail_Query_test_2900 is starting!-----");
1276 std::vector<std::string> columns;
1277 columns.push_back("id");
1278 columns.push_back("phone_numbers");
1279 OHOS::DataShare::DataSharePredicates predicates;
1280 predicates.GreaterThan("id", "0");
1281 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = VoicemailQuery(columns, predicates);
1282 int rowCount = -1;
1283 resultSet->GetRowCount(rowCount);
1284 EXPECT_EQ(-1, rowCount);
1285 resultSet->Close();
1286 ClearVoicemail();
1287 }
1288
1289 /*
1290 * @tc.number abnormal_voicemail_Query_test_3000
1291 * @tc.name When querying voicemail data, a non-existent field value is passed in
1292 * @tc.desc Exception use case
1293 * @tc.level Level1
1294 * @tc.size MediumTest
1295 * @tc.type Function
1296 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Query_test_3000, testing::ext::TestSize.Level1)1297 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Query_test_3000, testing::ext::TestSize.Level1)
1298 {
1299 HILOG_INFO("-----abnormal_voicemail_Query_test_3000 is starting!-----");
1300 std::vector<std::string> columns;
1301 columns.push_back("id");
1302 columns.push_back("phone_number");
1303 OHOS::DataShare::DataSharePredicates predicates;
1304 predicates.EqualTo("id", "10000000");
1305 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
1306 int rowCount = 0;
1307 result->GetRowCount(rowCount);
1308 result->Close();
1309 EXPECT_EQ(0, rowCount);
1310 ClearVoicemail();
1311 }
1312
1313 /*
1314 * @tc.number abnormal_voicemail_Query_test_3100
1315 * @tc.name When querying voicemail data, a nonexistent table name was passed in
1316 * @tc.desc Exception use case
1317 * @tc.level Level1
1318 * @tc.size MediumTest
1319 * @tc.type Function
1320 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Query_test_3100, testing::ext::TestSize.Level1)1321 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_Query_test_3100, testing::ext::TestSize.Level1)
1322 {
1323 HILOG_INFO("-----abnormal_voicemail_Query_test_3100 is starting!-----");
1324 OHOS::Uri errorUri(VoicemailUri::ERROR_URI);
1325 std::vector<std::string> columns;
1326 columns.push_back("id");
1327 columns.push_back("phone_number");
1328 OHOS::DataShare::DataSharePredicates predicates;
1329 predicates.GreaterThan("id", "0");
1330 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet =
1331 voicemailAbility.Query(errorUri, predicates, columns);
1332 EXPECT_EQ(resultSet, nullptr);
1333 ClearVoicemail();
1334 }
1335
1336 /*
1337 * @tc.number abnormal_voicemail_BatchInsert_test_3200
1338 * @tc.name When adding voice mail status in batch, an error field is passed in
1339 * @tc.desc Exception use case
1340 * @tc.level Level1
1341 * @tc.size MediumTest
1342 * @tc.type Function
1343 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_BatchInsert_test_3200, testing::ext::TestSize.Level1)1344 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_BatchInsert_test_3200, testing::ext::TestSize.Level1)
1345 {
1346 HILOG_INFO("--- abnormal_voicemail_BatchInsert_test_3200 is starting! ---");
1347 OHOS::Uri uriData(VoicemailUri::VOICEMAIL);
1348 OHOS::DataShare::DataShareValuesBucket voicemailValuesOne;
1349 int number = 15;
1350 RandomNumberUtils randomNumberUtils;
1351 std::string phoneNumber = randomNumberUtils.Generating(number);
1352 int number_test = 6;
1353 std::string phoneNumber_test = randomNumberUtils.Generating(number_test);
1354 voicemailValuesOne.Put("phone_number", std::string(phoneNumber));
1355 voicemailValuesOne.Put("voice_status", 1);
1356 OHOS::DataShare::DataShareValuesBucket voicemailValuesTwo;
1357 voicemailValuesTwo.Put("phone_numbers", std::string(phoneNumber_test));
1358 voicemailValuesTwo.Put("voice_statuss", 0);
1359 OHOS::DataShare::DataShareValuesBucket voicemailValuesThree;
1360 voicemailValuesThree.Put("phone_number", std::string(phoneNumber_test));
1361 voicemailValuesThree.Put("voice_status", 0);
1362
1363 std::vector<OHOS::DataShare::DataShareValuesBucket> listAddBluk;
1364 listAddBluk.push_back(voicemailValuesOne);
1365 listAddBluk.push_back(voicemailValuesTwo);
1366 listAddBluk.push_back(voicemailValuesThree);
1367 int batchInsertCode = voicemailAbility.BatchInsert(uriData, listAddBluk);
1368 EXPECT_EQ(batchInsertCode, -1);
1369
1370 OHOS::DataShare::DataSharePredicates predicates;
1371 predicates.EqualTo("phone_number", phoneNumber);
1372 predicates.Or();
1373 predicates.EqualTo("phone_numbers", phoneNumber_test);
1374 predicates.Or();
1375 predicates.EqualTo("phone_number", phoneNumber_test);
1376 std::vector<std::string> columns;
1377 columns.push_back("id");
1378 columns.push_back("phone_number");
1379 columns.push_back("phone_numbers");
1380 columns.push_back("voice_status");
1381 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = VoicemailQuery(columns, predicates);
1382 int rowCount = 0;
1383 resultSet->GetRowCount(rowCount);
1384 EXPECT_EQ(-1, rowCount);
1385 resultSet->Close();
1386 ClearVoicemail();
1387 }
1388
1389 /*
1390 * @tc.number abnormal_voicemail_BatchInsert_test_3300
1391 * @tc.name When adding voice mail data in batch, several of them fail. Check the processing logic
1392 * @tc.desc Exception use case
1393 * @tc.level Level1
1394 * @tc.size MediumTest
1395 * @tc.type Function
1396 */
HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_BatchInsert_test_3300, testing::ext::TestSize.Level1)1397 HWTEST_F(VoicemailAbilityTest, abnormal_voicemail_BatchInsert_test_3300, testing::ext::TestSize.Level1)
1398 {
1399 HILOG_INFO("--- abnormal_voicemail_BatchInsert_test_3300 is starting! ---");
1400 OHOS::Uri uriData(VoicemailUri::VOICEMAIL);
1401 OHOS::DataShare::DataShareValuesBucket voicemailValues;
1402 std::vector<OHOS::DataShare::DataShareValuesBucket> listAddBluk;
1403 int batchInserCode = 0;
1404 for (int i = 0; i < 10; i++) {
1405 listAddBluk.clear();
1406 for (int j = 10 * i + 1; j <= 10 * (i + 1); j++) {
1407 voicemailValues.Clear();
1408 voicemailValues.Put("phone_number", std::to_string(j));
1409 std::string name("zhangsan");
1410 name.append(std::to_string(j));
1411 if (j == 14 || j == 27 || j == 57) {
1412 voicemailValues.Put("display_names", name);
1413 } else {
1414 voicemailValues.Put("display_name", name);
1415 }
1416 listAddBluk.push_back(voicemailValues);
1417 }
1418 batchInserCode = voicemailAbility.BatchInsert(uriData, listAddBluk);
1419 HILOG_INFO("abnormal_voicemail_BatchInsert_test_3300 : batchInserCode = %{public}d", batchInserCode);
1420 if (batchInserCode == 0) {
1421 HILOG_INFO("abnormal_voicemail_BatchInsert_test_3300 batch insert success!");
1422 } else {
1423 HILOG_INFO("abnormal_voicemail_BatchInsert_test_3300 batch insert fail!");
1424 EXPECT_EQ(batchInserCode, -1);
1425 }
1426 }
1427 // clear data
1428 OHOS::DataShare::DataSharePredicates predicates;
1429 predicates.GreaterThan("id", "0");
1430 int deleteCode = VoicemailDelete(predicates);
1431 EXPECT_EQ(0, deleteCode);
1432 ClearVoicemail();
1433 }
1434
1435 /*
1436 * @tc.number voicemail_Insert_test_3400
1437 * @tc.name Add a voice mailbox with status 0 and verify that the insertion was successful
1438 * @tc.desc Added ability to voice mailbox status
1439 * @tc.level Level1
1440 * @tc.size MediumTest
1441 * @tc.type Function
1442 */
HWTEST_F(VoicemailAbilityTest, voicemail_Insert_test_3400, testing::ext::TestSize.Level1)1443 HWTEST_F(VoicemailAbilityTest, voicemail_Insert_test_3400, testing::ext::TestSize.Level1)
1444 {
1445 HILOG_INFO("--- voicemail_Insert_test_3400 is starting! ---");
1446 OHOS::DataShare::DataShareValuesBucket values;
1447 int number = 6;
1448 RandomNumberUtils randomNumberUtils;
1449 std::string phoneNumber = randomNumberUtils.Generating(number);
1450 values.Put("phone_number", phoneNumber);
1451 values.Put("voice_status", 0);
1452 int voicemailId = VoicemailInsertValues(values);
1453 EXPECT_GT(voicemailId, 0);
1454
1455 OHOS::DataShare::DataSharePredicates predicates;
1456 predicates.EqualTo("id", std::to_string(voicemailId));
1457 std::vector<std::string> columns;
1458 columns.push_back("phone_number");
1459 columns.push_back("voice_status");
1460 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
1461 int rowCount = 0;
1462 result->GetRowCount(rowCount);
1463 EXPECT_EQ(1, rowCount);
1464 CheckResultSet(values, result, "voicemail_Insert_test_3400");
1465 ClearVoicemail();
1466 }
1467
1468 /*
1469 * @tc.number voicemail_Update_test_3500
1470 * @tc.name Update the voice mailbox status and verify whether the update is successful (voice_status changes from 1
1471 * to 0)
1472 * @tc.desc Voicemail status update capability
1473 * @tc.level Level1
1474 * @tc.size MediumTest
1475 * @tc.type Function
1476 */
HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_3500, testing::ext::TestSize.Level1)1477 HWTEST_F(VoicemailAbilityTest, voicemail_Update_test_3500, testing::ext::TestSize.Level1)
1478 {
1479 HILOG_INFO("--- voicemail_Update_test_3500 is starting! ---");
1480 OHOS::DataShare::DataShareValuesBucket values;
1481 int number = 9;
1482 RandomNumberUtils randomNumberUtils;
1483 std::string phoneNumber = randomNumberUtils.Generating(number);
1484 values.Put("phone_number", phoneNumber);
1485 values.Put("voice_status", 1);
1486 int voicemailId = VoicemailInsertValues(values);
1487 EXPECT_GT(voicemailId, 0);
1488
1489 OHOS::DataShare::DataShareValuesBucket updateValues;
1490 updateValues.Put("voice_status", 0);
1491 OHOS::DataShare::DataSharePredicates predicates;
1492 predicates.EqualTo("id", std::to_string(voicemailId));
1493 int updateCode = VoicemailUpdate(updateValues, predicates);
1494 EXPECT_EQ(updateCode, 0);
1495 std::string phoneNumber2 = randomNumberUtils.Generating(number);
1496 updateValues.Put("phone_number", phoneNumber2);
1497 OHOS::DataShare::DataSharePredicates predicates2;
1498 predicates2.EqualTo("id", std::to_string(voicemailId));
1499 std::vector<std::string> columns;
1500 columns.push_back("phone_number");
1501 columns.push_back("voice_status");
1502 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates2);
1503 int rowCount = 0;
1504 result->GetRowCount(rowCount);
1505 EXPECT_EQ(1, rowCount);
1506 CheckResultSet(updateValues, result, "voicemail_Update_test_3500");
1507 ClearVoicemail();
1508 }
1509
1510 /*
1511 * @tc.number voicemail_Query_test_3600
1512 * @tc.name Query the voice mailbox with status 0 and return the query results
1513 * @tc.desc Voicemail status query capability
1514 * @tc.level Level1
1515 * @tc.size MediumTest
1516 * @tc.type Function
1517 */
HWTEST_F(VoicemailAbilityTest, voicemail_Query_test_3600, testing::ext::TestSize.Level1)1518 HWTEST_F(VoicemailAbilityTest, voicemail_Query_test_3600, testing::ext::TestSize.Level1)
1519 {
1520 HILOG_INFO("--- voicemail_Query_test_3600 is starting! ---");
1521 OHOS::DataShare::DataShareValuesBucket values;
1522 int number = 9;
1523 RandomNumberUtils randomNumberUtils;
1524 std::string phoneNumber = randomNumberUtils.Generating(number);
1525 values.Put("phone_number", phoneNumber);
1526 values.Put("voice_status", 0);
1527 int voicemailId = VoicemailInsertValues(values);
1528 EXPECT_GT(voicemailId, 0);
1529
1530 values.Put("id", voicemailId);
1531 std::vector<std::string> columns;
1532 columns.push_back("id");
1533 columns.push_back("phone_number");
1534 columns.push_back("voice_status");
1535 OHOS::DataShare::DataSharePredicates predicates;
1536 predicates.EqualTo("voice_status", "0");
1537 predicates.And();
1538 predicates.EqualTo("id", std::to_string(voicemailId));
1539 std::shared_ptr<OHOS::DataShare::DataShareResultSet> result = VoicemailQuery(columns, predicates);
1540 int rowCount = 0;
1541 result->GetRowCount(rowCount);
1542 EXPECT_EQ(1, rowCount);
1543 CheckResultSet(values, result, "voicemail_Query_test_3600");
1544 ClearVoicemail();
1545 }
1546
1547 /*
1548 * @tc.number voicemail_async_insert_test_3800
1549 * @tc.name Add voicemail async
1550 * @tc.desc Ability to join or add voicemail
1551 * @tc.level Level1
1552 * @tc.size MediumTest
1553 * @tc.type Function
1554 */
HWTEST_F(VoicemailAbilityTest, voicemail_async_insert_test_3700, testing::ext::TestSize.Level1)1555 HWTEST_F(VoicemailAbilityTest, voicemail_async_insert_test_3700, testing::ext::TestSize.Level1)
1556 {
1557 HILOG_INFO("--- voicemail_async_insert_test_3700 is staring! ---");
1558 std::map<int, OHOS::DataShare::DataShareValuesBucket> result;
1559 std::vector<VoicemailAsync *> voicemailAsyncVector;
1560 int threadNum = 6;
1561 for (int i = 0; i < threadNum; ++i) {
1562 OHOS::DataShare::DataShareValuesBucket values;
1563 std::string name;
1564 name.append("asyncTest");
1565 name.append(std::to_string(i));
1566 values.Put("display_name", name);
1567 VoicemailAsync *contactAsync = new VoicemailAsync(values, result);
1568 std::thread asyncThread(&VoicemailAsync::Insert, contactAsync);
1569 voicemailAsyncVector.push_back(contactAsync);
1570 asyncThread.detach();
1571 }
1572 std::chrono::milliseconds dura(Time::ASYNC_SLEEP_TIME);
1573 std::this_thread::sleep_for(dura);
1574 std::vector<std::string> columns;
1575 columns.push_back("display_name");
1576 std::map<int, OHOS::DataShare::DataShareValuesBucket>::iterator it;
1577 for (it = result.begin(); it != result.end(); it++) {
1578 OHOS::DataShare::DataSharePredicates predicates;
1579 predicates.EqualTo("id", std::to_string(it->first));
1580 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = VoicemailQuery(columns, predicates);
1581 CheckResultSet(it->second, resultSet, "voicemail_async_insert_test_3700");
1582 }
1583 for (int i = 0; i < threadNum; ++i) {
1584 delete voicemailAsyncVector[i];
1585 }
1586 ClearVoicemail();
1587 }
1588
1589 /*
1590 * @tc.number voicemail_async_update_test_3900
1591 * @tc.name update voicemail async
1592 * @tc.desc Ability to join or update voicemail
1593 * @tc.level Level1
1594 * @tc.size MediumTest
1595 * @tc.type Function
1596 */
HWTEST_F(VoicemailAbilityTest, voicemail_async_update_test_3800, testing::ext::TestSize.Level1)1597 HWTEST_F(VoicemailAbilityTest, voicemail_async_update_test_3800, testing::ext::TestSize.Level1)
1598 {
1599 HILOG_INFO("--- voicemail_async_update_test_3800 is staring! ---");
1600 OHOS::DataShare::DataShareValuesBucket voicemailValues;
1601 std::vector<int64_t> voicemailId;
1602 voicemailId.push_back(VoicemailInsertValue("async_update1", voicemailValues));
1603 voicemailValues.Clear();
1604 voicemailId.push_back(VoicemailInsertValue("async_update2", voicemailValues));
1605 voicemailValues.Clear();
1606 voicemailId.push_back(VoicemailInsertValue("async_update3", voicemailValues));
1607 voicemailValues.Clear();
1608 voicemailId.push_back(VoicemailInsertValue("async_update4", voicemailValues));
1609 voicemailValues.Clear();
1610 voicemailId.push_back(VoicemailInsertValue("async_update5", voicemailValues));
1611 voicemailValues.Clear();
1612 voicemailId.push_back(VoicemailInsertValue("async_update6", voicemailValues));
1613 voicemailValues.Clear();
1614 std::vector<OHOS::DataShare::DataShareValuesBucket> upDateValues;
1615 OHOS::DataShare::DataSharePredicates queryPredicates;
1616 std::vector<VoicemailAsync *> voicemailAsyncVector;
1617 int size = voicemailId.size();
1618 for (int i = 0; i < size; ++i) {
1619 OHOS::DataShare::DataShareValuesBucket values;
1620 std::string name;
1621 name.append("asyncTest");
1622 values.Put("display_name", name);
1623 upDateValues.push_back(values);
1624 int id = voicemailId[i];
1625 VoicemailAsync *contactAsync = new VoicemailAsync(values, id);
1626 voicemailAsyncVector.push_back(contactAsync);
1627 std::thread asyncThread(&VoicemailAsync::Update, contactAsync);
1628 asyncThread.detach();
1629 queryPredicates.EqualTo("id", std::to_string(voicemailId[i]));
1630 if (i < size - 1) {
1631 queryPredicates.Or();
1632 }
1633 }
1634 std::chrono::milliseconds dura(Time::ASYNC_SLEEP_TIME);
1635 std::this_thread::sleep_for(dura);
1636 std::vector<std::string> columns;
1637 columns.push_back("display_name");
1638 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = VoicemailQuery(columns, queryPredicates);
1639 CheckResultSetList(upDateValues, resultSet, "voicemail_async_update_test_3800");
1640 for (int i = 0; i < size; ++i) {
1641 delete voicemailAsyncVector[i];
1642 }
1643 ClearVoicemail();
1644 }
1645
1646 /*
1647 * @tc.number voicemail_async_query_test_3900
1648 * @tc.name query voicemail async
1649 * @tc.desc Ability to join or query
1650 * @tc.level Level1
1651 * @tc.size MediumTest
1652 * @tc.type Function
1653 */
HWTEST_F(VoicemailAbilityTest, voicemail_async_query_test_3900, testing::ext::TestSize.Level1)1654 HWTEST_F(VoicemailAbilityTest, voicemail_async_query_test_3900, testing::ext::TestSize.Level1)
1655 {
1656 HILOG_INFO("--- voicemail_async_query_test_4000 is staring! ---");
1657 OHOS::DataShare::DataShareValuesBucket voicemailValues;
1658 std::vector<int64_t> voicemailId;
1659 voicemailId.push_back(VoicemailInsertValue("async_query1", voicemailValues));
1660 voicemailValues.Clear();
1661 voicemailId.push_back(VoicemailInsertValue("async_query2", voicemailValues));
1662 voicemailValues.Clear();
1663 voicemailId.push_back(VoicemailInsertValue("async_query3", voicemailValues));
1664 voicemailValues.Clear();
1665 voicemailId.push_back(VoicemailInsertValue("async_query4", voicemailValues));
1666 voicemailValues.Clear();
1667 voicemailId.push_back(VoicemailInsertValue("async_query5", voicemailValues));
1668 voicemailValues.Clear();
1669 voicemailId.push_back(VoicemailInsertValue("async_query6", voicemailValues));
1670 voicemailValues.Clear();
1671 std::vector<VoicemailAsync *> voicemailAsyncVector;
1672 std::vector<std::shared_ptr<OHOS::DataShare::DataShareResultSet>> resultSetVector;
1673 int threadNum = 6;
1674 for (int i = 0; i < threadNum; ++i) {
1675 VoicemailAsync *contactAsync = new VoicemailAsync(resultSetVector, voicemailId);
1676 voicemailAsyncVector.push_back(contactAsync);
1677 std::thread asyncThread(&VoicemailAsync::Query, contactAsync);
1678 asyncThread.detach();
1679 }
1680 int queryCount = 6;
1681 int size = resultSetVector.size();
1682 for (int i = 0; i < size; ++i) {
1683 int rowCount = 0;
1684 resultSetVector[i]->GetRowCount(rowCount);
1685 EXPECT_EQ(queryCount, rowCount);
1686 resultSetVector[i]->Close();
1687 }
1688 for (int i = 0; i < size; ++i) {
1689 delete voicemailAsyncVector[i];
1690 }
1691 ClearVoicemail();
1692 }
1693
1694 /*
1695 * @tc.number voicemail_async_delete_test_4100
1696 * @tc.name delete voicemail async
1697 * @tc.desc Ability to join or delete voicemail
1698 * @tc.level Level1
1699 * @tc.size MediumTest
1700 * @tc.type Function
1701 */
HWTEST_F(VoicemailAbilityTest, voicemail_async_delete_test_4000, testing::ext::TestSize.Level1)1702 HWTEST_F(VoicemailAbilityTest, voicemail_async_delete_test_4000, testing::ext::TestSize.Level1)
1703 {
1704 HILOG_INFO("--- voicemail_async_delete_test_4000 is staring! ---");
1705 OHOS::DataShare::DataShareValuesBucket voicemailValues;
1706 std::vector<int64_t> voicemailId;
1707 voicemailId.push_back(VoicemailInsertValue("async_update1", voicemailValues));
1708 voicemailValues.Clear();
1709 voicemailId.push_back(VoicemailInsertValue("async_update2", voicemailValues));
1710 voicemailValues.Clear();
1711 voicemailId.push_back(VoicemailInsertValue("async_update3", voicemailValues));
1712 voicemailValues.Clear();
1713 voicemailId.push_back(VoicemailInsertValue("async_update4", voicemailValues));
1714 voicemailValues.Clear();
1715 voicemailId.push_back(VoicemailInsertValue("async_update5", voicemailValues));
1716 voicemailValues.Clear();
1717 voicemailId.push_back(VoicemailInsertValue("async_update6", voicemailValues));
1718 voicemailValues.Clear();
1719 int size = voicemailId.size();
1720 OHOS::DataShare::DataSharePredicates predicates;
1721 predicates.BeginWrap();
1722 std::vector<VoicemailAsync *> voicemailAsyncVector;
1723 for (int i = 0; i < size; ++i) {
1724 int id = voicemailId[i];
1725 VoicemailAsync *contactAsync = new VoicemailAsync(id);
1726 voicemailAsyncVector.push_back(contactAsync);
1727 std::thread asyncThread(&VoicemailAsync::Delete, contactAsync);
1728 asyncThread.detach();
1729 predicates.EqualTo("id", std::to_string(id));
1730 if (i < size - 1) {
1731 predicates.Or();
1732 }
1733 }
1734 predicates.EndWrap();
1735 std::chrono::milliseconds dura(Time::ASYNC_SLEEP_TIME);
1736 std::this_thread::sleep_for(dura);
1737 std::vector<std::string> columns;
1738 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = VoicemailQuery(columns, predicates);
1739 int rowCount = 0;
1740 resultSet->GetRowCount(rowCount);
1741 EXPECT_EQ(0, rowCount);
1742 resultSet->Close();
1743 for (int i = 0; i < size; ++i) {
1744 delete voicemailAsyncVector[i];
1745 }
1746 ClearVoicemail();
1747 }
1748 } // namespace Test
1749 } // namespace Contacts