1/* 2 * Copyright (C) 2021 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 dataRdb from '@ohos.data.rdb'; 17 18const TAG = "[RDB_JSKITS_TEST]" 19const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + 20 "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; 21 22const STORE_CONFIG = { 23 name: "Delete.db", 24} 25var rdbStore = undefined; 26 27describe('rdbStoreDeleteTest', function () { 28 beforeAll(function () { 29 console.info(TAG + 'beforeAll') 30 }) 31 32 beforeEach(async function () { 33 console.info(TAG + 'beforeEach') 34 rdbStore = await dataRdb.getRdbStore(STORE_CONFIG, 1); 35 await rdbStore.executeSql(CREATE_TABLE_TEST, null); 36 }) 37 38 afterEach(async function () { 39 console.info(TAG + 'afterEach') 40 rdbStore = null 41 await dataRdb.deleteRdbStore("Delete.db"); 42 }) 43 44 afterAll(async function () { 45 console.info(TAG + 'afterAll') 46 }) 47 48 console.log(TAG + "*************Unit Test Begin*************"); 49 /** 50 * @tc.name rdb delete test 51 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0010 52 * @tc.desc rdb delete test 53 */ 54 it('testRdbStoreDelete0001', 0, async function (done) { 55 console.log(TAG + "************* testRdbStoreDelete0001 start *************"); 56 var u8 = new Uint8Array([1, 2, 3]) 57 { 58 const valueBucket = { 59 "name": "zhangsan", 60 "age": 18, 61 "salary": 100.5, 62 "blobType": u8, 63 } 64 await rdbStore.insert("test", valueBucket) 65 } 66 { 67 const valueBucket = { 68 "name": "lisi", 69 "age": 28, 70 "salary": 100.5, 71 "blobType": u8, 72 } 73 await rdbStore.insert("test", valueBucket) 74 } 75 { 76 const valueBucket = { 77 "name": "lisi", 78 "age": 38, 79 "salary": 100.5, 80 "blobType": u8, 81 } 82 await rdbStore.insert("test", valueBucket) 83 } 84 { 85 let predicates = await new dataRdb.RdbPredicates("test") 86 let deletePromise = rdbStore.delete(predicates) 87 deletePromise.then(async (ret) => { 88 expect(3).assertEqual(ret) 89 console.log(TAG + "Delete done: " + ret) 90 }).catch((err) => { 91 expect(null).assertFail() 92 }) 93 await deletePromise 94 } 95 done() 96 console.log(TAG + "************* testRdbStoreDelete0001 end *************"); 97 }) 98 99 /** 100 * @tc.name rdb delete test 101 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0020 102 * @tc.desc rdb delete test 103 */ 104 it('testRdbStoreDelete0002', 0, async function (done) { 105 console.log(TAG + "************* testRdbStoreDelete0002 start *************"); 106 var u8 = new Uint8Array([1, 2, 3]) 107 { 108 const valueBucket = { 109 "name": "zhangsan", 110 "age": 18, 111 "salary": 100.5, 112 "blobType": u8, 113 } 114 await rdbStore.insert("test", valueBucket) 115 } 116 { 117 const valueBucket = { 118 "name": "lisi", 119 "age": 28, 120 "salary": 100.5, 121 "blobType": u8, 122 } 123 await rdbStore.insert("test", valueBucket) 124 } 125 { 126 const valueBucket = { 127 "name": "lisi", 128 "age": 38, 129 "salary": 100.5, 130 "blobType": u8, 131 } 132 await rdbStore.insert("test", valueBucket) 133 } 134 { 135 let predicates = await new dataRdb.RdbPredicates("test") 136 predicates.equalTo("name", "zhangsan") 137 let deletePromise = rdbStore.delete(predicates) 138 deletePromise.then(async (ret) => { 139 await expect(1).assertEqual(ret) 140 await console.log(TAG + "Delete done: " + ret) 141 }).catch((err) => { 142 expect(null).assertFail() 143 }) 144 await deletePromise 145 } 146 done() 147 console.log(TAG + "************* testRdbStoreDelete0002 end *************"); 148 }) 149 150 /** 151 * @tc.name rdb delete test 152 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0030 153 * @tc.desc rdb delete test 154 */ 155 it('testRdbStoreDelete0003', 0, async function (done) { 156 console.log(TAG + "************* testRdbStoreDelete0003 start *************"); 157 var u8 = new Uint8Array([1, 2, 3]) 158 { 159 const valueBucket = { 160 "name": "zhangsan", 161 "age": 18, 162 "salary": 100.5, 163 "blobType": u8, 164 } 165 await rdbStore.insert("test", valueBucket) 166 } 167 { 168 const valueBucket = { 169 "name": "lisi", 170 "age": 28, 171 "salary": 100.5, 172 "blobType": u8, 173 } 174 await rdbStore.insert("test", valueBucket) 175 } 176 { 177 let predicates = await new dataRdb.RdbPredicates("test") 178 predicates.equalTo("age", 28) 179 let resultSet = await rdbStore.query(predicates) 180 expect(1).assertEqual(resultSet.rowCount) 181 resultSet.close() 182 } 183 { 184 let predicates = await new dataRdb.RdbPredicates("test") 185 predicates.equalTo("age", 28) 186 let deletePromise = rdbStore.delete(predicates) 187 deletePromise.then(async (ret) => { 188 expect(1).assertEqual(ret) 189 console.log(TAG + "Delete done: " + ret) 190 }).catch((err) => { 191 expect(null).assertFail() 192 }) 193 await deletePromise 194 } 195 { 196 let predicates = await new dataRdb.RdbPredicates("test") 197 predicates.equalTo("age", 28) 198 let resultSet = await rdbStore.query(predicates) 199 expect(0).assertEqual(resultSet.rowCount) 200 resultSet.close() 201 } 202 done() 203 console.log(TAG + "************* testRdbStoreDelete0003 end *************"); 204 }) 205 206 /** 207 * @tc.name rdb delete test 208 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0040 209 * @tc.desc rdb delete test 210 */ 211 it('testRdbStoreDelete0004', 0, async function (done) { 212 console.log(TAG + "************* testRdbStoreDelete0004 start *************"); 213 var u8 = new Uint8Array([1, 2, 3]) 214 { 215 const valueBucket = { 216 "name": "zhangsan", 217 "age": 18, 218 "salary": 100.5, 219 "blobType": u8, 220 } 221 await rdbStore.insert("test", valueBucket) 222 } 223 { 224 const valueBucket = { 225 "name": "lisi", 226 "age": 28, 227 "salary": 100.5, 228 "blobType": u8, 229 } 230 await rdbStore.insert("test", valueBucket) 231 } 232 { 233 const valueBucket = { 234 "name": "lisi", 235 "age": 38, 236 "salary": 100.5, 237 "blobType": u8, 238 } 239 await rdbStore.insert("test", valueBucket) 240 } 241 { 242 let predicates = await new dataRdb.RdbPredicates("test") 243 predicates.equalTo("aaa id", 1) 244 let deletePromise = rdbStore.delete(predicates) 245 deletePromise.then(async (ret) => { 246 console.log(TAG + "delete done: " + ret) 247 expect(null).assertFail() 248 }).catch((err) => { 249 console.log(TAG + "delete with wrong conditions") 250 }) 251 } 252 done() 253 console.log(TAG + "************* testRdbStoreDelete0004 end *************"); 254 }) 255 256 /** 257 * @tc.name rdb delete test 258 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0050 259 * @tc.desc rdb delete test 260 */ 261 it('testRdbStoreDelete0005', 0, async function (done) { 262 console.log(TAG + "************* testRdbStoreDelete0005 start *************"); 263 var u8 = new Uint8Array([1, 2, 3]) 264 { 265 const valueBucket = { 266 "name": "zhangsan", 267 "age": 18, 268 "salary": 100.5, 269 "blobType": u8, 270 } 271 await rdbStore.insert("test", valueBucket) 272 } 273 { 274 const valueBucket = { 275 "name": "lisi", 276 "age": 28, 277 "salary": 100.5, 278 "blobType": u8, 279 } 280 await rdbStore.insert("test", valueBucket) 281 } 282 { 283 const valueBucket = { 284 "name": "lisi", 285 "age": 38, 286 "salary": 100.5, 287 "blobType": u8, 288 } 289 await rdbStore.insert("test", valueBucket) 290 } 291 { 292 let predicates = await new dataRdb.RdbPredicates("test") 293 predicates.equalTo("name", "lisi") 294 let deletePromise = rdbStore.delete(predicates) 295 deletePromise.then(async (ret) => { 296 expect(2).assertEqual(ret) 297 console.log(TAG + "Delete done: " + ret) 298 }).catch((err) => { 299 expect(null).assertFail() 300 }) 301 await deletePromise 302 } 303 done() 304 console.log(TAG + "************* testRdbStoreDelete0005 end *************"); 305 }) 306 307 /** 308 * @tc.name rdb delete test 309 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0060 310 * @tc.desc rdb delete test 311 */ 312 it('testRdbStoreDelete0006', 0, async function (done) { 313 console.log(TAG + "************* testRdbStoreDelete0006 start *************"); 314 315 try { 316 let predicates = await new dataRdb.RdbPredicates("") 317 let deletePromise = rdbStore.delete(predicates) 318 deletePromise.then(async (ret) => { 319 console.log(TAG + "delete done: " + ret) 320 expect(null).assertFail() 321 }).catch((err) => { 322 console.log(TAG + "delete with null") 323 }) 324 } catch (err) { 325 console.log("catch err: failed, err: code=" + err.code + " message=" + err.message) 326 expect("401").assertEqual(err.code) 327 done() 328 } 329 done() 330 console.log(TAG + "************* testRdbStoreDelete0006 end *************"); 331 }) 332 333 console.log(TAG + "*************Unit Test End*************"); 334})