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