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