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'; 18 19const URI_CONTACTS = 'datashare:///com.ohos.contactsdataability'; 20const groupUri = 'datashare:///com.ohos.contactsdataability/contacts/groups'; 21import common from './common.js'; 22 23describe('GroupsTest', function () { 24 console.info('logMessage GroupsTest start! '); 25 26 let arrayTwo = 2; 27 28 async function groupsQuery(map, tag) { 29 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 30 console.info(tag + ': groupsQuery start ! dataShareHelper = ' + dataShareHelper); 31 let resultColumns = []; 32 let condition = new dataShare.DataSharePredicates(); 33 condition.equalTo('id', map.get('id')); 34 try { 35 let resultSet = await dataShareHelper.query(groupUri, resultColumns, condition); 36 if (resultSet.rowCount > 0 && resultSet.goToFirstRow()) { 37 do { 38 for (let [key, value] of map) { 39 let dbresult = resultSet.getString(resultSet.getColumnIndex(key)); 40 console.info( 41 tag + ': logMessage groupsQuery key =' + key + 'dbresult :' + dbresult + ' value : ' + value 42 ); 43 expect(value === dbresult).assertTrue(); 44 } 45 } while (resultSet.goToNextRow()); 46 } 47 resultSet.close(); 48 } catch (error) { 49 console.info(tag + ': logMessage groupsQuery: error = ' + error); 50 } 51 } 52 53 async function queryIdForDelete(map, tag) { 54 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 55 console.info(tag + ': queryIdForDelete start ! dataShareHelper = ' + dataShareHelper); 56 let resultColumns = common.getCallLogResultColumns(); 57 let condition = new dataShare.DataSharePredicates(); 58 condition.equalTo('id', map.get('id')); 59 try { 60 let resultSet = await dataShareHelper.query(groupUri, resultColumns, condition); 61 expect(resultSet.goToFirstRow() === false).assertTrue(); 62 console.info(tag + ' :logMessage queryIdForDelete: goToFirstRow ' + resultSet.goToFirstRow()); 63 resultSet.close(); 64 } catch (error) { 65 console.info(tag + ' :logMessage queryIdForDelete: error = ' + error); 66 } 67 } 68 69 async function deleteAll(uri, tag) { 70 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 71 let condition = new dataShare.DataSharePredicates(); 72 condition.greaterThan('id', '0'); 73 let deleteCode = await dataShareHelper.delete(uri, condition); 74 console.info(tag + ': deleteAll deleteCode = ' + deleteCode); 75 expect(deleteCode === 0).assertTrue(); 76 } 77 78 /** 79 * @tc.number group_insert_test_100 80 * @tc.name Insert group 81 * @tc.desc Function test 82 */ 83 it('group_insert_test_100', 0, async function (done) { 84 console.info('---------logMessage group_insert_test_100 is starting!----------'); 85 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 86 console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper); 87 try { 88 let groupId = await dataShareHelper.insert(groupUri, common.getProfileGroup()); 89 console.info('logMessage group_insert_test_100: groupId = ' + groupId); 90 expect(groupId > 0).assertTrue(); 91 let map = common.getProfileGroupMap(); 92 map.set('id', groupId.toString()); 93 await groupsQuery(map, 'group_insert_test_100'); 94 await deleteAll(groupUri, 'group_insert_test_100'); 95 done(); 96 } catch (error) { 97 console.info('logMessage group_insert_test_100: group insert error = ' + error); 98 done(); 99 } 100 }); 101 102 /** 103 * @tc.number group_update_test_500 104 * @tc.name Update group 105 * @tc.desc Function test 106 */ 107 it('group_update_test_500', 0, async function (done) { 108 console.info('---------logMessage group_update_test_500 is starting!----------'); 109 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 110 console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper); 111 try { 112 let groupId = await dataShareHelper.insert(groupUri, common.getProfileGroup()); 113 console.info('logMessage group_update_test_500: groupId = ' + groupId); 114 expect(groupId > 0).assertTrue(); 115 await groupUpdate(); 116 await deleteAll(groupUri, 'group_update_test_500'); 117 done(); 118 } catch (error) { 119 console.info('logMessage group_update_test_500: group insert error = ' + error); 120 done(); 121 } 122 123 async function groupUpdate() { 124 let condition = new dataShare.DataSharePredicates(); 125 condition.equalTo('id', groupId.toString()); 126 try { 127 let updateCode = await dataShareHelper.update(groupUri, common.getProfileUpdateGroup(), condition); 128 console.info('logMessage group_update_test_500: updateCode = ' + updateCode); 129 expect(updateCode === 0).assertTrue(); 130 let map = common.getProfileUpdateGroupMap(); 131 map.set('id', groupId.toStirng()); 132 await groupsQuery(map, 'group_update_test_500'); 133 } catch (error) { 134 console.info('logMessage group_update_test_500: update error = ' + error); 135 done(); 136 } 137 } 138 }); 139 140 /** 141 * @tc.number group_delete_test_200 142 * @tc.name Delete group 143 * @tc.desc Function test 144 */ 145 it('group_delete_test_200', 0, async function (done) { 146 console.info('---------logMessage group_delete_test_200 is starting!----------'); 147 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 148 console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper); 149 try { 150 let groupId = await dataShareHelper.insert(groupUri, common.getProfileGroup()); 151 console.info('logMessage group_delete_test_200: groupId = ' + groupId); 152 expect(groupId > 0).assertTrue(); 153 await groupDelete(); 154 done(); 155 } catch (error) { 156 console.info('logMessage group_delete_test_200: group insert error = ' + error); 157 done(); 158 } 159 async function groupDelete() { 160 let condition = new dataShare.DataSharePredicates(); 161 condition.equalTo('id', groupId.toString()); 162 try { 163 let deleteCode = await dataShareHelper.delete(groupUri, condition); 164 console.info('logMessage group_delete_test_200 : deleteCode = ' + deleteCode); 165 expect(deleteCode === 0).assertTrue(); 166 let map = new Map(); 167 map.set('id', groupId.toString()); 168 await queryIdForDelete(map, 'group_delete_test_200'); 169 } catch (error) { 170 console.info('logMessage group_delete_test_200 : delete error = ' + error); 171 done(); 172 } 173 } 174 }); 175 176 /** 177 * @tc.number group_query_test_300 178 * @tc.name Query a group 179 * @tc.desc Function test 180 */ 181 it('group_query_test_300', 0, async function (done) { 182 console.info('------------logMessage group_query_test_300 is starting!-----------'); 183 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 184 console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper); 185 try { 186 let groupId = await dataShareHelper.insert(groupUri, common.getProfileGroup()); 187 console.info('logMessage group_query_test_300: groupId = ' + groupId); 188 expect(groupId > 0).assertTrue(); 189 let map = common.getProfileGroupMap(); 190 map.set('id', groupId.toString()); 191 await groupsQuery(map, 'logMessage group_query_test_300'); 192 await deleteAll(groupUri, 'group_query_test_300'); 193 done(); 194 } catch (error) { 195 console.info('logMessage group_query_test_300: group insert error = ' + error); 196 done(); 197 } 198 }); 199 200 /** 201 * @tc.number group_query_test_400 202 * @tc.name Query all groups 203 * @tc.desc Function test 204 */ 205 it('group_query_test_400', 0, async function (done) { 206 console.info('------------logMessage group_query_test_400 is starting!-----------'); 207 console.info('---------logMessage getDbHelper start!----------'); 208 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 209 console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper); 210 console.info('logMessage uri = ' + URI_CONTACTS); 211 let groupUri = 'datashare:///com.ohos.contactsdataability/contacts/groups'; 212 213 let insertValues = { 'group_name': 'ManagerSecondGroup' }; 214 try { 215 let groupId = await dataShareHelper.insert(groupUri, insertValues); 216 console.info('logMessage group_query_test_400: groupId = ' + groupId); 217 expect(groupId > 0).assertTrue(); 218 await groupQuery(); 219 await deleteAll(groupUri, 'group_query_test_400'); 220 done(); 221 } catch (error) { 222 console.info('logMessage group_query_test_400: group insert error = ' + error); 223 done(); 224 } 225 226 async function groupQuery() { 227 let resultColumns = ['id', 'group_name']; 228 let condition = new dataShare.DataSharePredicates(); 229 condition.greaterThan('id', '0'); 230 try { 231 let resultSet = await dataShareHelper.query(groupUri, resultColumns, condition); 232 console.info('logMessage group_query_test_400: resultSet.rowCount = ' + resultSet.rowCount); 233 expect(resultSet.rowCount === 1).assertTrue(); 234 resultSet.close(); 235 } catch (error) { 236 console.info('group_query_test_400 resultSet query error = ' + error); 237 done(); 238 } 239 } 240 }); 241 242 /** 243 * @tc.number abnormal_group_insert_test_600 244 * @tc.name abnormal insert 245 * @tc.desc Function test 246 */ 247 it('abnormal_group_insert_test_600', 0, async function (done) { 248 console.info('---------logMessage abnormal_group_insert_test_600 is starting!----------'); 249 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 250 console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper); 251 const errorUri = 'datashare:///com.ohos.contactsdataability/contacts/groupssss'; 252 try { 253 let groupId = await dataShareHelper.insert(errorUri, common.getProfileGroup()); 254 console.info('logMessage abnormal_group_insert_test_600: groupId = ' + groupId); 255 expect(groupId === -1).assertTrue(); 256 done(); 257 } catch (error) { 258 console.info('logMessage abnormal_group_insert_test_600: group insert error = ' + error); 259 done(); 260 } 261 }); 262 263 /** 264 * @tc.number abnormal_group_update_test_700 265 * @tc.name abnormal update 266 * @tc.desc Function test 267 */ 268 it('abnormal_group_update_test_700', 0, async function (done) { 269 console.info('---------logMessage abnormal_group_update_test_700 is starting!----------'); 270 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 271 console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper); 272 try { 273 let groupId = await dataShareHelper.insert(groupUri, common.getProfileGroup()); 274 console.info('logMessage abnormal_group_update_test_700: groupId = ' + groupId); 275 expect(groupId > 0).assertTrue(); 276 await groupUpdate(); 277 await deleteAll(groupUri, 'abnormal_group_update_test_700'); 278 done(); 279 } catch (error) { 280 console.info('logMessage abnormal_group_update_test_700: group insert error = ' + error); 281 done(); 282 } 283 284 async function groupUpdate() { 285 let condition = new dataShare.DataSharePredicates(); 286 condition.equalTo('id', groupId.toString()); 287 let updateValue = { 'group_notesss': '6666' }; 288 try { 289 let updateCode = await dataShareHelper.update(groupUri, updateValue, condition); 290 console.info('logMessage abnormal_group_update_test_700: updateCode = ' + updateCode); 291 expect(updateCode === -1).assertTrue(); 292 let map = common.getProfileUpdateGroupMap(); 293 map.set('id', groupId.toStirng()); 294 await groupsQuery(map, 'abnormal_group_update_test_700'); 295 } catch (error) { 296 console.info('logMessage abnormal_group_update_test_700: update error = ' + error); 297 done(); 298 } 299 } 300 }); 301 302 /** 303 * @tc.number abnormal_group_delete_test_800 304 * @tc.name abnormal delete 305 * @tc.desc Function test 306 */ 307 it('abnormal_group_delete_test_800', 0, async function (done) { 308 console.info('---------logMessage abnormal_group_delete_test_800 is starting!----------'); 309 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 310 console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper); 311 try { 312 let groupId = await dataShareHelper.insert(groupUri, common.getProfileGroup()); 313 console.info('logMessage abnormal_group_delete_test_800: groupId = ' + groupId); 314 expect(groupId > 0).assertTrue(); 315 await groupDelete(); 316 await deleteAll(groupUri, 'abnormal_group_delete_test_800'); 317 done(); 318 } catch (error) { 319 console.info('logMessage abnormal_group_delete_test_800: group insert error = ' + error); 320 done(); 321 } 322 async function groupDelete() { 323 let condition = new dataShare.DataSharePredicates(); 324 condition.equalTo('idss', groupId.toString()); 325 try { 326 let deleteCode = await dataShareHelper.delete(groupUri, condition); 327 console.info('logMessage abnormal_group_delete_test_800 : deleteCode = ' + deleteCode); 328 expect(deleteCode === -1).assertTrue(); 329 let map = common.getProfileUpdateGroupMap(); 330 map.set('id', groupId.toStirng()); 331 await groupsQuery(map, 'abnormal_group_delete_test_800'); 332 } catch (error) { 333 console.info('logMessage abnormal_group_delete_test_800 : delete error = ' + error); 334 done(); 335 } 336 } 337 }); 338 339 /** 340 * @tc.number abnormal_group_query_test_900 341 * @tc.name abnormal query 342 * @tc.desc Function test 343 */ 344 it('abnormal_group_query_test_900', 0, async function (done) { 345 console.info('------------logMessage abnormal_group_query_test_900 is starting!-----------'); 346 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 347 console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper); 348 349 let insertValues = { 'group_name': 'PersonnelDepartment' }; 350 try { 351 let groupId = await dataShareHelper.insert(groupUri, insertValues); 352 console.info('logMessage abnormal_group_query_test_900: groupId = ' + groupId); 353 expect(groupId > 0).assertTrue(); 354 await groupQuery(dataShareHelper); 355 await deleteAll(groupUri, 'abnormal_group_query_test_900'); 356 done(); 357 } catch (error) { 358 console.info('logMessage abnormal_group_query_test_900: group insert error = ' + error); 359 done(); 360 } 361 362 async function groupQuery(dataShareHelper) { 363 let resultColumns = ['id', 'group_namesss']; 364 let condition = new dataShare.DataSharePredicates(); 365 condition.equalTo('id', groupId.toString()); 366 try { 367 let resultSet = await dataShareHelper.query(groupUri, resultColumns, condition); 368 console.info('abnormal_group_query_test_900 resultSet.goToFirstRow() = ' + resultSet.goToFirstRow()); 369 expect(resultSet.goToFirstRow() === false).assertTrue(); 370 resultSet.close(); 371 } catch (error) { 372 console.info('abnormal_group_query_test_900 query error ' + error); 373 done(); 374 } 375 } 376 }); 377 378 /** 379 * @tc.number group_insert_test_1000 380 * @tc.name Adding multiple groups 381 * @tc.desc Function test 382 */ 383 it('group_insert_test_1000', 0, async function (done) { 384 console.info('------------logMessage group_insert_test_1000 is starting!-----------'); 385 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 386 console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper); 387 388 let insertValuesOne = { 'group_name': 'test1000' }; 389 let insertValuesTwo = { 'group_name': 'test1000' }; 390 let insertValuesThree = { 'group_name': 'test1000' }; 391 let array = []; 392 array[0] = insertValuesOne; 393 array[1] = insertValuesTwo; 394 array[arrayTwo] = insertValuesThree; 395 try { 396 let code = await dataShareHelper.batchInsert(groupUri, array); 397 console.info('logMessage group_insert_test_1000: batchInsert code = ' + code); 398 expect(code === 0).assertTrue(); 399 await groupQuery(dataShareHelper); 400 await deleteAll(groupUri, 'group_insert_test_1000'); 401 done(); 402 } catch (error) { 403 console.info('logMessage group_insert_test_1000: group insert error = ' + error); 404 done(); 405 } 406 407 async function groupQuery(dataShareHelper) { 408 let groupSize = 3; 409 let resultColumns = ['id', 'group_name']; 410 let condition = new dataShare.DataSharePredicates(); 411 condition.equalTo('group_name', 'test1000'); 412 try { 413 let resultSet = await dataShareHelper.query(groupUri, resultColumns, condition); 414 console.info('group_insert_test_1000 resultSet.rowCount = ' + resultSet.rowCount); 415 expect(resultSet.rowCount === groupSize).assertTrue(); 416 resultSet.close(); 417 } catch (error) { 418 console.info('group_insert_test_1000 query error ' + error); 419 done(); 420 } 421 } 422 }); 423 424 /** 425 * @tc.number group_delete_test_1100 426 * @tc.name delete multiple groups 427 * @tc.desc Function test 428 */ 429 it('group_delete_test_1100', 0, async function (done) { 430 console.info('------------logMessage group_delete_test_1100 is starting!-----------'); 431 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 432 console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper); 433 434 let insertValuesOne = { 'group_name': 'test1100' }; 435 let insertValuesTwo = { 'group_name': 'test1100' }; 436 let insertValuesThree = { 'group_name': 'test1100' }; 437 let array = []; 438 array[0] = insertValuesOne; 439 array[1] = insertValuesTwo; 440 array[arrayTwo] = insertValuesThree; 441 try { 442 let code = await dataShareHelper.batchInsert(groupUri, array); 443 console.info('logMessage group_delete_test_1100: batchInsert code = ' + code); 444 expect(code === 0).assertTrue(); 445 await deleteAll(groupUri, 'group_delete_test_1100'); 446 await groupQuery(dataShareHelper); 447 done(); 448 } catch (error) { 449 console.info('logMessage group_delete_test_1100: group insert error = ' + error); 450 done(); 451 } 452 453 async function groupQuery(dataShareHelper) { 454 let groupSize = 0; 455 let resultColumns = ['id', 'group_name']; 456 let condition = new dataShare.DataSharePredicates(); 457 condition.equalTo('group_name', 'test1100'); 458 try { 459 let resultSet = await dataShareHelper.query(groupUri, resultColumns, condition); 460 console.info('group_delete_test_1100 resultSet.rowCount = ' + resultSet.rowCount); 461 expect(resultSet.rowCount === groupSize).assertTrue(); 462 resultSet.close(); 463 } catch (error) { 464 console.info('group_delete_test_1100 query error ' + error); 465 done(); 466 } 467 } 468 }); 469 470 /** 471 * @tc.number group_update_test_1200 472 * @tc.name update multiple groups 473 * @tc.desc Function test 474 */ 475 it('group_update_test_1200', 0, async function (done) { 476 console.info('------------logMessage group_update_test_1200 is starting!-----------'); 477 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 478 console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper); 479 480 let insertValuesOne = { 'group_name': 'test1200' }; 481 let insertValuesTwo = { 'group_name': 'test1200' }; 482 let insertValuesThree = { 'group_name': 'test1200' }; 483 let array = []; 484 array[0] = insertValuesOne; 485 array[1] = insertValuesTwo; 486 array[arrayTwo] = insertValuesThree; 487 try { 488 let code = await dataShareHelper.batchInsert(groupUri, array); 489 console.info('logMessage group_update_test_1200: batchInsert code = ' + code); 490 expect(code === 0).assertTrue(); 491 await groupUpdateThree(dataShareHelper); 492 await groupQuery(dataShareHelper); 493 await deleteAll(groupUri, 'group_update_test_1200'); 494 done(); 495 } catch (error) { 496 console.info('logMessage group_update_test_1200: group insert error = ' + error); 497 done(); 498 } 499 500 async function groupQuery(dataShareHelper) { 501 let groupSize = 3; 502 let resultColumns = ['id', 'group_name']; 503 let condition = new dataShare.DataSharePredicates(); 504 condition.equalTo('group_name', 'test120000'); 505 try { 506 let resultSet = await dataShareHelper.query(groupUri, resultColumns, condition); 507 console.info('logMessage group_update_test_1200: resultSet.rowCount = ' + resultSet.rowCount); 508 expect(resultSet.rowCount === groupSize).assertTrue(); 509 resultSet.close(); 510 } catch (error) { 511 console.info('group_update_test_1200 query error ' + error); 512 done(); 513 } 514 } 515 }); 516 517 async function groupUpdateThree(dataShareHelper) { 518 let condition = new dataShare.DataSharePredicates(); 519 condition.equalTo('group_name', 'test1200'); 520 let updateValue = { 'group_name': 'test120000' }; 521 try { 522 let updateCode = await dataShareHelper.update(groupUri, updateValue, condition); 523 console.info('logMessage group_update_test_1200: updateCode = ' + updateCode); 524 expect(updateCode === 0).assertTrue(); 525 } catch (error) { 526 console.info('logMessage group_update_test_1200: update error = ' + error); 527 } 528 } 529 530 afterAll(async function (done) { 531 let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS); 532 let condition = new dataShare.DataSharePredicates(); 533 condition.notEqualTo('id', '0'); 534 try { 535 let deleteCode = await dataShareHelper.delete(groupUri, condition); 536 console.info('logMessage group_deleted : deleteCode = ' + deleteCode); 537 done(); 538 } catch (error) { 539 console.info('logMessage group_deleted: group insert error = ' + error); 540 done(); 541 } 542 }); 543}); 544