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 = null 101 102 done() 103 console.log(TAG + "************* testRdbStoreDataShareFunc0001 end *************") 104 }) 105 106 107 /** 108 * @tc.name rdb DataShare update test 109 * @tc.number testRdbStoreDataShareFunc0020 110 * @tc.desc rdb DataShare update promise Func test 111 */ 112 it('testRdbStoreDataShareFunc0002', 0, async function (done) { 113 console.log(TAG + "************* testRdbStoreDataShareFunc0002 start *************") 114 let u8 = new Uint8Array([1, 2, 3]) 115 let valueBucket = { 116 "name": "zhangsan", 117 "age": 18, 118 "salary": 100.5, 119 "blobType": u8, 120 } 121 await rdbStore.insert("test", valueBucket) 122 123 u8 = new Uint8Array([4, 5, 6]) 124 valueBucket = { 125 "name": "lisi", 126 "age": 28, 127 "salary": 200.5, 128 "blobType": u8, 129 } 130 131 let predicates = new data_dataSharePredicates.DataSharePredicates() 132 predicates.equalTo("name", "zhangsan") 133 let promiseUpdate = rdbStore.update("test", valueBucket, predicates) 134 promiseUpdate.then(async (ret) => { 135 expect(1).assertEqual(ret) 136 console.log(TAG + "Update done: " + ret) 137 }).catch((err) => { 138 console.log(TAG + "Update err: " + err) 139 expect(false).assertTrue() 140 }) 141 await promiseUpdate 142 143 let rdbPredicates = await new data_rdb.RdbPredicates("test") 144 rdbPredicates.equalTo("name", "lisi") 145 let resultSet = await rdbStore.query(rdbPredicates) 146 expect(true).assertEqual(resultSet.goToFirstRow()) 147 const id = resultSet.getLong(resultSet.getColumnIndex("id")) 148 const name = resultSet.getString(resultSet.getColumnIndex("name")) 149 const age = resultSet.getLong(resultSet.getColumnIndex("age")) 150 const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) 151 const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) 152 153 expect("lisi").assertEqual(name) 154 expect(28).assertEqual(age) 155 expect(200.5).assertEqual(salary) 156 expect(4).assertEqual(blobType[0]) 157 expect(5).assertEqual(blobType[1]) 158 expect(6).assertEqual(blobType[2]) 159 160 console.log(TAG + "dataShare update: {id=" + id + ", name=" + name + ", " + 161 "age=" + age + ", salary=" + salary + ", blobType=" + blobType) 162 resultSet = null 163 164 done() 165 console.log(TAG + "************* testRdbStoreDelete0002 end *************") 166 }) 167 168 /** 169 * @tc.name rdb DataShare update test 170 * @tc.number testRdbStoreDataShareFunc0030 171 * @tc.desc rdb DataShare update callback Func test 172 */ 173 it('testRdbStoreDataShareFunc0003', 0, async function (done) { 174 console.log(TAG + "************* testRdbStoreDataShareFunc0003 start *************") 175 let u8 = new Uint8Array([1, 2, 3]) 176 let valueBucket = { 177 "name": "zhangsan", 178 "age": 18, 179 "salary": 100.5, 180 "blobType": u8, 181 } 182 await rdbStore.insert("test", valueBucket) 183 184 u8 = new Uint8Array([4, 5, 6]) 185 valueBucket = { 186 "name": "lisi", 187 "age": 28, 188 "salary": 200.5, 189 "blobType": u8, 190 } 191 192 let predicates = new data_dataSharePredicates.DataSharePredicates() 193 predicates.equalTo("name", "zhangsan") 194 195 await rdbStore.update("test", valueBucket, predicates, async function (err, ret) { 196 if (err) { 197 console.info("Update err: " + err) 198 expect(false).assertTrue() 199 } 200 expect(1).assertEqual(ret) 201 console.log("Update done: " + ret) 202 let rdbPredicates = await new data_rdb.RdbPredicates("test") 203 rdbPredicates.equalTo("name", "lisi") 204 let resultSet = await rdbStore.query(rdbPredicates) 205 expect(1).assertEqual(resultSet.rowCount) 206 expect(true).assertEqual(resultSet.goToFirstRow()) 207 const id = resultSet.getLong(resultSet.getColumnIndex("id")) 208 const name = resultSet.getString(resultSet.getColumnIndex("name")) 209 const age = resultSet.getLong(resultSet.getColumnIndex("age")) 210 const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) 211 const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) 212 213 expect("lisi").assertEqual(name) 214 expect(28).assertEqual(age) 215 expect(200.5).assertEqual(salary) 216 expect(4).assertEqual(blobType[0]) 217 expect(5).assertEqual(blobType[1]) 218 expect(6).assertEqual(blobType[2]) 219 console.log(TAG + "dataShare update: {id=" + id + ", name=" + name + ", " + 220 "age=" + age + ", salary=" + salary + ", blobType=" + blobType) 221 resultSet = null 222 }) 223 224 done() 225 console.log(TAG + "************* testRdbStoreDelete0003 end *************") 226 }) 227 228 /** 229 * @tc.name rdb DataShare query test 230 * @tc.number testRdbStoreDataShareFunc0040 231 * @tc.desc rdb DataShare query promise Func test 232 */ 233 it('testRdbStoreDataShareFunc0004', 0, async function (done) { 234 console.log(TAG + "************* testRdbStoreDataShareFunc0004 start *************") 235 let u8 = new Uint8Array([4, 5, 6]) 236 let valueBucket = { 237 "name": "zhangsan", 238 "age": 18, 239 "salary": 100.5, 240 "blobType": u8, 241 } 242 await rdbStore.insert("test", valueBucket) 243 244 let predicates = new data_dataSharePredicates.DataSharePredicates() 245 predicates.equalTo("name", "zhangsan") 246 let queryPromise = rdbStore.query("test", predicates) 247 queryPromise.then((resultSet) => { 248 console.log(TAG + "DataShare Query done: ") 249 expect(true).assertEqual(resultSet.goToFirstRow()) 250 const name = resultSet.getString(resultSet.getColumnIndex("name")) 251 const age = resultSet.getLong(resultSet.getColumnIndex("age")) 252 const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) 253 const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) 254 255 expect("zhangsan").assertEqual(name) 256 expect(18).assertEqual(age) 257 expect(100.5).assertEqual(salary) 258 expect(4).assertEqual(blobType[0]) 259 expect(5).assertEqual(blobType[1]) 260 expect(6).assertEqual(blobType[2]) 261 262 }).catch((err) => { 263 console.log(TAG + "Query err: " + err) 264 expect(false).assertTrue() 265 }) 266 await queryPromise 267 268 done() 269 console.log(TAG + "************* testRdbStoreDataShareFunc0004 end *************") 270 }) 271 272 /** 273 * @tc.name rdb DataShare query test 274 * @tc.number testRdbStoreDataShareFunc0050 275 * @tc.desc rdb DataShare query callback Func test 276 */ 277 it('testRdbStoreDataShareFunc0005', 0, async function (done) { 278 console.log(TAG + "************* testRdbStoreDataShareFunc0005 start *************") 279 let u8 = new Uint8Array([4, 5, 6]) 280 let valueBucket = { 281 "name": "zhangsan", 282 "age": 18, 283 "salary": 100.5, 284 "blobType": u8, 285 } 286 await rdbStore.insert("test", valueBucket) 287 288 let predicates = new data_dataSharePredicates.DataSharePredicates() 289 predicates.equalTo("name", "zhangsan") 290 291 await rdbStore.query("test", predicates, ["ID", "NAME", "AGE", "SALARY", "blobType"], 292 function (err, resultSet) { 293 if (err) { 294 console.info("Query err: " + err) 295 expect(false).assertTrue() 296 } 297 expect(true).assertEqual(resultSet.goToFirstRow()) 298 const name = resultSet.getString(resultSet.getColumnIndex("name")) 299 const age = resultSet.getLong(resultSet.getColumnIndex("age")) 300 const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) 301 const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) 302 303 expect("zhangsan").assertEqual(name) 304 expect(18).assertEqual(age) 305 expect(100.5).assertEqual(salary) 306 expect(4).assertEqual(blobType[0]) 307 expect(5).assertEqual(blobType[1]) 308 expect(6).assertEqual(blobType[2]) 309 }) 310 311 done() 312 console.log(TAG + "************* testRdbStoreDataShareFunc0005 end *************") 313 }) 314 315 /** 316 * @tc.name rdb DataShare delete test 317 * @tc.number testRdbStoreDataShareFunc0060 318 * @tc.desc rdb DataShare delete Func test 319 */ 320 it('testRdbStoreDataShareFunc0006', 0, async function (done) { 321 console.log(TAG + "************* testRdbStoreDataShareFunc0006 start *************") 322 let u8 = new Uint8Array([1, 2, 3]) 323 let valueBucket = { 324 "name": "zhangsan", 325 "age": 18, 326 "salary": 100.5, 327 "blobType": u8, 328 } 329 330 await rdbStore.insert("test", valueBucket) 331 let predicates = new data_dataSharePredicates.DataSharePredicates() 332 predicates.equalTo("name", "zhangsan") 333 let deletePromise = rdbStore.delete("test", predicates) 334 deletePromise.then(async (ret) => { 335 expect(1).assertEqual(ret) 336 console.log(TAG + "Delete done: " + ret) 337 }).catch((err) => { 338 console.log(TAG + "Delete err: " + err) 339 expect(false).assertTrue() 340 }) 341 await deletePromise 342 343 let rdbPredicates = await new data_rdb.RdbPredicates("test") 344 rdbPredicates.equalTo("name", "zhangsan") 345 let resultSet = await rdbStore.query(rdbPredicates) 346 expect(false).assertEqual(resultSet.goToFirstRow()) 347 resultSet = null 348 349 done() 350 console.log(TAG + "************* testRdbStoreDataShareFunc0006 end *************") 351 }) 352 353 /** 354 * @tc.name rdb DataShare delete test 355 * @tc.number testRdbStoreDataShareFunc0070 356 * @tc.desc rdb DataShare delete Func test 357 */ 358 it('testRdbStoreDataShareFunc0007', 0, async function (done) { 359 console.log(TAG + "************* testRdbStoreDataShareFunc0007 start *************") 360 let u8 = new Uint8Array([1, 2, 3]) 361 let valueBucket = { 362 "name": "zhangsan", 363 "age": 18, 364 "salary": 100.5, 365 "blobType": u8, 366 } 367 await rdbStore.insert("test", valueBucket) 368 369 let predicates = new data_dataSharePredicates.DataSharePredicates() 370 predicates.equalTo("name", "zhangsan") 371 372 await rdbStore.delete("test", predicates, async function (err, ret) { 373 if (err) { 374 console.info("Delete err: " + err) 375 expect(false).assertTrue() 376 } 377 expect(1).assertEqual(ret) 378 console.log("Delete done: " + ret) 379 let rdbPredicates = await new data_rdb.RdbPredicates("test") 380 rdbPredicates.equalTo("name", "zhangsan") 381 let resultSet = await rdbStore.query(rdbPredicates) 382 expect(false).assertEqual(resultSet.goToFirstRow()) 383 resultSet = null 384 }) 385 386 done() 387 console.log(TAG + "************* testRdbStoreDataShareFunc0007 end *************") 388 }) 389 console.log(TAG + "*************Unit Test End*************") 390})