1/* 2 * Copyright (C) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License") 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' 16import data_rdb from '@ohos.data.rdb' 17import ability_featureAbility from '@ohos.ability.featureAbility' 18import data_dataSharePredicates from '@ohos.data.dataSharePredicates' 19 20const TAG = "[RDB_JSKITS_TEST]" 21const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " 22 + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)" 23const DROP_TABLE_TEST = "drop table test" 24 25const STORE_CONFIG = { 26 name: "DataShareTest.db", 27} 28var rdbStore = undefined 29var context = ability_featureAbility.getContext() 30 31describe('rdbStoreDataSharePredicatesTest', function () { 32 beforeAll(async function () { 33 console.info(TAG + 'beforeAll') 34 rdbStore = await data_rdb.getRdbStore(context, STORE_CONFIG, 1) 35 }) 36 37 beforeEach(async function () { 38 console.info(TAG + 'beforeEach') 39 await rdbStore.executeSql(CREATE_TABLE_TEST, null) 40 }) 41 42 afterEach(async function () { 43 console.info(TAG + 'afterEach') 44 await rdbStore.executeSql(DROP_TABLE_TEST, null) 45 }) 46 47 afterAll(async function () { 48 console.info(TAG + 'afterAll') 49 rdbStore = null 50 await data_rdb.deleteRdbStore(context, "DataShareTest.db") 51 }) 52 53 console.log(TAG + "*************Unit Test Begin*************") 54 55 56 /** 57 * @tc.name rdb DataShare insert test 58 * @tc.number testRdbStoreDataShareFunc0010 59 * @tc.desc rdb DataShare Func insert test 60 */ 61 it('testRdbStoreDataShareFunc0001', 0, async function (done) { 62 console.log(TAG + "************* testRdbStoreDataShareFunc0001 start *************") 63 let u8 = new Uint8Array([1, 2, 3]) 64 const valueBucket = { 65 "name": "zhangsan", 66 "age": 18, 67 "salary": 100.5, 68 "blobType": u8, 69 } 70 let insertPromise = rdbStore.insert("test", valueBucket) 71 insertPromise.then(async (ret) => { 72 expect(1).assertEqual(ret) 73 console.log(TAG + "Insert done: " + ret) 74 }).catch((err) => { 75 console.log(TAG + "Insert err: " + err) 76 expect(false).assertTrue() 77 }) 78 await insertPromise 79 console.log("insert end") 80 81 let predicates = new data_rdb.RdbPredicates("test") 82 predicates.equalTo("name", "zhangsan") 83 let resultSet = await rdbStore.query(predicates) 84 try { 85 console.log(TAG + "resultSet query done") 86 expect(true).assertEqual(resultSet.goToFirstRow()) 87 const name = resultSet.getString(resultSet.getColumnIndex("name")) 88 const age = resultSet.getLong(resultSet.getColumnIndex("age")) 89 const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) 90 const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) 91 expect("zhangsan").assertEqual(name) 92 expect(18).assertEqual(age) 93 expect(100.5).assertEqual(salary) 94 expect(1).assertEqual(blobType[0]) 95 expect(2).assertEqual(blobType[1]) 96 expect(3).assertEqual(blobType[2]) 97 } catch (err) { 98 expect(false).assertTrue() 99 } 100 resultSet.close() 101 resultSet = null 102 103 done() 104 console.log(TAG + "************* testRdbStoreDataShareFunc0001 end *************") 105 }) 106 107 108 /** 109 * @tc.name rdb DataShare update test 110 * @tc.number testRdbStoreDataShareFunc0020 111 * @tc.desc rdb DataShare update promise Func test 112 */ 113 it('testRdbStoreDataShareFunc0002', 0, async function (done) { 114 console.log(TAG + "************* testRdbStoreDataShareFunc0002 start *************") 115 let u8 = new Uint8Array([1, 2, 3]) 116 let valueBucket = { 117 "name": "zhangsan", 118 "age": 18, 119 "salary": 100.5, 120 "blobType": u8, 121 } 122 await rdbStore.insert("test", valueBucket) 123 124 u8 = new Uint8Array([4, 5, 6]) 125 valueBucket = { 126 "name": "lisi", 127 "age": 28, 128 "salary": 200.5, 129 "blobType": u8, 130 } 131 132 let predicates = new data_dataSharePredicates.DataSharePredicates() 133 predicates.equalTo("name", "zhangsan") 134 let promiseUpdate = rdbStore.update("test", valueBucket, predicates) 135 promiseUpdate.then(async (ret) => { 136 expect(1).assertEqual(ret) 137 console.log(TAG + "Update done: " + ret) 138 }).catch((err) => { 139 console.log(TAG + "Update err: " + err) 140 expect(false).assertTrue() 141 }) 142 await promiseUpdate 143 144 let rdbPredicates = await new data_rdb.RdbPredicates("test") 145 rdbPredicates.equalTo("name", "lisi") 146 let resultSet = await rdbStore.query(rdbPredicates) 147 expect(true).assertEqual(resultSet.goToFirstRow()) 148 const id = resultSet.getLong(resultSet.getColumnIndex("id")) 149 const name = resultSet.getString(resultSet.getColumnIndex("name")) 150 const age = resultSet.getLong(resultSet.getColumnIndex("age")) 151 const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) 152 const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) 153 154 expect("lisi").assertEqual(name) 155 expect(28).assertEqual(age) 156 expect(200.5).assertEqual(salary) 157 expect(4).assertEqual(blobType[0]) 158 expect(5).assertEqual(blobType[1]) 159 expect(6).assertEqual(blobType[2]) 160 161 console.log(TAG + "dataShare update: {id=" + id + ", name=" + name + ", " + 162 "age=" + age + ", salary=" + salary + ", blobType=" + blobType) 163 resultSet.close() 164 resultSet = null 165 166 done() 167 console.log(TAG + "************* testRdbStoreDelete0002 end *************") 168 }) 169 170 /** 171 * @tc.name rdb DataShare update test 172 * @tc.number testRdbStoreDataShareFunc0030 173 * @tc.desc rdb DataShare update callback Func test 174 */ 175 it('testRdbStoreDataShareFunc0003', 0, async function (done) { 176 console.log(TAG + "************* testRdbStoreDataShareFunc0003 start *************") 177 let u8 = new Uint8Array([1, 2, 3]) 178 let valueBucket = { 179 "name": "zhangsan", 180 "age": 18, 181 "salary": 100.5, 182 "blobType": u8, 183 } 184 await rdbStore.insert("test", valueBucket) 185 186 u8 = new Uint8Array([4, 5, 6]) 187 valueBucket = { 188 "name": "lisi", 189 "age": 28, 190 "salary": 200.5, 191 "blobType": u8, 192 } 193 194 let predicates = new data_dataSharePredicates.DataSharePredicates() 195 predicates.equalTo("name", "zhangsan") 196 197 await rdbStore.update("test", valueBucket, predicates, async function (err, ret) { 198 if (err) { 199 console.info("Update err: " + err) 200 expect(false).assertTrue() 201 } 202 expect(1).assertEqual(ret) 203 console.log("Update done: " + ret) 204 let rdbPredicates = await new data_rdb.RdbPredicates("test") 205 rdbPredicates.equalTo("name", "lisi") 206 let resultSet = await rdbStore.query(rdbPredicates) 207 expect(1).assertEqual(resultSet.rowCount) 208 expect(true).assertEqual(resultSet.goToFirstRow()) 209 const id = resultSet.getLong(resultSet.getColumnIndex("id")) 210 const name = resultSet.getString(resultSet.getColumnIndex("name")) 211 const age = resultSet.getLong(resultSet.getColumnIndex("age")) 212 const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) 213 const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) 214 215 expect("lisi").assertEqual(name) 216 expect(28).assertEqual(age) 217 expect(200.5).assertEqual(salary) 218 expect(4).assertEqual(blobType[0]) 219 expect(5).assertEqual(blobType[1]) 220 expect(6).assertEqual(blobType[2]) 221 console.log(TAG + "dataShare update: {id=" + id + ", name=" + name + ", " + 222 "age=" + age + ", salary=" + salary + ", blobType=" + blobType) 223 resultSet.close() 224 resultSet = null 225 }) 226 227 done() 228 console.log(TAG + "************* testRdbStoreDelete0003 end *************") 229 }) 230 231 /** 232 * @tc.name rdb DataShare query test 233 * @tc.number testRdbStoreDataShareFunc0040 234 * @tc.desc rdb DataShare query promise Func test 235 */ 236 it('testRdbStoreDataShareFunc0004', 0, async function (done) { 237 console.log(TAG + "************* testRdbStoreDataShareFunc0004 start *************") 238 let u8 = new Uint8Array([4, 5, 6]) 239 let valueBucket = { 240 "name": "zhangsan", 241 "age": 18, 242 "salary": 100.5, 243 "blobType": u8, 244 } 245 await rdbStore.insert("test", valueBucket) 246 247 let predicates = new data_dataSharePredicates.DataSharePredicates() 248 predicates.equalTo("name", "zhangsan") 249 let queryPromise = rdbStore.query("test", predicates) 250 queryPromise.then((resultSet) => { 251 console.log(TAG + "DataShare Query done: ") 252 expect(true).assertEqual(resultSet.goToFirstRow()) 253 const name = resultSet.getString(resultSet.getColumnIndex("name")) 254 const age = resultSet.getLong(resultSet.getColumnIndex("age")) 255 const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) 256 const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) 257 resultSet.close() 258 expect("zhangsan").assertEqual(name) 259 expect(18).assertEqual(age) 260 expect(100.5).assertEqual(salary) 261 expect(4).assertEqual(blobType[0]) 262 expect(5).assertEqual(blobType[1]) 263 expect(6).assertEqual(blobType[2]) 264 265 }).catch((err) => { 266 console.log(TAG + "Query err: " + err) 267 expect(false).assertTrue() 268 }) 269 await queryPromise 270 271 done() 272 console.log(TAG + "************* testRdbStoreDataShareFunc0004 end *************") 273 }) 274 275 /** 276 * @tc.name rdb DataShare query test 277 * @tc.number testRdbStoreDataShareFunc0050 278 * @tc.desc rdb DataShare query callback Func test 279 */ 280 it('testRdbStoreDataShareFunc0005', 0, async function (done) { 281 console.log(TAG + "************* testRdbStoreDataShareFunc0005 start *************") 282 let u8 = new Uint8Array([4, 5, 6]) 283 let valueBucket = { 284 "name": "zhangsan", 285 "age": 18, 286 "salary": 100.5, 287 "blobType": u8, 288 } 289 await rdbStore.insert("test", valueBucket) 290 291 let predicates = new data_dataSharePredicates.DataSharePredicates() 292 predicates.equalTo("name", "zhangsan") 293 294 await rdbStore.query("test", predicates, ["ID", "NAME", "AGE", "SALARY", "blobType"], 295 function (err, resultSet) { 296 if (err) { 297 console.info("Query err: " + err) 298 expect(false).assertTrue() 299 } 300 expect(true).assertEqual(resultSet.goToFirstRow()) 301 const name = resultSet.getString(resultSet.getColumnIndex("name")) 302 const age = resultSet.getLong(resultSet.getColumnIndex("age")) 303 const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) 304 const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) 305 resultSet.close() 306 expect("zhangsan").assertEqual(name) 307 expect(18).assertEqual(age) 308 expect(100.5).assertEqual(salary) 309 expect(4).assertEqual(blobType[0]) 310 expect(5).assertEqual(blobType[1]) 311 expect(6).assertEqual(blobType[2]) 312 }) 313 314 done() 315 console.log(TAG + "************* testRdbStoreDataShareFunc0005 end *************") 316 }) 317 318 /** 319 * @tc.name rdb DataShare delete test 320 * @tc.number testRdbStoreDataShareFunc0060 321 * @tc.desc rdb DataShare delete Func test 322 */ 323 it('testRdbStoreDataShareFunc0006', 0, async function (done) { 324 console.log(TAG + "************* testRdbStoreDataShareFunc0006 start *************") 325 let u8 = new Uint8Array([1, 2, 3]) 326 let valueBucket = { 327 "name": "zhangsan", 328 "age": 18, 329 "salary": 100.5, 330 "blobType": u8, 331 } 332 333 await rdbStore.insert("test", valueBucket) 334 let predicates = new data_dataSharePredicates.DataSharePredicates() 335 predicates.equalTo("name", "zhangsan") 336 let deletePromise = rdbStore.delete("test", predicates) 337 deletePromise.then(async (ret) => { 338 expect(1).assertEqual(ret) 339 console.log(TAG + "Delete done: " + ret) 340 }).catch((err) => { 341 console.log(TAG + "Delete err: " + err) 342 expect(false).assertTrue() 343 }) 344 await deletePromise 345 346 let rdbPredicates = await new data_rdb.RdbPredicates("test") 347 rdbPredicates.equalTo("name", "zhangsan") 348 let resultSet = await rdbStore.query(rdbPredicates) 349 expect(false).assertEqual(resultSet.goToFirstRow()) 350 resultSet.close() 351 resultSet = null 352 353 done() 354 console.log(TAG + "************* testRdbStoreDataShareFunc0006 end *************") 355 }) 356 357 /** 358 * @tc.name rdb DataShare delete test 359 * @tc.number testRdbStoreDataShareFunc0070 360 * @tc.desc rdb DataShare delete Func test 361 */ 362 it('testRdbStoreDataShareFunc0007', 0, async function (done) { 363 console.log(TAG + "************* testRdbStoreDataShareFunc0007 start *************") 364 let u8 = new Uint8Array([1, 2, 3]) 365 let valueBucket = { 366 "name": "zhangsan", 367 "age": 18, 368 "salary": 100.5, 369 "blobType": u8, 370 } 371 await rdbStore.insert("test", valueBucket) 372 373 let predicates = new data_dataSharePredicates.DataSharePredicates() 374 predicates.equalTo("name", "zhangsan") 375 376 await rdbStore.delete("test", predicates, async function (err, ret) { 377 if (err) { 378 console.info("Delete err: " + err) 379 expect(false).assertTrue() 380 } 381 expect(1).assertEqual(ret) 382 console.log("Delete done: " + ret) 383 let rdbPredicates = await new data_rdb.RdbPredicates("test") 384 rdbPredicates.equalTo("name", "zhangsan") 385 let resultSet = await rdbStore.query(rdbPredicates) 386 expect(false).assertEqual(resultSet.goToFirstRow()) 387 resultSet.close() 388 resultSet = null 389 }) 390 391 done() 392 console.log(TAG + "************* testRdbStoreDataShareFunc0007 end *************") 393 }) 394 console.log(TAG + "*************Unit Test End*************") 395})