1/*
2 * Copyright (c) 2021-2023 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
16import dataShare from '@ohos.data.dataShare';
17import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it } from 'deccjsunit/index';
18import common from './common.js';
19
20const URI_VOICEMAIL = 'datashare:///com.ohos.voicemailability';
21const voicemailUri = 'datashare:///com.ohos.voicemailability/calls/voicemail';
22const INDEX_TWO = 2;
23const INDEX_THREE = 3;
24const INDEX_FOUR = 4;
25const PHONE_NUM_LEN_SIX = 6;
26const PHONE_NUM_LEN_SEVEN = 7;
27const PHONE_NUM_LEN_EIGHT = 8;
28const PHONE_NUM_LEN_NINE = 9;
29const PHONE_NUM_LEN_TEN = 10;
30const PHONE_NUM_LEN_ELEVEN = 11;
31const PHONE_NUM_LEN_TWELVE = 12;
32const PHONE_NUM_LEN_THIRTEEN = 13;
33const PHONE_NUM_LEN_FIFTEEN = 15;
34
35describe('VoicemailTest', function () {
36  console.log('----------VoicemailTest is starting!----------');
37
38
39  async function voicemailQuery(map, tag) {
40    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
41    console.info(tag + ':calllogInsertQuery start ! dataShareHelper = ' + dataShareHelper);
42    let resultColumns = [];
43    let condition = new dataShare.DataSharePredicates();
44    condition.equalTo('id', map.get('id'));
45    try {
46      let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
47      if (resultSet.rowCount > 0 && resultSet.goToFirstRow()) {
48        do {
49          for (let [key, value] of map) {
50            let dbresult = resultSet.getString(resultSet.getColumnIndex(key));
51            console.info(
52              tag + ' :logMessage voicemailQuery key = ' + key + ' dbresult :' + dbresult + ' value : ' + value
53            );
54            expect(value === dbresult).assertTrue();
55          }
56        } while (resultSet.goToNextRow());
57      }
58      resultSet.close();
59    } catch (error) {
60      console.info(tag + ':logMessage voicemailQuery: error = ' + error);
61    }
62  }
63
64  async function voicemailQueryForDelete(map, tag) {
65    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
66    console.info(tag + ': voicemailQueryForDelete start ! dataShareHelper = ' + dataShareHelper);
67    let resultColumns = common.getCallLogResultColumns();
68    let condition = new dataShare.DataSharePredicates();
69    condition.equalTo('id', map.get('id'));
70    try {
71      let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
72      expect(resultSet.goToFirstRow() === false).assertTrue();
73      console.info(tag + ' :logMessage voicemailQueryForDelete: goToFirstRow ' + resultSet.goToFirstRow());
74      resultSet.close();
75    } catch (error) {
76      console.info(tag + ' :logMessage voicemailQueryForDelete: error = ' + error);
77    }
78  }
79
80  async function voicemailQueryError(map, tag) {
81    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
82    console.info(tag + ': voicemailQueryError start ! dataShareHelper = ' + dataShareHelper);
83    let resultColumns = common.getCallLogResultColumns();
84    let condition = new dataShare.DataSharePredicates();
85    condition.equalTo('phone_number', map.get('phone_number'));
86    try {
87      let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
88      expect(resultSet.goToFirstRow() === false).assertTrue();
89      console.info(tag + ' :logMessage voicemailQueryError: goToFirstRow ' + resultSet.goToFirstRow());
90      resultSet.close();
91    } catch (error) {
92      console.info(tag + ' :logMessage voicemailQueryError: error = ' + error);
93    }
94  }
95
96  async function voicemailQueryForBatchInsert(array, tag) {
97    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
98    console.info(tag + ': voicemailQueryForBatchInsert start ! dataShareHelper = ' + dataShareHelper);
99    let resultColumns = common.getCallLogResultColumns();
100    let condition = new dataShare.DataSharePredicates();
101    condition.equalTo('phone_number', array[0].get('phone_number'));
102    try {
103      let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
104      let size = array.size();
105      console.info(tag + ' : logMessage voicemailQueryForBatchInsert: size' + size);
106      expect(resultSet.rowCount === size).assertEqual(true);
107      let i = 0;
108      if (resultSet.rowCount > 0 && resultSet.goToFirstRow()) {
109        do {
110          for (let [key, value] of array[i]) {
111            let dbresult = resultSet.getString(resultSet.getColumnIndex(key));
112            console.info(
113              tag + ' : logMessage voicemailQueryForBatchInsert dbresult :' + dbresult + ' value : ' + value
114            );
115            console.info(tag + ' : logMessage voicemailQueryForBatchInsert value ' + (value === dbresult));
116            expect(value === dbresult).assertTrue();
117          }
118          i++;
119        } while (resultSet.goToNextRow());
120      }
121      resultSet.close();
122    } catch (error) {
123      console.info(tag + ' :logMessage calllogQueryByInsert: error = ' + error);
124    }
125  }
126
127  async function voiceMailDelete(tag) {
128    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
129    let condition = new dataShare.DataSharePredicates();
130    condition.greaterThan('id', '0');
131    let deleteCode = await dataShareHelper.delete(voicemailUri, condition);
132    console.info(tag + ': voiceMailDelete deleteCode = ' + deleteCode);
133    expect(deleteCode === 0).assertTrue();
134  }
135
136  /**
137   * @tc.number  voicemail_insert_test_100
138   * @tc.name    Insert voicemail data
139   * @tc.desc    Function test
140   */
141  it('voicemail_insert_test_100', 0, async function (done) {
142    console.info('---------logMessage voicemail_insert_test_100 is starting!---------');
143    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
144    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
145    console.info('logMessage uri = ' + URI_VOICEMAIL);
146    try {
147      let voicemailId = await dataShareHelper.insert(voicemailUri, common.getVoiceMail());
148      console.info('logMessage voicemail_insert_test_100: voicemailId = ' + voicemailId);
149      expect(voicemailId > 0).assertTrue();
150      let map = common.getVoiceMailMap();
151      map.set('id', voicemailId.toString());
152      await voicemailQuery(map, 'voicemail_insert_test_100');
153      await voiceMailDelete('voicemail_insert_test_100');
154      done();
155    } catch (error) {
156      console.info('logMessage voicemail_insert_test_100: voicemail insert error = ' + error);
157      done();
158    }
159  });
160
161  /**
162   * @tc.number  voicemail_insert_test_200
163   * @tc.name    Insert voicemail status
164   * @tc.desc    Function test
165   */
166  it('voicemail_insert_test_200', 0, async function (done) {
167    console.info('---------logMessage voicemail_insert_test_200 is starting!---------');
168    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
169    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
170    console.info('logMessage uri = ' + URI_VOICEMAIL);
171    let phoneNumber = randomNum(PHONE_NUM_LEN_SIX);
172    let stringValue = { 'phone_number': phoneNumber, 'voice_status': 1 };
173    try {
174      let voicemailId = await dataShareHelper.insert(voicemailUri, stringValue);
175      console.info('logMessage voicemail_insert_test_200: voicemailId = ' + voicemailId);
176      expect(voicemailId > 0).assertTrue();
177      let map = new Map();
178      map.set('id', voicemailId.toString());
179      map.set('phone_number', phoneNumber);
180      map.set('voice_status', '1');
181      await voicemailQuery(map, 'voicemail_insert_test_200');
182      await voiceMailDelete('voicemail_insert_test_200');
183      done();
184    } catch (error) {
185      console.info('logMessage voicemail_insert_test_200: voicemail insert error = ' + error);
186      done();
187    }
188  });
189
190  /**
191   * @tc.number  voicemail_insert_test_100000
192   * @tc.name    Insert voicemail status
193   * @tc.desc    Function test
194   */
195  it('voicemail_insert_test_100000', 0, async function (done) {
196    console.info('---------logMessage voicemail_insert_test_100000 is starting!---------');
197    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
198    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
199    console.info('logMessage uri = ' + URI_VOICEMAIL);
200    let phoneNumber = randomNum(PHONE_NUM_LEN_SIX);
201    let stringValue = { 'phone_number': phoneNumber, 'voice_status': 0 };
202    try {
203      let voicemailId = await dataShareHelper.insert(voicemailUri, stringValue);
204      console.info('logMessage voicemail_insert_test_100000: voicemailId = ' + voicemailId);
205      expect(voicemailId > 0).assertTrue();
206      let map = new Map();
207      map.set('id', voicemailId.toString());
208      map.set('phone_number', phoneNumber);
209      map.set('voice_status', '0');
210      await voicemailQuery(map, 'voicemail_insert_test_100000');
211      await voiceMailDelete('voicemail_insert_test_100000');
212      done();
213    } catch (error) {
214      console.info('logMessage voicemail_insert_test_100000: voicemail insert error = ' + error);
215      done();
216    }
217  });
218
219  /**
220   * @tc.number  voicemail_update_test_1000
221   * @tc.name    Update voicemail data
222   * @tc.desc    Function test
223   */
224  it('voicemail_update_test_1000', 0, async function (done) {
225    console.info('------------logMessage voicemail_update_test_1000 is starting!----------');
226    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
227    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
228
229    try {
230      let voicemailId = await dataShareHelper.insert(voicemailUri, common.getVoiceMail());
231      console.info('logMessage voicemail_update_test_1000: voicemailId = ' + voicemailId);
232      expect(voicemailId > 0).assertTrue();
233      await voicemailUpdate();
234      await voiceMailDelete('voicemail_update_test_1000');
235      done();
236    } catch (error) {
237      console.info('logMessage voicemail_update_test_1000: voicemail insert error = ' + error);
238      done();
239    }
240
241    async function voicemailUpdate() {
242      let condition = new dataShare.DataSharePredicates();
243      condition.equalTo('id', voicemailId.toString());
244      try {
245        let updateCode = await dataShareHelper.update(voicemailUri, common.getVoiceMailUpdate(), condition);
246        console.info('logMessage voicemail_update_test_1000: updateCode = ' + updateCode);
247        expect(updateCode === 0).assertTrue();
248        let map = common.getVoiceMailUpdateMap();
249        map.set('id', voicemailId.toString());
250        await voicemailQuery(map, 'voicemail_update_test_1000');
251      } catch (error) {
252        console.info('logMessage voicemail_update_test_1000: update error = ' + error);
253        done();
254      }
255    }
256  });
257
258  /**
259   * @tc.number  voicemail_update_test_900
260   * @tc.name    Update voicemail status
261   * @tc.desc    Function test
262   */
263  it('voicemail_update_test_900', 0, async function (done) {
264    console.info('------------logMessage voicemail_update_test_900 is starting!----------');
265    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
266    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
267    let phoneNumber = randomNum(PHONE_NUM_LEN_SEVEN);
268    let insertValues = { 'phone_number': phoneNumber, 'voice_status': 0 };
269    try {
270      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
271      console.info('logMessage voicemail_update_test_900: voicemailId = ' + voicemailId);
272      expect(voicemailId > 0).assertTrue();
273      await voicemailUpdate();
274      await voiceMailDelete('voicemail_update_test_900');
275      done();
276    } catch (error) {
277      console.info('logMessage voicemail_update_test_900: voicemail insert error = ' + error);
278      done();
279    }
280
281    async function voicemailUpdate() {
282      let updateValues = { 'voice_status': 1 };
283      let condition = new dataShare.DataSharePredicates();
284      condition.equalTo('id', voicemailId.toString());
285      try {
286        let updateCode = await dataShareHelper.update(voicemailUri, updateValues, condition);
287        console.info('logMessage voicemail_update_test_900: updateCode = ' + updateCode);
288        expect(updateCode === 0).assertTrue();
289        let map = new Map();
290        map.set('id', voicemailId.toString());
291        map.set('voice_status', '1');
292        await voicemailQuery(map, 'voicemail_update_test_900');
293      } catch (error) {
294        console.info('logMessage voicemail_update_test_900: update error = ' + error);
295        done();
296      }
297    }
298  });
299
300  /**
301   * @tc.number  voicemail_delete_test_500
302   * @tc.name    Delete voicemail data
303   * @tc.desc    Function test
304   */
305  it('voicemail_delete_test_500', 0, async function (done) {
306    console.info('-------------logMessage voicemail_delete_test_500 is starting!-----------');
307    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
308    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
309    let phoneNumber = randomNum(PHONE_NUM_LEN_EIGHT);
310    let insertValues = { 'phone_number': phoneNumber, 'display_name': 'zhangming' };
311    try {
312      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
313      console.info('logMessage voicemail_delete_test_500: voicemailId = ' + voicemailId);
314      expect(voicemailId > 0).assertTrue();
315      await voicemailDelete();
316      await voiceMailDelete('voicemail_delete_test_500');
317      done();
318    } catch (error) {
319      console.info('logMessage voicemail_delete_test_500: voicemail insert error = ' + error);
320      done();
321    }
322
323    async function voicemailDelete() {
324      let condition = new dataShare.DataSharePredicates();
325      condition.equalTo('id', voicemailId.toString());
326      try {
327        let deleteCode = await dataShareHelper.delete(voicemailUri, condition);
328        console.info('logMessage voicemail_delete_test_500: deleteCode = ' + deleteCode);
329        expect(deleteCode === 0).assertTrue();
330        let map = new Map();
331        map.set('id', voicemailId.toString());
332        await voicemailQueryForDelete(map, 'voicemail_delete_test_500');
333      } catch (error) {
334        console.info('logMessage voicemail_delete_test_500: delete error = ' + error);
335        done();
336      }
337    }
338  });
339
340  /**
341   * @tc.number  voicemail_update_test_600
342   * @tc.name    Delete voicemail status
343   * @tc.desc    Function test
344   */
345  it('voicemail_update_test_600', 0, async function (done) {
346    console.info('-------------logMessage voicemail_update_test_600 is starting!-----------');
347    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
348    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
349    let phoneNumber = randomNum(PHONE_NUM_LEN_EIGHT);
350    let insertValues1 = { 'phone_number': phoneNumber, 'voice_status': 1 };
351    try {
352      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues1);
353      console.info('logMessage voicemail_update_test_600: voicemailId = ' + voicemailId);
354      expect(voicemailId > 0).assertTrue();
355      await voicemailUpdate();
356      await voiceMailDelete('voicemail_update_test_600');
357      done();
358    } catch (error) {
359      console.info('logMessage voicemail_update_test_600: voicemail insert error = ' + error);
360      done();
361    }
362
363    async function voicemailUpdate() {
364      let updateValues = { 'voice_status': 0 };
365      let condition = new dataShare.DataSharePredicates();
366      condition.equalTo('id', voicemailId.toString());
367      try {
368        let updateCode = await dataShareHelper.update(voicemailUri, updateValues, condition);
369        console.info('logMessage voicemail_update_test_600: deleteCode = ' + updateCode);
370        expect(updateCode === 0).assertTrue();
371        let map = new Map();
372        map.set('id', voicemailId.toString());
373        map.set('voice_status', '0');
374        await voicemailQuery(map, 'voicemail_update_test_600');
375      } catch (error) {
376        console.info('logMessage voicemail_update_test_600: update error = ' + error);
377        done();
378      }
379    }
380  });
381
382  /**
383   * @tc.number  voicemail_batchInsert_test_1800
384   * @tc.name    Insert voicemail data in batches
385   * @tc.desc    Function test
386   */
387  it('voicemail_batchInsert_test_1800', 0, async function (done) {
388    console.info('-------------logMessage voicemail_batchInsert_test_1800 is starting!-----------');
389    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
390    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
391    let phoneNumberLenFour = 4;
392    let phoneNumber = randomNum(phoneNumberLenFour);
393    let insertValuesOne = {
394      'phone_number': phoneNumber,
395      'display_name': 'xiaoming'
396    };
397    let insertValuesTwo = {
398      'phone_number': phoneNumber,
399      'display_name': 'xiaohei'
400    };
401    let insertValuesThree = {
402      'phone_number': phoneNumber,
403      'display_name': 'xiaohong'
404    };
405    let insertValuesFour = {
406      'phone_number': phoneNumber,
407      'display_name': 'xiaohei'
408    };
409    let insertValuesFive = {
410      'phone_number': phoneNumber,
411      'display_name': 'xiaofen'
412    };
413    let listAddBluk = [];
414    listAddBluk[0] = insertValuesOne;
415    listAddBluk[1] = insertValuesTwo;
416    listAddBluk[INDEX_TWO] = insertValuesThree;
417    listAddBluk[INDEX_THREE] = insertValuesFour;
418    listAddBluk[INDEX_FOUR] = insertValuesFive;
419    try {
420      let batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
421      console.info('logMessage voicemail_batchInsert_test_1800: batchInsertCode = ' + batchInsertCode);
422      expect(batchInsertCode === 0).assertTrue();
423      await voiceMailDelete('voicemail_batchInsert_test_1800');
424      done();
425    } catch (error) {
426      console.info('logMessage voicemail_batchInsert_test_1800: batchInsert error = ' + error);
427      done();
428    }
429  });
430
431  /**
432   * @tc.number  voicemail_batchInsert_test_1700
433   * @tc.name    Insert voicemail status in batches
434   * @tc.desc    Function test
435   */
436  it('voicemail_batchInsert_test_1700', 0, async function (done) {
437    console.info('-------------logMessage voicemail_batchInsert_test_1700 is starting!-----------');
438    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
439    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
440    let phoneNumberLenThree = 3;
441    let phoneNumber = randomNum(phoneNumberLenThree);
442    let insertValuesOne = {
443      'phone_number': phoneNumber,
444      'display_name': 'xiaoming',
445      'voice_status': 0
446    };
447    let insertValuesTwo = {
448      'phone_number': phoneNumber,
449      'display_name': 'xiaohei',
450      'voice_status': 1
451    };
452    let insertValuesThree = {
453      'phone_number': phoneNumber,
454      'display_name': 'xiaohong',
455      'voice_status': 0
456    };
457    let insertValuesFour = {
458      'phone_number': phoneNumber,
459      'display_name': 'xiaohei',
460      'voice_status': 0
461    };
462    let insertValuesFive = {
463      'phone_number': phoneNumber,
464      'display_name': 'xiaofen',
465      'voice_status': 1
466    };
467    let listAddBluk = [];
468    listAddBluk[0] = insertValuesOne;
469    listAddBluk[1] = insertValuesTwo;
470    listAddBluk[INDEX_TWO] = insertValuesThree;
471    listAddBluk[INDEX_THREE] = insertValuesFour;
472    listAddBluk[INDEX_FOUR] = insertValuesFive;
473    try {
474      let batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
475      console.info('logMessage voicemail_batchInsert_test_1700: batchInsertCode = ' + batchInsertCode);
476      expect(batchInsertCode === 0).assertTrue();
477      let array = common.getVoiceMailBatchInsert();
478      await voicemailQueryForBatchInsert(array, 'voicemail_batchInsert_test_1700');
479      await voiceMailDelete('voicemail_batchInsert_test_1700');
480      done();
481    } catch (error) {
482      console.info('logMessage voicemail_batchInsert_test_1700: batchInsert error = ' + error);
483      done();
484    }
485  });
486
487  /**
488   * @tc.number  voicemail_query_test_1400
489   * @tc.name    Query voicemail data
490   * @tc.desc    Function test
491   */
492  it('voicemail_query_test_1400', 0, async function (done) {
493    console.info('------------voicemail_query_test_1400 is starting!-----------');
494    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
495    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
496    let phoneNumber = randomNum(PHONE_NUM_LEN_NINE);
497    let insertValues = { 'phone_number': phoneNumber, 'display_name': 'daming' };
498    try {
499      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
500      console.info('logMessage voicemail_query_test_1400: voicemailId = ' + voicemailId);
501      expect(voicemailId > 0).assertTrue();
502      await voicemailQuery();
503      await voiceMailDelete('voicemail_query_test_1400');
504      done();
505    } catch (error) {
506      console.info('logMessage voicemail_query_test_1400: voicemial insert error = ' + error);
507      done();
508    }
509
510    async function voicemailQuery() {
511      let resultColumns = ['id', 'display_name', 'phone_number'];
512      let condition = new dataShare.DataSharePredicates();
513      condition.equalTo('id', voicemailId.toString());
514      try {
515        let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
516        if (resultSet.goToFirstRow()) {
517          do {
518            console.info('voicemail_query_test_1400 id = ' + resultSet.getString(0));
519            expect(resultSet.getString(0) === voicemailId.toString()).assertTrue();
520            console.info('voicemail_query_test_1400 display_name = ' + resultSet.getString(1));
521            expect(resultSet.getString(1) === 'daming').assertTrue();
522            console.info('voicemail_query_test_1400 phone_number = ' + resultSet.getString(INDEX_TWO));
523            expect(resultSet.getString(INDEX_TWO) === phoneNumber).assertTrue();
524          } while (resultSet.goToNextRow());
525        }
526        resultSet.close();
527      } catch (error) {
528        console.info('voicemail_query_test_1400 query error = ' + error);
529        done();
530      }
531    }
532  });
533
534  /**
535   * @tc.number  voicemail_query_test_1300
536   * @tc.name    Query voicemail's status
537   * @tc.desc    Function test
538   */
539  it('voicemail_query_test_1300', 0, async function (done) {
540    console.info('------------voicemail_query_test_1300  is starting!-----------');
541    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
542    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
543    let phoneNumber = randomNum(PHONE_NUM_LEN_NINE);
544    let insertValues = {
545      'phone_number': phoneNumber,
546      'display_name': 'xiaoming',
547      'voice_status': 1
548    };
549    try {
550      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
551      console.info('logMessage voicemail_query_test_1300: voicemailId = ' + voicemailId);
552      expect(voicemailId > 0).assertTrue();
553      await voicemailQuery();
554      await voiceMailDelete('voicemail_query_test_1300');
555      done();
556    } catch (error) {
557      console.info('logMessage voicemail_query_test_1300: voicemial insert error = ' + error);
558      done();
559    }
560
561    async function voicemailQuery() {
562      let resultColumns = ['id', 'display_name', 'phone_number'];
563      let condition = new dataShare.DataSharePredicates();
564      condition.equalTo('voice_status', '1');
565      condition.and();
566      condition.equalTo('phone_number', phoneNumber);
567      try {
568        let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
569        if (resultSet.goToFirstRow()) {
570          do {
571            console.info('voicemail_query_test_1300 id = ' + resultSet.getString(0));
572            expect(resultSet.getString(0) === voicemailId.toString()).assertTrue();
573            console.info('voicemail_query_test_1300 display_name = ' + resultSet.getString(1));
574            expect(resultSet.getString(1) === 'xiaoming').assertTrue();
575            console.info('voicemail_query_test_1300 phone_number = ' + resultSet.getString(INDEX_TWO));
576            expect(resultSet.getString(INDEX_TWO) === phoneNumber).assertTrue();
577          } while (resultSet.goToNextRow());
578        }
579        resultSet.close();
580      } catch (error) {
581        console.info('voicemail_query_test_1300 query error = ' + error);
582        done();
583      }
584    }
585  });
586
587  /**
588   * @tc.number  abnormal_voicemail_insert_test_300
589   * @tc.name    Abnormal use case, an incorrect field is passed in when inserting data
590   * @tc.desc    Function test
591   */
592  it('abnormal_voicemail_insert_test_300', 0, async function (done) {
593    console.info('------------abnormal_voicemail_insert_test_300 is starting!-----------');
594    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
595    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
596    let phoneNumber = randomNum(PHONE_NUM_LEN_TEN);
597    let insertValues = { 'phone_numbers': phoneNumber, 'display_name': 'xiaoming' };
598    try {
599      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
600      console.info('logMessage abnormal_voicemail_insert_test_300: voicemialId = ' + voicemailId);
601      expect(voicemailId === -1).assertTrue();
602      done();
603    } catch (error) {
604      console.info('abnormal_voicemail_insert_test_300 insert error = ' + error);
605      done();
606    }
607  });
608
609  /**
610   * @tc.number  abnormal_voicemail_insert_test_400
611   * @tc.name    Exception use case, an incorrect table name is passed in when inserting data
612   * @tc.desc    Function test
613   */
614  it('abnormal_voicemail_insert_test_400', 0, async function (done) {
615    console.info('------------abnormal_voicemail_insert_test_400 is starting!-----------');
616    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
617    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
618    let errorUri = 'datashare:///com.ohos.calllogability/calls/voicemails';
619
620    let phoneNumber = randomNum(PHONE_NUM_LEN_NINE);
621    let insertValues = { 'phone_number': phoneNumber, 'display_name': 'xiaoming' };
622    try {
623      let voicemialId = await dataShareHelper.insert(errorUri, insertValues);
624      console.info('logMessage abnormal_voicemail_insert_test_400: voicemialId = ' + voicemialId);
625      expect(voicemialId === -1).assertTrue();
626      let map = new Map();
627      map.set('phone_number', phoneNumber);
628      await voicemailQueryError(map, 'abnormal_voicemail_insert_test_400');
629      done();
630    } catch (error) {
631      console.info('abnormal_voicemail_insert_test_400 insert error = ' + error);
632      done();
633    }
634  });
635
636  /**
637   * @tc.number  abnormal_voicemail_update_test_1100
638   * @tc.name    Abnormal use case, passing in a wrong field when updating data
639   * @tc.desc    Function test
640   */
641  it('abnormal_voicemail_update_test_1100', 0, async function (done) {
642    console.info('------------abnormal_voicemail_update_test_1100 is starting!-----------');
643    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
644    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
645    let phoneNumber = randomNum(PHONE_NUM_LEN_TEN);
646    let insertValues = { 'phone_number': phoneNumber };
647    try {
648      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
649      console.info('logMessage abnormal_voicemail_update_test_1100: voicemailId = ' + voicemailId);
650      expect(voicemailId > 0).assertTrue();
651      await abnormalUpdate();
652      await voiceMailDelete('abnormal_voicemail_update_test_1100');
653      done();
654    } catch (error) {
655      console.info('abnormal_voicemail_update_test_1100 insert error = ' + error);
656      done();
657    }
658
659    async function abnormalUpdate() {
660      let phoneNumberTest = randomNum(PHONE_NUM_LEN_FIFTEEN);
661      let updateValues = { 'phone_numbers': phoneNumberTest };
662      let condition = new dataShare.DataSharePredicates();
663      condition.equalTo('ids', voicemailId.toString());
664      try {
665        let updataCode = await dataShareHelper.update(voicemailUri, updateValues, condition);
666        console.info('logMessage abnormal_voicemail_update_test_1100: updataCode = ' + updataCode);
667        expect(updataCode === -1).assertTrue();
668        let map = new Map();
669        map.set('phone_number', phoneNumberTest);
670        await voicemailQueryError(map, 'abnormal_voicemail_update_test_1100');
671      } catch (error) {
672        console.info('logMessage abnormal_voicemail_update_test_1100: update error = ' + error);
673        done();
674      }
675    }
676  });
677
678  /**
679   * @tc.number  abnormal_voicemail_update_test_1200
680   * @tc.name    Abnormal use case, an incorrect table name is passed in when updating data
681   * @tc.desc    Function test
682   */
683  it('abnormal_voicemail_update_test_1200', 0, async function (done) {
684    console.info('------------abnormal_voicemail_update_test_1200 is starting!-----------');
685    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
686    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
687    let errorUri = 'datashare:///com.ohos.calllogability/calls/voicemails';
688    let phoneNumber = randomNum(PHONE_NUM_LEN_SIX);
689    let insertValues = { 'phone_number': phoneNumber };
690    try {
691      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
692      console.info('logMessage abnormal_voicemail_update_test_1200: voicemailId = ' + voicemailId);
693      expect(voicemailId > 0).assertTrue();
694      await abnormalUpdate();
695      await voiceMailDelete('abnormal_voicemail_update_test_1200');
696      done();
697    } catch (error) {
698      console.info('logMessage abnormal_voicemail_update_test_1200: insert error = ' + error);
699      done();
700    }
701
702    async function abnormalUpdate() {
703      let phoneNumberTest = randomNum(PHONE_NUM_LEN_SIX);
704      let updateValues = { 'phone_number': phoneNumberTest };
705      let condition = new dataShare.DataSharePredicates();
706      condition.equalTo('id', voicemailId.toString());
707      try {
708        let updataCode = await dataShareHelper.update(errorUri, updateValues, condition);
709        console.info('logMessage abnormal_voicemail_update_test_1200: updataCode = ' + updataCode);
710        expect(updataCode === -1).assertTrue();
711        let map = new Map();
712        map.set('phone_number', phoneNumberTest);
713        await voicemailQueryError(map, 'abnormal_voicemail_update_test_1200');
714      } catch (error) {
715        console.info('logMessage abnormal_voicemail_update_test_1200: update error = ' + error);
716        done();
717      }
718    }
719  });
720
721  /**
722   * @tc.number  abnormal_voicemail_delete_test_700
723   * @tc.name    Abnormal use case, passing in a wrong field when deleting data
724   * @tc.desc    Function test
725   */
726  it('abnormal_voicemail_delete_test_700', 0, async function (done) {
727    console.info('------------abnormal_voicemail_delete_test_700 is starting!-----------');
728    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
729    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
730    let phoneNumber = randomNum(PHONE_NUM_LEN_SIX);
731    let insertValues = { 'phone_number': phoneNumber };
732    try {
733      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
734      console.info('logMessage abnormal_voicemail_delete_test_700: voicemailId = ' + voicemailId);
735      expect(voicemailId > 0).assertTrue();
736      await abnormalDelete();
737      await voiceMailDelete('abnormal_voicemail_delete_test_700');
738      done();
739    } catch (error) {
740      console.info('logMessage abnormal_voicemail_delete_test_700: insert error = ' + error);
741      done();
742    }
743
744    async function abnormalDelete() {
745      let condition = new dataShare.DataSharePredicates();
746      condition.equalTo('ids', voicemailId.toString());
747      try {
748        let deleteCode = await dataShareHelper.delete(voicemailUri, condition);
749        console.info('logMessage abnormal_voicemail_delete_test_700: deleteCode = ' + deleteCode);
750        expect(deleteCode === -1).assertTrue();
751      } catch (error) {
752        console.info('logMessage abnormal_voicemail_delete_test_700: delete error = ' + error);
753        done();
754      }
755    }
756  });
757
758  /**
759   * @tc.number  abnormal_voicemail_delete_test_800
760   * @tc.name    Abnormal use case, passing in an incorrect table name when deleting data
761   * @tc.desc    Function test
762   */
763  it('abnormal_voicemail_delete_test_800', 0, async function (done) {
764    console.info('------------abnormal_voicemail_delete_test_800 is starting!-----------');
765    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
766    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
767    let errorUri = 'datashare:///com.ohos.calllogability/calls/voicemails';
768    let phoneNumber = randomNum(PHONE_NUM_LEN_SIX);
769    let insertValues = { 'phone_number': phoneNumber };
770    try {
771      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
772      console.info('logMessage abnormal_voicemail_delete_test_800: voicemailId = ' + voicemailId);
773      expect(voicemailId > 0).assertTrue();
774      await abnormalDelete();
775      await voiceMailDelete('abnormal_voicemail_delete_test_800');
776      done();
777    } catch (error) {
778      console.info('logMessage abnormal_voicemail_delete_test_800: insert error = ' + error);
779      done();
780    }
781
782    async function abnormalDelete() {
783      let condition = new dataShare.DataSharePredicates();
784      condition.equalTo('id', voicemailId.toString());
785      try {
786        let deleteCode = await dataShareHelper.delete(errorUri, condition);
787        console.info('logMessage abnormal_voicemail_delete_test_800: deleteCode = ' + deleteCode);
788        expect(deleteCode === -1).assertTrue();
789      } catch (error) {
790        console.info('logMessage abnormal_voicemail_delete_test_800: delete error = ' + error);
791        done();
792      }
793    }
794  });
795
796  /**
797   * @tc.number  abnormal_voicemail_query_test_1500
798   * @tc.name    Abnormal use case, an incorrect field is passed in when querying
799   * @tc.desc    Function test
800   */
801  it('abnormal_voicemail_query_test_1500', 0, async function (done) {
802    console.info('------------abnormal_voicemail_query_test_1500 is starting!-----------');
803    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
804    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
805    let phoneNumber = randomNum(PHONE_NUM_LEN_SIX);
806    let insertValues = { 'phone_number': phoneNumber };
807    try {
808      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
809      console.info('logMessage abnormal_voicemail_query_test_1500: voicemailId = ' + voicemailId);
810      expect(voicemailId > 0).assertTrue();
811      await abnormalQuery();
812      await voiceMailDelete('abnormal_voicemail_query_test_1500');
813      done();
814    } catch (error) {
815      console.info('logMessage abnormal_voicemail_query_test_1500: insert error = ' + error);
816      done();
817    }
818
819    async function abnormalQuery() {
820      let resultColumns = ['id', 'phone_number'];
821
822      let condition = new dataShare.DataSharePredicates();
823      condition.equalTo('ids', voicemailId.toString());
824      try {
825        let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
826        console.info('logMessage abnormal_voicemail_query_test_1500: goToFirstRow' + resultSet.goToFirstRow());
827        expect(resultSet.goToFirstRow()).assertEqual(false);
828        resultSet.close();
829      } catch (error) {
830        console.info('logMessage abnormal_voicemail_query_test_1500: query error = ' + error);
831        done();
832      }
833    }
834  });
835
836  /**
837   * @tc.number  abnormal_voicemail_batchinsert_test_1900
838   * @tc.name    Abnormal use cases, when inserting data in batches, some of them failed, check the processing logic
839   * @tc.desc    Function test
840   */
841  it('abnormal_voicemail_batchinsert_test_1900', 0, async function (done) {
842    console.info('--------logMessage abnormal_voicemail_batchinsert_test_1900 is starting!------------');
843    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
844    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
845    let phoneNumber = randomNum(PHONE_NUM_LEN_NINE);
846    let phoneNumberTest = randomNum(PHONE_NUM_LEN_SIX);
847    let addBulkValue1 = { 'phone_number': phoneNumber, 'ring_duration': '500' };
848    let addBulkValue2 = { 'phone_number': phoneNumberTest, 'ring_duration': '100' };
849    let addBulkValue3 = { 'phone_numbers': phoneNumberTest, 'ring_duration': '100' };
850    let addBulkValue4 = { 'phone_number': phoneNumberTest, 'ring_durations': '100' };
851    let addBulkValue5 = { 'phone_number': phoneNumberTest, 'ring_duration': '100' };
852    let listAddBluk = [];
853    listAddBluk[0] = addBulkValue1;
854    listAddBluk[1] = addBulkValue2;
855    listAddBluk[INDEX_TWO] = addBulkValue3;
856    listAddBluk[INDEX_THREE] = addBulkValue4;
857    listAddBluk[INDEX_FOUR] = addBulkValue5;
858    try {
859      let batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
860      console.info('logMessage abnormal_voicemail_batchinsert_test_1900: batchInsertCode = ' + batchInsertCode);
861      expect(batchInsertCode === -1).assertTrue();
862      done();
863    } catch (error) {
864      console.info('logMessage abnormal_voicemail_batchinsert_test_1900: batchInsert error = ' + error);
865      done();
866    }
867  });
868
869  /**
870   * @tc.number  voiceMail_delete_test_2000
871   * @tc.name    batchDelete
872   * @tc.desc    Function test
873   */
874  it('voiceMail_delete_test_2000', 0, async function (done) {
875    console.info('--------logMessage voiceMail_delete_test_2000 is starting!------------');
876    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
877    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
878    try {
879      let voiceMailId = await dataShareHelper.insert(voicemailUri, common.getVoiceMail());
880      console.info('logMessage voiceMail_delete_test_2000: voiceMailId = ' + voiceMailId);
881      expect(voiceMailId > 0).assertTrue();
882      let map = common.getVoiceMailMap();
883      map.set('id', voiceMailId.toString());
884      await voicemailQuery(map, 'voiceMail_delete_test_2000');
885      await executeBatch();
886    } catch (error) {
887      console.info('logMessage voiceMail_delete_test_2000: voiceMailId insert error = ' + error);
888      done();
889    }
890
891    async function executeBatch() {
892      console.info('logMessage voiceMail_delete_test_2000:  executeBatch start ');
893      let condition = new dataShare.DataSharePredicates();
894      condition.equalTo('id', voiceMailId.toString());
895      dataShareHelper.executeBatch(
896        URI_VOICEMAIL,
897        [
898          {
899            uri: voicemailUri,
900            type: featureAbility.DataAbilityOperationType.TYPE_DELETE,
901            predicates: condition,
902            expectedCount: 0,
903            PredicatesBackReferences: {},
904            interrupted: true
905          }
906        ],
907        (error, data) => {
908          console.info('logMessage voiceMail_delete_test_2000: executeBatch data = ' + JSON.stringify(data));
909          console.info('logMessage voiceMail_delete_test_2000: data_3 = ' + data);
910          console.info('logMessage voiceMail_delete_test_2000:  data_1= ' + data[0].count);
911          expect(data[0].count === 0).assertTrue();
912          done();
913        }
914      );
915    }
916  });
917
918  /**
919   * @tc.number  voiceMail_update_test_2100
920   * @tc.name    batchUpdate
921   * @tc.desc    Function test
922   */
923  it('voiceMail_update_test_2100', 0, async function (done) {
924    console.info('--------logMessage voiceMail_update_test_2100 is starting!------------');
925    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
926    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
927    try {
928      let voiceMailId = await dataShareHelper.insert(voicemailUri, common.getVoiceMail());
929      console.info('logMessage voiceMail_update_test_2100: voiceMailId = ' + voiceMailId);
930      expect(voiceMailId > 0).assertTrue();
931      let map = common.getVoiceMailMap();
932      map.set('id', voiceMailId.toString());
933      await voicemailQuery(map, 'voiceMail_update_test_2100');
934      await executeBatch();
935    } catch (error) {
936      console.info('logMessage voiceMail_update_test_2100: calllog insert error = ' + error);
937      done();
938    }
939
940    async function executeBatch() {
941      let phoneNumber = randomNum(PHONE_NUM_LEN_EIGHT);
942      let updateValues = { 'phone_number': phoneNumber };
943      console.info('logMessage voiceMail_update_test_2100:  executeBatch start ');
944      let condition = new dataShare.DataSharePredicates();
945      condition.equalTo('id', voiceMailId.toString());
946      dataShareHelper.executeBatch(
947        URI_VOICEMAIL,
948        [
949          {
950            uri: voicemailUri,
951            type: featureAbility.DataAbilityOperationType.TYPE_UPDATE,
952            valuesBucket: updateValues,
953            predicates: condition,
954            expectedCount: 0,
955            PredicatesBackReferences: {},
956            interrupted: true
957          }
958        ],
959        (error, data) => {
960          console.info('logMessage voiceMail_update_test_2100: executeBatch data = ' + JSON.stringify(data));
961          console.info('logMessage voiceMail_update_test_2100: data_3 = ' + data);
962          console.info('logMessage voiceMail_update_test_2100:  data_1= ' + data[0].count);
963          expect(data[0].count === 0).assertTrue();
964          done();
965        }
966      );
967    }
968  });
969
970  /**
971   * @tc.number  voicemail_insert_test_2200
972   * @tc.name    Insert voicemail status 0
973   * @tc.desc    Function test
974   */
975  it('voicemail_insert_test_2200', 0, async function (done) {
976    console.info('---------logMessage voicemail_insert_test_2200 is starting!---------');
977    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
978    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
979    console.info('logMessage uri = ' + URI_VOICEMAIL);
980    let phoneNumber = randomNum(PHONE_NUM_LEN_FIFTEEN);
981    let stringValue = { 'phone_number': phoneNumber, 'voice_status': 0 };
982    try {
983      let voicemailId = await dataShareHelper.insert(voicemailUri, stringValue);
984      console.info('logMessage voicemail_insert_test_2200: voicemailId = ' + voicemailId);
985      expect(voicemailId > 0).assertTrue();
986      let map = new Map();
987      map.set('id', voicemailId.toString());
988      map.set('phone_number', phoneNumber);
989      map.set('voice_status', '0');
990      await voicemailQuery(map, 'voicemail_insert_test_2200');
991      await voiceMailDelete('voicemail_insert_test_2200');
992      done();
993    } catch (error) {
994      console.info('logMessage voicemail_insert_test_2200: voicemail insert error = ' + error);
995      done();
996    }
997  });
998
999  /**
1000   * @tc.number  voicemail_insert_test_2300
1001   * @tc.name    Insert 3 pieces of voice mail data first, then delete 2 pieces of data,
1002   *             and verify whether the deletion is successful
1003   * @tc.desc    Function test
1004   */
1005  it('voicemail_insert_test_2300', 0, async function (done) {
1006    console.info('---------logMessage voicemail_insert_test_2300 is starting!---------');
1007    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
1008    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
1009    console.info('logMessage uri = ' + URI_VOICEMAIL);
1010    let phoneNumber = randomNum(PHONE_NUM_LEN_ELEVEN);
1011    let stringValue = { 'phone_number': phoneNumber, 'voice_status': 0 };
1012    try {
1013      let voicemailId = await dataShareHelper.insert(voicemailUri, stringValue);
1014      let voicemailIdOne = await dataShareHelper.insert(voicemailUri, stringValue);
1015      let voicemailIdTwo = await dataShareHelper.insert(voicemailUri, stringValue);
1016      let condition = new dataShare.DataSharePredicates();
1017      condition.equalTo('id', voicemailId.toString());
1018      condition.or();
1019      condition.equalTo('id', voicemailIdOne.toString());
1020      let deleteCode = await dataShareHelper.delete(voicemailUri, condition);
1021      console.info('logMessage voicemail_insert_test_2300: deleteCode = ' + deleteCode);
1022      let resultColumns = [];
1023      let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
1024      expect(resultSet.rowCount === 0).assertTrue();
1025      resultSet.close();
1026      await voiceMailDelete('voicemail_insert_test_2300');
1027      done();
1028    } catch (error) {
1029      console.info('logMessage voicemail_insert_test_2300: voicemail insert error = ' + error);
1030      done();
1031    }
1032  });
1033
1034  /**
1035   * @tc.number  voicemail_insert_test_2400
1036   * @tc.name    Insert 3 pieces of voice mail data first, then update 2 pieces of data,
1037   *             and verify whether the deletion is successful
1038   * @tc.desc    Function test
1039   */
1040  it('voicemail_insert_test_2400', 0, async function (done) {
1041    console.info('---------logMessage voicemail_insert_test_2400 is starting!---------');
1042    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
1043    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
1044    console.info('logMessage uri = ' + URI_VOICEMAIL);
1045    let phoneNumberTest = randomNum(PHONE_NUM_LEN_EIGHT);
1046    let stringValue = { 'phone_number': phoneNumberTest, 'voice_status': 0 };
1047    try {
1048      let voicemailId = await dataShareHelper.insert(voicemailUri, stringValue);
1049      let voicemailIdOne = await dataShareHelper.insert(voicemailUri, stringValue);
1050      let voicemailIdTwo = await dataShareHelper.insert(voicemailUri, stringValue);
1051      let condition = new dataShare.DataSharePredicates();
1052      condition.equalTo('id', voicemailId.toString());
1053      condition.or();
1054      condition.equalTo('id', voicemailIdOne.toString());
1055      let phoneNumber = randomNum(PHONE_NUM_LEN_THIRTEEN);
1056      let updateValue = { 'phone_number': phoneNumber, 'voice_status': 1 };
1057      let updateCode = await dataShareHelper.update(voicemailUri, updateValue, condition);
1058      console.info('logMessage voicemail_insert_test_2400: deleteCode = ' + updateCode);
1059
1060      let map = new Map();
1061      map.set('id', voicemailId.toString());
1062      map.set('phone_number', phoneNumber);
1063      map.set('voice_status', '1');
1064      await voicemailQuery(map, 'voicemail_insert_test_2400');
1065
1066      let mapOne = new Map();
1067      mapOne.set('id', voicemailIdOne.toString());
1068      mapOne.set('phone_number', phoneNumber);
1069      mapOne.set('voice_status', '1');
1070      await voicemailQuery(mapOne, 'voicemail_insert_test_2400');
1071      await voiceMailDelete('voicemail_insert_test_2400');
1072      done();
1073    } catch (error) {
1074      console.info('logMessage voicemail_insert_test_2400: voicemail insert error = ' + error);
1075      done();
1076    }
1077  });
1078
1079  /**
1080   * @tc.number  voicemail_insert_test_2500
1081   * @tc.name    Query the voice mailbox with status 0 or id and return the query result
1082   * @tc.desc    Function test
1083   */
1084  it('voicemail_query_test_2500', 0, async function (done) {
1085    console.info('---------logMessage voicemail_query_test_2500 is starting!---------');
1086    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
1087    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
1088    console.info('logMessage uri = ' + URI_VOICEMAIL);
1089    let phoneNumber = randomNum(PHONE_NUM_LEN_TEN);
1090    let stringValue = { 'phone_number': phoneNumber, 'voice_status': 0 };
1091    try {
1092      let voicemailId = await dataShareHelper.insert(voicemailUri, stringValue);
1093      let voicemailIdOne = await dataShareHelper.insert(voicemailUri, stringValue);
1094      let condition = new dataShare.DataSharePredicates();
1095      condition.beginWrap();
1096      condition.equalTo('id', voicemailId.toString());
1097      condition.or();
1098      condition.equalTo('id', voicemailIdOne.toString());
1099      condition.endWrap();
1100      condition.and();
1101      condition.equalTo('voice_status', '0');
1102      let resultColumns = [];
1103      let rowCount = 2;
1104      let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
1105      expect(resultSet.rowCount === rowCount).assertTrue();
1106      resultSet.close();
1107      await voiceMailDelete('voicemail_query_test_2500');
1108      done();
1109    } catch (error) {
1110      console.info('logMessage voicemail_query_test_2500: voicemail insert error = ' + error);
1111      done();
1112    }
1113  });
1114
1115  /**
1116   * @tc.number  voicemail_query_test_2600
1117   * @tc.name    Query the voice mailbox and return the query result
1118   * @tc.desc    Function test
1119   */
1120  it('voicemail_query_test_2600', 0, async function (done) {
1121    console.info('---------logMessage voicemail_query_test_2600 is starting!---------');
1122    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
1123    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
1124    console.info('logMessage uri = ' + URI_VOICEMAIL);
1125    let phoneNumber = randomNum(PHONE_NUM_LEN_TWELVE);
1126    let stringValue = { 'phone_number': phoneNumber, 'voice_status': 0 };
1127    try {
1128      let voicemailId = await dataShareHelper.insert(voicemailUri, stringValue);
1129      console.info('voicemail_query_test_2600 voicemailId = ' + voicemailId);
1130      let voicemailIdOne = await dataShareHelper.insert(voicemailUri, stringValue);
1131      console.info('voicemail_query_test_2600  voicemailIdOne = ' + voicemailIdOne);
1132      let condition = new dataShare.DataSharePredicates();
1133      let resultColumns = [];
1134      let rowCount = 2;
1135      let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
1136      expect(resultSet.rowCount === rowCount).assertTrue();
1137      resultSet.close();
1138      await voiceMailDelete('voicemail_query_test_2600');
1139      done();
1140    } catch (error) {
1141      console.info('logMessage voicemail_query_test_2600: voicemail insert error = ' + error);
1142      done();
1143    }
1144  });
1145
1146  /**
1147   * @tc.number  abnormal_voicemail_insert_test_2700
1148   * @tc.name    When the voicemail status is added, a non-existent field is passed in
1149   * @tc.desc    Function test
1150   */
1151  it('abnormal_voicemail_insert_test_2700', 0, async function (done) {
1152    console.info('---------logMessage abnormal_voicemail_insert_test_2700 is starting!---------');
1153    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
1154    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
1155    console.info('logMessage uri = ' + URI_VOICEMAIL);
1156    try {
1157      let insertValues = { 'display_name': '2700name', 'voice_statuss': '1' };
1158      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
1159      expect(voicemailId === -1).assertTrue();
1160      let condition = new dataShare.DataSharePredicates();
1161      let resultColumns = [];
1162      let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
1163      expect(resultSet.rowCount === 0).assertTrue();
1164      await voiceMailDelete('abnormal_voicemail_insert_test_2700');
1165      done();
1166    } catch (error) {
1167      done();
1168    }
1169  });
1170
1171  /**
1172   * @tc.number  abnormal_voicemail_delete_test_2800
1173   * @tc.name    When deleting the voicemail status, pass in a non-existent field
1174   * @tc.desc    Function test
1175   */
1176  it('abnormal_voicemail_delete_test_2800', 0, async function (done) {
1177    console.info('---------logMessage abnormal_voicemail_delete_test_2800 is starting!---------');
1178    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
1179    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
1180    console.info('logMessage uri = ' + URI_VOICEMAIL);
1181    try {
1182      let insertValues = { 'display_name': '2800name', 'voice_status': '1' };
1183      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
1184      expect(voicemailId > 0).assertTrue();
1185      let condition = new dataShare.DataSharePredicates();
1186      condition.equalTo('id', voicemailId.toString());
1187      let updateValues = { 'display_name': '2800name', 'voice_statuss': '0' };
1188      let updateCode = await dataShareHelper.update(voicemailUri, updateValues, condition);
1189      expect(updateCode === -1).assertTrue();
1190      let map = new Map();
1191      map.set('id', voicemailId.toString());
1192      map.set('display_name', '2800name');
1193      map.set('voice_status', '1');
1194      await voicemailQuery(map, 'abnormal_voicemail_delete_test_2800');
1195      await voiceMailDelete('abnormal_voicemail_delete_test_2800');
1196      done();
1197    } catch (error) {
1198      done();
1199    }
1200  });
1201
1202  /**
1203   * @tc.number  abnormal_voicemail_update_test_2900
1204   * @tc.name    When update the voicemail status, pass in a non-existent field
1205   * @tc.desc    Function test
1206   */
1207  it('abnormal_voicemail_update_test_2900', 0, async function (done) {
1208    console.info('---------logMessage abnormal_voicemail_update_test_2900 is starting!---------');
1209    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
1210    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
1211    console.info('logMessage uri = ' + URI_VOICEMAIL);
1212    try {
1213      let insertValues = { 'display_name': '2900name', 'voice_status': '1' };
1214      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
1215      expect(voicemailId > 0).assertTrue();
1216      let condition = new dataShare.DataSharePredicates();
1217      condition.equalTo('id', voicemailId.toString());
1218      let updateValues = { 'display_name': '2900name', 'voice_statuss': '0' };
1219      let updateCode = await dataShareHelper.update(voicemailUri, updateValues, condition);
1220      expect(updateCode === -1).assertTrue();
1221      let map = new Map();
1222      map.set('id', voicemailId.toString());
1223      map.set('display_name', '2900name');
1224      map.set('voice_status', '1');
1225      await voicemailQuery(map, 'abnormal_voicemail_update_test_2900');
1226      await voiceMailDelete('abnormal_voicemail_update_test_2900');
1227      done();
1228    } catch (error) {
1229      done();
1230    }
1231  });
1232
1233  /**
1234   * @tc.number  abnormal_voicemail_update_test_3000
1235   * @tc.name    When update the voicemail status, pass in a non-existent field
1236   * @tc.desc    Function test
1237   */
1238  it('abnormal_voicemail_update_test_3000', 0, async function (done) {
1239    console.info('---------logMessage abnormal_voicemail_update_test_3000 is starting!---------');
1240    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
1241    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
1242    console.info('logMessage uri = ' + URI_VOICEMAIL);
1243    try {
1244      let insertValues = { 'display_name': '2900name', 'voice_status': '1' };
1245      let voicemailId = await dataShareHelper.insert(voicemailUri, insertValues);
1246      expect(voicemailId > 0).assertTrue();
1247      let condition = new dataShare.DataSharePredicates();
1248      condition.equalTo('ids', voicemailId.toString());
1249      let resultColumns = [];
1250      let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
1251      expect(resultSet.rowCount === -1).assertTrue();
1252      resultSet.close();
1253      await voiceMailDelete('abnormal_voicemail_update_test_3000');
1254      done();
1255    } catch (error) {
1256      done();
1257    }
1258  });
1259
1260  /**
1261   * @tc.number   abnormal_voicemail_batchInsert_test_3100
1262   * @tc.name    Insert voicemail data in batches , pass in a non-existent field
1263   * @tc.desc    Function test
1264   */
1265  it('abnormal_voicemail_batchInsert_test_3100', 0, async function (done) {
1266    console.info('-------------logMessage abnormal_voicemail_batchInsert_test_3100 is starting!-----------');
1267    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
1268    console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
1269
1270    let insertValuesOne = { 'voice_status': '0', 'display_name': 'xiaoming' };
1271    let insertValuesTwo = { 'voice_status': '1', 'display_name': 'xiaohei' };
1272    let insertValuesThree = { 'voice_statusss': '1', 'display_name': 'xiaohong' };
1273    let insertValuesFour = { 'voice_status': '0', 'display_name': 'xiaohei' };
1274    let insertValuesFive = { 'voice_status': '0', 'display_name': 'xiaofen' };
1275    let listAddBluk = [];
1276    listAddBluk[0] = insertValuesOne;
1277    listAddBluk[1] = insertValuesTwo;
1278    listAddBluk[INDEX_TWO] = insertValuesThree;
1279    listAddBluk[INDEX_THREE] = insertValuesFour;
1280    listAddBluk[INDEX_FOUR] = insertValuesFive;
1281    try {
1282      let batchInsertCode = await dataShareHelper.batchInsert(voicemailUri, listAddBluk);
1283      console.info('logMessage abnormal_voicemail_batchInsert_test_3100: batchInsertCode = ' + batchInsertCode);
1284      expect(batchInsertCode === -1).assertTrue();
1285      let condition = new dataShare.DataSharePredicates();
1286      let resultColumns = [];
1287      let resultSet = await dataShareHelper.query(voicemailUri, resultColumns, condition);
1288      expect(resultSet.rowCount === 0).assertTrue();
1289      resultSet.close();
1290      done();
1291    } catch (error) {
1292      console.info('logMessage abnormal_voicemail_batchInsert_test_3100: batchInsert error = ' + error);
1293      done();
1294    }
1295  });
1296
1297  afterAll(async function () {
1298    let dataShareHelper = dataShare.createDataShareHelper(URI_VOICEMAIL);
1299    console.info('voicemai afterAll logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
1300    let condition = new dataShare.DataSharePredicates();
1301    condition.greaterThan('id', '0');
1302    let deleteCode = await dataShareHelper.delete(voicemailUri, condition);
1303    console.info('voicemai afterAll logMessage deleteCode = ' + deleteCode);
1304  });
1305});
1306
1307function randomNum(num) {
1308  let baseNumNine = 9;
1309  let baseNumTen = 10;
1310  let number = toString(Math.floor(Math.random() * (baseNumNine * Math.pow(baseNumTen, num))) + 1 *
1311    Math.pow(baseNumTen, num));
1312  return number;
1313}
1314