• 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 */
15
16import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'
17import dataRdb from '@ohos.data.rdb';
18
19const TAG = "[RDB_JSKITS_TEST]"
20const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)";
21
22const STORE_CONFIG = {
23    name: "InsertTest.db",
24}
25
26var rdbStore = undefined;
27
28describe('rdbStoreInsertTest', function () {
29    beforeAll(async function () {
30        console.info(TAG + 'beforeAll')
31        rdbStore = await dataRdb.getRdbStore(STORE_CONFIG, 1);
32        await rdbStore.executeSql(CREATE_TABLE_TEST, null);
33    })
34
35    beforeEach(async function () {
36        console.info(TAG + 'beforeEach')
37        await rdbStore.executeSql("DELETE FROM test");
38    })
39
40    afterEach(async function () {
41        console.info(TAG + 'afterEach')
42    })
43
44    afterAll(async function () {
45        console.info(TAG + 'afterAll')
46        rdbStore = null
47        await dataRdb.deleteRdbStore("InsertTest.db");
48    })
49
50    console.log(TAG + "*************Unit Test Begin*************");
51
52    /**
53     * @tc.name rdb insert test
54     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Insert_0001
55     * @tc.desc rdb insert test
56     */
57    it('testRdbStoreInsert0001', 0, async function (done) {
58        console.log(TAG + "************* testRdbStoreInsert0001 start *************");
59        var u8 = new Uint8Array([1, 2, 3])
60        {
61            const valueBucket = {
62                "name": "zhangsan",
63                "age": 18,
64                "salary": 100.5,
65                "blobType": u8,
66            }
67            await rdbStore.insert("test", valueBucket)
68        }
69        {
70            const valueBucket = {
71                "name": "lisi",
72                "age": 18,
73                "salary": 100.5,
74                "blobType": u8,
75            }
76            await rdbStore.insert("test", valueBucket)
77        }
78        {
79            const valueBucket = {
80                "name": "lisi",
81                "age": 20,
82                "salary": 100.5,
83                "blobType": u8,
84            }
85            await rdbStore.insert("test", valueBucket)
86        }
87
88        let predicates = new dataRdb.RdbPredicates("test");
89        predicates.equalTo("name", "zhangsan")
90        let resultSet = await rdbStore.query(predicates)
91        try {
92            console.log(TAG + "resultSet query done");
93            expect(true).assertEqual(resultSet.goToFirstRow())
94            const id = resultSet.getLong(resultSet.getColumnIndex("id"))
95            const name = resultSet.getString(resultSet.getColumnIndex("name"))
96            const age = resultSet.getLong(resultSet.getColumnIndex("age"))
97            const salary = resultSet.getDouble(resultSet.getColumnIndex("salary"))
98            const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType"))
99            console.log(TAG + "id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType);
100            expect(1).assertEqual(id);
101            expect("zhangsan").assertEqual(name)
102            expect(18).assertEqual(age)
103            expect(100.5).assertEqual(salary)
104            expect(1).assertEqual(blobType[0])
105            expect(2).assertEqual(blobType[1])
106            expect(3).assertEqual(blobType[2])
107            expect(false).assertEqual(resultSet.goToNextRow())
108        } catch (e) {
109            console.log("insert1 error " + e);
110        }
111        resultSet = null
112        done()
113        console.log(TAG + "************* testRdbStoreInsert0001 end *************");
114    })
115
116    /**
117     * @tc.name rdb insert test
118     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Insert_0002
119     * @tc.desc rdb insert test
120     */
121    it('testRdbStoreInsert0002', 0, async function (done) {
122        console.log(TAG + "************* testRdbStoreInsert0002 start *************");
123        var u8 = new Uint8Array([1, 2, 3])
124        {
125            const valueBucket = {
126                "name": "zhangsan",
127                "age": 18,
128                "salary": 100.5,
129                "blobType": u8,
130            }
131            let insertPromise = rdbStore.insert("wrong", valueBucket)
132            insertPromise.then(async (ret) => {
133                expect(1).assertEqual(ret)
134                console.log(TAG + "insert first done: " + ret)
135                expect(null).assertFail()
136            }).catch((err) => {
137                console.log(TAG + "insert with wrong table")
138            })
139        }
140        done()
141        console.log(TAG + "************* testRdbStoreInsert0002 end   *************");
142    })
143
144    /**
145     * @tc.name rdb insert test
146     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Insert_0003
147     * @tc.desc rdb insert test
148     */
149    it('testRdbStoreInsert0003', 0, async function (done) {
150        console.log(TAG + "************* testRdbStoreInsert0003 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            try {
160                let insertPromise = rdbStore.insert(null, valueBucket)
161                insertPromise.then(async (ret) => {
162                    expect(1).assertEqual(ret)
163                    console.log(TAG + "insert first done: " + ret)
164                    expect(null).assertFail()
165                }).catch((err) => {
166                    console.log(TAG + "insert with null table")
167                    expect(null).assertFail()
168                })
169            } catch(err) {
170                console.log("catch err: failed, err: code=" + err.code + " message=" + err.message)
171                expect("401").assertEqual(err.code)
172                done()
173            }
174        }
175        done()
176        console.log(TAG + "************* testRdbStoreInsert0003 end   *************");
177    })
178
179    /**
180     * @tc.name rdb insert Extra long character test
181     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Insert_0004
182     * @tc.desc rdb insert Extra long character test
183     */
184    it('testRdbStoreInsert0004', 0, async function (done) {
185        console.log(TAG + "************* testRdbStoreInsert0004 start *************");
186        var u8 = new Uint8Array([1, 2, 3])
187        var nameStr = "abcd" + "e".repeat(2000) + "./&*$!@()"
188        const valueBucket = {
189            "name": nameStr,
190            "age": 19,
191            "salary": 100.5,
192            "blobType": u8,
193        }
194        await rdbStore.insert("test", valueBucket)
195        let predicates = new dataRdb.RdbPredicates("test");
196        predicates.equalTo("age", 19)
197        let resultSet = await rdbStore.query(predicates)
198        try {
199            console.log(TAG + "resultSet query done");
200            expect(true).assertEqual(resultSet.goToFirstRow())
201            const name = resultSet.getString(resultSet.getColumnIndex("name"))
202            console.log(TAG + "id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType);
203            expect(nameStr).assertEqual(name)
204        } catch (e) {
205            console.log("insert error " + e);
206        }
207        resultSet = null
208        done()
209        console.log(TAG + "************* testRdbStoreInsert0004 end   *************");
210    })
211
212    /**
213     * @tc.name rdb insert Extra long character test
214     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Insert_0005
215     * @tc.desc rdb insert Extra long character test
216     */
217    it('testRdbStoreInsert0005', 0, async function (done) {
218        console.log(TAG + "************* testRdbStoreInsert0005 start *************");
219        var u8 = new Uint8Array([1, 2, 3])
220        var nameStr = "苹果是水果" + "e".repeat(2000)
221        const valueBucket = {
222            "name": nameStr,
223            "age": 20,
224            "salary": 100.5,
225            "blobType": u8,
226        }
227        await rdbStore.insert("test", valueBucket)
228        let predicates = new dataRdb.RdbPredicates("test");
229        predicates.equalTo("age", 20)
230        let resultSet = await rdbStore.query(predicates)
231        try {
232            console.log(TAG + "resultSet query done");
233            expect(true).assertEqual(resultSet.goToFirstRow())
234            const name = resultSet.getString(resultSet.getColumnIndex("name"))
235            console.log(TAG + "id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType);
236            expect(nameStr).assertEqual(name)
237        } catch (e) {
238            console.log("insert error " + e);
239        }
240        resultSet = null
241        done()
242        console.log(TAG + "************* testRdbStoreInsert0005 end   *************");
243    })
244
245    /**
246     * @tc.name rdb insert Extra long character test
247     * @tc.number SUB_DDM_AppDataFWK_JSRDB_Insert_0006
248     * @tc.desc rdb insert Extra long character test
249     */
250    it('testRdbStoreInsert0006', 0, async function (done) {
251        console.log(TAG + "************* testRdbStoreInsert0006 start *************");
252        var u8 = new Uint8Array([1, 2, 3])
253        var nameStr = "西瓜是水果" + "e".repeat(2000) + "好吃又好看"
254        const valueBucket = {
255            "name": nameStr,
256            "age": 21,
257            "salary": 100.5,
258            "blobType": u8,
259        }
260        await rdbStore.insert("test", valueBucket)
261        let predicates = new dataRdb.RdbPredicates("test");
262        predicates.equalTo("age", 21)
263        let resultSet = await rdbStore.query(predicates)
264        try {
265            console.log(TAG + "resultSet query done");
266            expect(true).assertEqual(resultSet.goToFirstRow())
267            const name = resultSet.getString(resultSet.getColumnIndex("name"))
268            console.log(TAG + "id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType);
269            expect(nameStr).assertEqual(name)
270        } catch (e) {
271            console.log("insert error " + e);
272        }
273        resultSet = null
274        done()
275        console.log(TAG + "************* testRdbStoreInsert0006 end   *************");
276    })
277
278    /**
279     * @tc.name: rdb batchInsert test
280     * @tc.number: SUB_DDM_AppDataFWK_JSRDB_batchInsert_0001
281     * @tc.desc: rdb batchInsert test
282     * @tc.require: issueI5GZGX
283     */
284    it('testRdbStorebatchInsert001', 0, async function () {
285        console.log(TAG + "************* testRdbStorebatchInsert001 start *************");
286
287        var u8 = new Uint8Array([1, 2, 3])
288        const valueBucket = {
289            "name": "zhangsan",
290            "age": 18,
291            "salary": 100.5,
292            "blobType": u8,
293        }
294        let valueBucketArray = new Array();
295        for (let i = 0; i < 100; i++) {
296            valueBucketArray.push(valueBucket);
297        }
298        await rdbStore.batchInsert("test", valueBucketArray);
299        let resultSet = await rdbStore.querySql("SELECT * FROM test");
300        let count = resultSet.rowCount;
301        expect(100).assertEqual(count);
302        console.log(TAG + "************* testRdbStorebatchInsert001 end *************");
303    })
304
305    console.log(TAG + "*************Unit Test End*************");
306})