• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 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 UNIQUE, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)";
21const STORE_CONFIG = {
22    name: "UpdataTest.db",
23}
24var rdbStore = undefined;
25
26
27describe('rdbStoreUpdateTest', function () {
28    beforeAll(async function () {
29        console.info(TAG + 'beforeAll')
30        rdbStore = await dataRdb.getRdbStore(STORE_CONFIG, 1);
31        await rdbStore.executeSql(CREATE_TABLE_TEST, null);
32    })
33
34    beforeEach(async function () {
35        await rdbStore.executeSql("DELETE FROM test");
36        console.info(TAG + 'beforeEach')
37    })
38
39    afterEach(function () {
40        console.info(TAG + 'afterEach')
41    })
42
43    afterAll(async function () {
44        console.info(TAG + 'afterAll')
45        rdbStore = null
46        await dataRdb.deleteRdbStore("UpdataTest.db");
47    })
48
49    /**
50     * @tc.name resultSet Update test
51     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Update_0001
52     * @tc.desc resultSet Update test
53     */
54    it('testRdbStoreUpdate0001', 0, async function () {
55        console.log(TAG + "************* testRdbStoreUpdate0001 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            let ret = await rdbStore.insert("test", valueBucket)
65            expect(1).assertEqual(ret);
66        }
67        try {
68            var u8 = new Uint8Array([4, 5, 6])
69            const valueBucket = {
70                "name": "lisi",
71                "age": 20,
72                "salary": 200.5,
73                "blobType": u8,
74            }
75            let predicates = await new dataRdb.RdbPredicates("test")
76            await predicates.equalTo("id", "1")
77            let ret = await rdbStore.update(valueBucket, predicates)
78            await expect(1).assertEqual(ret);
79            await console.log(TAG + "update done: " + ret);
80
81            predicates = await new dataRdb.RdbPredicates("test")
82            let resultSet = await rdbStore.query(predicates)
83            try {
84                expect(true).assertEqual(resultSet.goToFirstRow())
85                const id = await resultSet.getLong(resultSet.getColumnIndex("id"))
86                const name = await resultSet.getString(resultSet.getColumnIndex("name"))
87                const age = await resultSet.getLong(resultSet.getColumnIndex("age"))
88                const salary = await resultSet.getDouble(resultSet.getColumnIndex("salary"))
89                const blobType = await resultSet.getBlob(resultSet.getColumnIndex("blobType"))
90
91                await expect(1).assertEqual(id);
92                await expect("lisi").assertEqual(name);
93                await expect(20).assertEqual(age);
94                await expect(200.5).assertEqual(salary);
95                await expect(4).assertEqual(blobType[0]);
96                await expect(5).assertEqual(blobType[1]);
97                await expect(6).assertEqual(blobType[2]);
98                await expect(false).assertEqual(resultSet.goToNextRow())
99            } finally {
100                resultSet.close()
101                resultSet = null
102            }
103        } catch (err) {
104            console.log(TAG + `failed, errcode:${JSON.stringify(err)}.`);
105            expect().assertFail()
106        }
107        console.log(TAG + "************* testRdbStoreUpdate0001 end   *************");
108    })
109
110    /**
111     * @tc.name resultSet Update test
112     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Update_0002
113     * @tc.desc resultSet Update test
114     */
115    it('testRdbStoreUpdate0002', 0, async function () {
116        console.log(TAG + "************* testRdbStoreUpdate0002 start *************");
117        var u8 = new Uint8Array([1, 2, 3])
118        const valueBucket = {
119            "name": "zhangsan",
120            "age": 18,
121            "salary": 100.5,
122            "blobType": u8,
123        }
124        try {
125            let predicates = new dataRdb.RdbPredicates("")
126            await rdbStore.update(valueBucket, predicates)
127            expect().assertFail()
128        } catch (err) {
129            console.log(TAG + `empty failed, errcode:${JSON.stringify(err)}.`);
130            expect("401").assertEqual(err.code)
131        }
132        try {
133            const emptyBucket = {};
134            let predicates = await new dataRdb.RdbPredicates("test")
135            await rdbStore.update(emptyBucket, predicates)
136            expect().assertFail()
137        } catch (err) {
138            console.log(TAG + `test failed, errcode:${JSON.stringify(err)}.`);
139        }
140        try {
141            let predicates = await new dataRdb.RdbPredicates("test")
142            await predicates.equalTo("aaa", "null")
143            await rdbStore.update(valueBucket, predicates);
144            expect().assertFail()
145        } catch (err) {
146            console.log(TAG + `aaa failed, errcode:${JSON.stringify(err)}.`);
147        }
148        console.log(TAG + "************* testRdbStoreUpdate0002 end   *************");
149    })
150
151    /**
152     * @tc.name resultSet Update test
153     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Update_0003
154     * @tc.desc resultSet Update test
155     */
156    it('testRdbStoreUpdate0003', 0, async function () {
157        console.log(TAG + "************* testRdbStoreUpdate0003 start *************");
158        var u8 = new Uint8Array([1, 2, 3])
159        const valueBucket = {
160            "name": "zhangsan",
161            "age": 18,
162            "salary": 100.5,
163            "blobType": u8,
164            "wrongColumn": 100.5,
165        }
166        try {
167            let predicates = new dataRdb.RdbPredicates("wrongTable")
168            await rdbStore.update(valueBucket, predicates)
169            expect().assertFail();
170        } catch (err) {
171            console.log(TAG + `wrongTable failed, errcode:${JSON.stringify(err)}.`);
172        }
173        try {
174            let predicates = await new dataRdb.RdbPredicates("test")
175            await rdbStore.update(valueBucket, predicates)
176            expect().assertFail();
177        } catch (err) {
178            console.log(TAG + `test failed, errcode:${JSON.stringify(err)}.`);
179        }
180        console.log(TAG + "************* testRdbStoreUpdate0003 end   *************");
181    })
182
183    /**
184     * @tc.name resultSet Update test
185     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Update_0004
186     * @tc.desc resultSet Update test
187     */
188    it('testRdbStoreUpdate0004', 0, async function () {
189        console.log(TAG + "************* testRdbStoreUpdate0004 start *************");
190        var u8 = new Uint8Array([1, 2, 3])
191        const valueBucket = {
192            "name": "zhangsan",
193            "age": 18,
194            "salary": 100.5,
195            "blobType": u8,
196        }
197        try {
198            let predicates = await new dataRdb.RdbPredicates("test")
199            await predicates.equalTo("aaa", "null")
200            await rdbStore.update(valueBucket, predicates)
201            expect().assertFail();
202        } catch (err) {
203            console.log(TAG + `test failed, errcode:${JSON.stringify(err)}.`);
204        }
205        try {
206            const emptyBucket = {};
207            let predicates = await new dataRdb.RdbPredicates("test")
208            await predicates.equalTo("name", "zhangsan")
209            await predicates.equalTo("age", 18)
210            await predicates.equalTo("null", 100.5)
211            await rdbStore.update(emptyBucket, predicates)
212            expect().assertFail();
213        } catch (err) {
214            console.log(TAG + `emptyBucket failed, errcode:${JSON.stringify(err)}.`);
215        }
216        console.log(TAG + "************* testRdbStoreUpdate0004 end   *************");
217    })
218
219    /**
220     * @tc.name resultSet Update Extra long character test
221     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Update_0005
222     * @tc.desc resultSet Update Extra long character test
223     */
224    it('testRdbStoreUpdate0005', 0, async function () {
225        console.log(TAG + "************* testRdbStoreUpdate0005 start *************");
226        var u8 = new Uint8Array([1, 2, 3])
227        {
228            const valueBucket = {
229                "name": "xiaoming",
230                "age": 18,
231                "salary": 100.5,
232                "blobType": u8,
233            }
234            await rdbStore.insert("test", valueBucket)
235        }
236        try {
237            var u8 = new Uint8Array([4, 5, 6])
238            var nameStr = "abcd" + "e".repeat(2000) + "./&*$!@()"
239            const valueBucket = {
240                "name": nameStr,
241                "age": 20,
242                "salary": 200.5,
243                "blobType": u8,
244            }
245            let predicates = await new dataRdb.RdbPredicates("test")
246            await predicates.equalTo("name", "xiaoming")
247            let ret = await rdbStore.update(valueBucket, predicates)
248            await expect(1).assertEqual(ret);
249            await console.log(TAG + "update done: " + ret);
250
251            predicates = await new dataRdb.RdbPredicates("test")
252            predicates.equalTo("age", 20)
253            let resultSet = await rdbStore.query(predicates)
254            try {
255                expect(true).assertEqual(resultSet.goToFirstRow())
256                const name = await resultSet.getString(resultSet.getColumnIndex("name"))
257                await expect(nameStr).assertEqual(name);
258            } finally {
259                resultSet.close()
260                resultSet = null
261            }
262        } catch (err) {
263            console.log(TAG + `failed, errcode:${JSON.stringify(err)}.`);
264            expect().assertFail();
265        }
266        console.log(TAG + "************* testRdbStoreUpdate0005 end   *************");
267    })
268
269    /**
270     * @tc.name resultSet Update Extra long character test
271     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Update_0006
272     * @tc.desc resultSet Update Extra long character test
273     */
274    it('testRdbStoreUpdate0006', 0, async function () {
275        console.log(TAG + "************* testRdbStoreUpdate0006 start *************");
276        var u8 = new Uint8Array([1, 2, 3])
277        {
278            const valueBucket = {
279                "name": "xiaohua",
280                "age": 18,
281                "salary": 100.5,
282                "blobType": u8,
283            }
284            await rdbStore.insert("test", valueBucket)
285        }
286        try {
287            var u8 = new Uint8Array([4, 5, 6])
288            var nameStr = "橘子是水果" + "e".repeat(2000)
289            const valueBucket = {
290                "name": nameStr,
291                "age": 19,
292                "salary": 200.5,
293                "blobType": u8,
294            }
295            let predicates = await new dataRdb.RdbPredicates("test")
296            await predicates.equalTo("name", "xiaohua")
297            let ret = await rdbStore.update(valueBucket, predicates)
298            await expect(1).assertEqual(ret);
299            await console.log(TAG + "update done: " + ret);
300
301            predicates = await new dataRdb.RdbPredicates("test")
302            predicates.equalTo("age", 19)
303            let resultSet = await rdbStore.query(predicates)
304            try {
305                expect(true).assertEqual(resultSet.goToFirstRow())
306                const name = await resultSet.getString(resultSet.getColumnIndex("name"))
307                await expect(nameStr).assertEqual(name);
308            } finally {
309                resultSet.close()
310                resultSet = null
311            }
312        } catch (err) {
313            console.log(TAG + `failed, errcode:${JSON.stringify(err)}.`);
314            expect().assertFail();
315        }
316        console.log(TAG + "************* testRdbStoreUpdate0006 end   *************");
317    })
318
319    /**
320     * @tc.name resultSet Update Extra long character test
321     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Update_0007
322     * @tc.desc resultSet Update Extra long character test
323     */
324    it('testRdbStoreUpdate0007', 0, async function () {
325        console.log(TAG + "************* testRdbStoreUpdate0007 start *************");
326        var u8 = new Uint8Array([1, 2, 3])
327        {
328            const valueBucket = {
329                "name": "xiaocan",
330                "age": 18,
331                "salary": 100.5,
332                "blobType": u8,
333            }
334            await rdbStore.insert("test", valueBucket)
335        }
336        try {
337            var u8 = new Uint8Array([4, 5, 6])
338            var nameStr = "菠萝是水果" + "e".repeat(2000) + "好吃又不贵"
339            const valueBucket = {
340                "name": nameStr,
341                "age": 21,
342                "salary": 200.5,
343                "blobType": u8,
344            }
345            let predicates = await new dataRdb.RdbPredicates("test")
346            await predicates.equalTo("name", "xiaocan")
347            let ret = await rdbStore.update(valueBucket, predicates);
348            await expect(1).assertEqual(ret);
349            await console.log(TAG + "update done: " + ret);
350
351            predicates = await new dataRdb.RdbPredicates("test")
352            predicates.equalTo("age", 21)
353            let resultSet = await rdbStore.query(predicates)
354            try {
355                expect(true).assertEqual(resultSet.goToFirstRow())
356                const name = await resultSet.getString(resultSet.getColumnIndex("name"))
357                await expect(nameStr).assertEqual(name);
358            } finally {
359                resultSet.close()
360                resultSet = null
361            }
362        } catch (err) {
363            console.log(TAG + `failed, errcode:${JSON.stringify(err)}.`);
364            expect().assertFail();
365        }
366        console.log(TAG + "************* testRdbStoreUpdate0007 end   *************");
367    })
368    console.log(TAG + "*************Unit Test End*************");
369})