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 ret = await rdbStore.delete(predicates) 138 expect(1).assertEqual(ret) 139 } 140 done() 141 console.log(TAG + "************* testRdbStoreDelete0002 end *************"); 142 }) 143 144 /** 145 * @tc.name rdb delete test 146 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0030 147 * @tc.desc rdb delete test 148 */ 149 it('testRdbStoreDelete0003', 0, async function (done) { 150 console.log(TAG + "************* testRdbStoreDelete0003 start *************"); 151 var u8 = new Uint8Array([1, 2, 3]) 152 { 153 const valueBucket = { 154 "name": "zhangsan", 155 "age": 18, 156 "salary": 100.5, 157 "blobType": u8, 158 } 159 await rdbStore.insert("test", valueBucket) 160 } 161 { 162 const valueBucket = { 163 "name": "lisi", 164 "age": 28, 165 "salary": 100.5, 166 "blobType": u8, 167 } 168 await rdbStore.insert("test", valueBucket) 169 } 170 { 171 let predicates = await new dataRdb.RdbPredicates("test") 172 predicates.equalTo("age", 28) 173 let resultSet = await rdbStore.query(predicates) 174 expect(1).assertEqual(resultSet.rowCount) 175 resultSet.close() 176 } 177 { 178 let predicates = await new dataRdb.RdbPredicates("test") 179 predicates.equalTo("age", 28) 180 let deletePromise = rdbStore.delete(predicates) 181 deletePromise.then(async (ret) => { 182 expect(1).assertEqual(ret) 183 console.log(TAG + "Delete done: " + ret) 184 }).catch((err) => { 185 expect(null).assertFail() 186 }) 187 await deletePromise 188 } 189 { 190 let predicates = await new dataRdb.RdbPredicates("test") 191 predicates.equalTo("age", 28) 192 let resultSet = await rdbStore.query(predicates) 193 expect(0).assertEqual(resultSet.rowCount) 194 resultSet.close() 195 } 196 done() 197 console.log(TAG + "************* testRdbStoreDelete0003 end *************"); 198 }) 199 200 /** 201 * @tc.name rdb delete test 202 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0040 203 * @tc.desc rdb delete test 204 */ 205 it('testRdbStoreDelete0004', 0, async function (done) { 206 console.log(TAG + "************* testRdbStoreDelete0004 start *************"); 207 var u8 = new Uint8Array([1, 2, 3]) 208 { 209 const valueBucket = { 210 "name": "zhangsan", 211 "age": 18, 212 "salary": 100.5, 213 "blobType": u8, 214 } 215 await rdbStore.insert("test", valueBucket) 216 } 217 { 218 const valueBucket = { 219 "name": "lisi", 220 "age": 28, 221 "salary": 100.5, 222 "blobType": u8, 223 } 224 await rdbStore.insert("test", valueBucket) 225 } 226 { 227 const valueBucket = { 228 "name": "lisi", 229 "age": 38, 230 "salary": 100.5, 231 "blobType": u8, 232 } 233 await rdbStore.insert("test", valueBucket) 234 } 235 { 236 let predicates = await new dataRdb.RdbPredicates("test") 237 predicates.equalTo("aaa id", 1) 238 let deletePromise = rdbStore.delete(predicates) 239 deletePromise.then(async (ret) => { 240 console.log(TAG + "delete done: " + ret) 241 expect(null).assertFail() 242 }).catch((err) => { 243 console.log(TAG + "delete with wrong conditions") 244 }) 245 } 246 done() 247 console.log(TAG + "************* testRdbStoreDelete0004 end *************"); 248 }) 249 250 /** 251 * @tc.name rdb delete test 252 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0050 253 * @tc.desc rdb delete test 254 */ 255 it('testRdbStoreDelete0005', 0, async function (done) { 256 console.log(TAG + "************* testRdbStoreDelete0005 start *************"); 257 var u8 = new Uint8Array([1, 2, 3]) 258 { 259 const valueBucket = { 260 "name": "zhangsan", 261 "age": 18, 262 "salary": 100.5, 263 "blobType": u8, 264 } 265 await rdbStore.insert("test", valueBucket) 266 } 267 { 268 const valueBucket = { 269 "name": "lisi", 270 "age": 28, 271 "salary": 100.5, 272 "blobType": u8, 273 } 274 await rdbStore.insert("test", valueBucket) 275 } 276 { 277 const valueBucket = { 278 "name": "lisi", 279 "age": 38, 280 "salary": 100.5, 281 "blobType": u8, 282 } 283 await rdbStore.insert("test", valueBucket) 284 } 285 { 286 let predicates = await new dataRdb.RdbPredicates("test") 287 predicates.equalTo("name", "lisi") 288 let deletePromise = rdbStore.delete(predicates) 289 deletePromise.then(async (ret) => { 290 expect(2).assertEqual(ret) 291 console.log(TAG + "Delete done: " + ret) 292 }).catch((err) => { 293 expect(null).assertFail() 294 }) 295 await deletePromise 296 } 297 done() 298 console.log(TAG + "************* testRdbStoreDelete0005 end *************"); 299 }) 300 301 /** 302 * @tc.name rdb delete test 303 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0060 304 * @tc.desc rdb delete test 305 */ 306 it('testRdbStoreDelete0006', 0, async function (done) { 307 console.log(TAG + "************* testRdbStoreDelete0006 start *************"); 308 309 try { 310 let predicates = await new dataRdb.RdbPredicates("") 311 let deletePromise = rdbStore.delete(predicates) 312 deletePromise.then(async (ret) => { 313 console.log(TAG + "delete done: " + ret) 314 expect(null).assertFail() 315 }).catch((err) => { 316 console.log(TAG + "delete with null") 317 }) 318 } catch (err) { 319 console.log("catch err: failed, err: code=" + err.code + " message=" + err.message) 320 expect("401").assertEqual(err.code) 321 done() 322 } 323 done() 324 console.log(TAG + "************* testRdbStoreDelete0006 end *************"); 325 }) 326 327 console.log(TAG + "*************Unit Test End*************"); 328})