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, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; 20 21const STORE_CONFIG = { 22 name: "Delete.db", 23} 24var rdbStore = undefined; 25 26describe('rdbStoreDeleteTest', function () { 27 beforeAll(function () { 28 console.info(TAG + 'beforeAll') 29 }) 30 31 beforeEach(async function () { 32 console.info(TAG + 'beforeEach') 33 rdbStore = await dataRdb.getRdbStore(STORE_CONFIG, 1); 34 await rdbStore.executeSql(CREATE_TABLE_TEST, null); 35 }) 36 37 afterEach(async function () { 38 console.info(TAG + 'afterEach') 39 await rdbStore.executeSql("DELETE FROM test"); 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 } 182 { 183 let predicates = await new dataRdb.RdbPredicates("test") 184 predicates.equalTo("age", 28) 185 let deletePromise = rdbStore.delete(predicates) 186 deletePromise.then(async (ret) => { 187 expect(1).assertEqual(ret) 188 console.log(TAG + "Delete done: " + ret) 189 }).catch((err) => { 190 expect(null).assertFail() 191 }) 192 await deletePromise 193 } 194 { 195 let predicates = await new dataRdb.RdbPredicates("test") 196 predicates.equalTo("age", 28) 197 let resultSet = await rdbStore.query(predicates) 198 expect(0).assertEqual(resultSet.rowCount) 199 } 200 done() 201 console.log(TAG + "************* testRdbStoreDelete0003 end *************"); 202 }) 203 204 /** 205 * @tc.name rdb delete test 206 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0040 207 * @tc.desc rdb delete test 208 */ 209 it('testRdbStoreDelete0004', 0, async function (done) { 210 console.log(TAG + "************* testRdbStoreDelete0004 start *************"); 211 var u8 = new Uint8Array([1, 2, 3]) 212 { 213 const valueBucket = { 214 "name": "zhangsan", 215 "age": 18, 216 "salary": 100.5, 217 "blobType": u8, 218 } 219 await rdbStore.insert("test", valueBucket) 220 } 221 { 222 const valueBucket = { 223 "name": "lisi", 224 "age": 28, 225 "salary": 100.5, 226 "blobType": u8, 227 } 228 await rdbStore.insert("test", valueBucket) 229 } 230 { 231 const valueBucket = { 232 "name": "lisi", 233 "age": 38, 234 "salary": 100.5, 235 "blobType": u8, 236 } 237 await rdbStore.insert("test", valueBucket) 238 } 239 { 240 let predicates = await new dataRdb.RdbPredicates("test") 241 predicates.equalTo("aaa id", 1) 242 let deletePromise = rdbStore.delete(predicates) 243 deletePromise.then(async (ret) => { 244 console.log(TAG + "delete done: " + ret) 245 expect(null).assertFail() 246 }).catch((err) => { 247 console.log(TAG + "delete with wrong conditions") 248 }) 249 } 250 done() 251 console.log(TAG + "************* testRdbStoreDelete0004 end *************"); 252 }) 253 254 /** 255 * @tc.name rdb delete test 256 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0050 257 * @tc.desc rdb delete test 258 */ 259 it('testRdbStoreDelete0005', 0, async function (done) { 260 console.log(TAG + "************* testRdbStoreDelete0005 start *************"); 261 var u8 = new Uint8Array([1, 2, 3]) 262 { 263 const valueBucket = { 264 "name": "zhangsan", 265 "age": 18, 266 "salary": 100.5, 267 "blobType": u8, 268 } 269 await rdbStore.insert("test", valueBucket) 270 } 271 { 272 const valueBucket = { 273 "name": "lisi", 274 "age": 28, 275 "salary": 100.5, 276 "blobType": u8, 277 } 278 await rdbStore.insert("test", valueBucket) 279 } 280 { 281 const valueBucket = { 282 "name": "lisi", 283 "age": 38, 284 "salary": 100.5, 285 "blobType": u8, 286 } 287 await rdbStore.insert("test", valueBucket) 288 } 289 { 290 let predicates = await new dataRdb.RdbPredicates("test") 291 predicates.equalTo("name", "lisi") 292 let deletePromise = rdbStore.delete(predicates) 293 deletePromise.then(async (ret) => { 294 expect(2).assertEqual(ret) 295 console.log(TAG + "Delete done: " + ret) 296 }).catch((err) => { 297 expect(null).assertFail() 298 }) 299 await deletePromise 300 } 301 done() 302 console.log(TAG + "************* testRdbStoreDelete0005 end *************"); 303 }) 304 305 /** 306 * @tc.name rdb delete test 307 * @tc.number SUB_DDM_AppDataFWK_JSRDB_Delete_0060 308 * @tc.desc rdb delete test 309 */ 310 it('testRdbStoreDelete0006', 0, async function (done) { 311 console.log(TAG + "************* testRdbStoreDelete0006 start *************"); 312 313 try { 314 let predicates = await new dataRdb.RdbPredicates("") 315 let deletePromise = rdbStore.delete(predicates) 316 deletePromise.then(async (ret) => { 317 console.log(TAG + "delete done: " + ret) 318 expect(null).assertFail() 319 }).catch((err) => { 320 console.log(TAG + "delete with null") 321 }) 322 } catch (err) { 323 console.log("catch err: failed, err: code=" + err.code + " message=" + err.message) 324 expect("401").assertEqual(err.code) 325 done() 326 } 327 done() 328 console.log(TAG + "************* testRdbStoreDelete0006 end *************"); 329 }) 330 331 console.log(TAG + "*************Unit Test End*************"); 332})