• 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 data_rdb from '@ohos.data.rdb'
17import ability_featureAbility from '@ohos.ability.featureAbility'
18import data_dataSharePredicates from '@ohos.data.dataSharePredicates'
19
20const TAG = "[RDB_JSKITS_TEST]"
21const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, "
22    + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"
23const DROP_TABLE_TEST = "drop table test"
24
25const STORE_CONFIG = {
26    name: "DataShareTest.db",
27}
28var rdbStore = undefined
29var context = ability_featureAbility.getContext()
30
31describe('rdbStoreDataSharePredicatesTest', function () {
32    beforeAll(async function () {
33        console.info(TAG + 'beforeAll')
34        rdbStore = await data_rdb.getRdbStore(context, STORE_CONFIG, 1)
35    })
36
37    beforeEach(async function () {
38        console.info(TAG + 'beforeEach')
39        await rdbStore.executeSql(CREATE_TABLE_TEST, null)
40    })
41
42    afterEach(async function () {
43        console.info(TAG + 'afterEach')
44        await rdbStore.executeSql(DROP_TABLE_TEST, null)
45    })
46
47    afterAll(async function () {
48        console.info(TAG + 'afterAll')
49        rdbStore = null
50        await data_rdb.deleteRdbStore(context, "DataShareTest.db")
51    })
52
53    console.log(TAG + "*************Unit Test Begin*************")
54
55
56    /**
57     * @tc.name rdb DataShare insert test
58     * @tc.number testRdbStoreDataShareFunc0010
59     * @tc.desc rdb DataShare Func insert test
60     */
61    it('testRdbStoreDataShareFunc0001', 0, async function (done) {
62        console.log(TAG + "************* testRdbStoreDataShareFunc0001 start *************")
63        let u8 = new Uint8Array([1, 2, 3])
64        const valueBucket = {
65            "name": "zhangsan",
66            "age": 18,
67            "salary": 100.5,
68            "blobType": u8,
69        }
70        let insertPromise = rdbStore.insert("test", valueBucket)
71        insertPromise.then(async (ret) => {
72            expect(1).assertEqual(ret)
73            console.log(TAG + "Insert done: " + ret)
74        }).catch((err) => {
75            console.log(TAG + "Insert err: " + err)
76            expect(false).assertTrue()
77        })
78        await insertPromise
79        console.log("insert end")
80
81        let predicates = new data_rdb.RdbPredicates("test")
82        predicates.equalTo("name", "zhangsan")
83        let resultSet = await rdbStore.query(predicates)
84        try {
85            console.log(TAG + "resultSet query done")
86            expect(true).assertEqual(resultSet.goToFirstRow())
87            const name = resultSet.getString(resultSet.getColumnIndex("name"))
88            const age = resultSet.getLong(resultSet.getColumnIndex("age"))
89            const salary = resultSet.getDouble(resultSet.getColumnIndex("salary"))
90            const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType"))
91            expect("zhangsan").assertEqual(name)
92            expect(18).assertEqual(age)
93            expect(100.5).assertEqual(salary)
94            expect(1).assertEqual(blobType[0])
95            expect(2).assertEqual(blobType[1])
96            expect(3).assertEqual(blobType[2])
97        } catch (err) {
98            expect(false).assertTrue()
99        }
100        resultSet = null
101
102        done()
103        console.log(TAG + "************* testRdbStoreDataShareFunc0001 end *************")
104    })
105
106
107    /**
108     * @tc.name rdb DataShare update test
109     * @tc.number testRdbStoreDataShareFunc0020
110     * @tc.desc rdb DataShare update promise Func test
111     */
112    it('testRdbStoreDataShareFunc0002', 0, async function (done) {
113        console.log(TAG + "************* testRdbStoreDataShareFunc0002 start *************")
114        let u8 = new Uint8Array([1, 2, 3])
115        let valueBucket = {
116            "name": "zhangsan",
117            "age": 18,
118            "salary": 100.5,
119            "blobType": u8,
120        }
121        await rdbStore.insert("test", valueBucket)
122
123        u8 = new Uint8Array([4, 5, 6])
124        valueBucket = {
125            "name": "lisi",
126            "age": 28,
127            "salary": 200.5,
128            "blobType": u8,
129        }
130
131        let predicates = new data_dataSharePredicates.DataSharePredicates()
132        predicates.equalTo("name", "zhangsan")
133        let promiseUpdate = rdbStore.update("test", valueBucket, predicates)
134        promiseUpdate.then(async (ret) => {
135            expect(1).assertEqual(ret)
136            console.log(TAG + "Update done: " + ret)
137        }).catch((err) => {
138            console.log(TAG + "Update err: " + err)
139            expect(false).assertTrue()
140        })
141        await promiseUpdate
142
143        let rdbPredicates = await new data_rdb.RdbPredicates("test")
144        rdbPredicates.equalTo("name", "lisi")
145        let resultSet = await rdbStore.query(rdbPredicates)
146        expect(true).assertEqual(resultSet.goToFirstRow())
147        const id = resultSet.getLong(resultSet.getColumnIndex("id"))
148        const name = resultSet.getString(resultSet.getColumnIndex("name"))
149        const age = resultSet.getLong(resultSet.getColumnIndex("age"))
150        const salary = resultSet.getDouble(resultSet.getColumnIndex("salary"))
151        const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType"))
152
153        expect("lisi").assertEqual(name)
154        expect(28).assertEqual(age)
155        expect(200.5).assertEqual(salary)
156        expect(4).assertEqual(blobType[0])
157        expect(5).assertEqual(blobType[1])
158        expect(6).assertEqual(blobType[2])
159
160        console.log(TAG + "dataShare update: {id=" + id + ", name=" + name + ", " +
161            "age=" + age + ", salary=" + salary + ", blobType=" + blobType)
162        resultSet = null
163
164        done()
165        console.log(TAG + "************* testRdbStoreDelete0002 end *************")
166    })
167
168    /**
169     * @tc.name rdb DataShare update test
170     * @tc.number testRdbStoreDataShareFunc0030
171     * @tc.desc rdb DataShare update callback Func test
172     */
173    it('testRdbStoreDataShareFunc0003', 0, async function (done) {
174        console.log(TAG + "************* testRdbStoreDataShareFunc0003 start *************")
175        let u8 = new Uint8Array([1, 2, 3])
176        let valueBucket = {
177            "name": "zhangsan",
178            "age": 18,
179            "salary": 100.5,
180            "blobType": u8,
181        }
182        await rdbStore.insert("test", valueBucket)
183
184        u8 = new Uint8Array([4, 5, 6])
185        valueBucket = {
186            "name": "lisi",
187            "age": 28,
188            "salary": 200.5,
189            "blobType": u8,
190        }
191
192        let predicates = new data_dataSharePredicates.DataSharePredicates()
193        predicates.equalTo("name", "zhangsan")
194
195        await rdbStore.update("test", valueBucket, predicates, async function (err, ret) {
196            if (err) {
197                console.info("Update err: " + err)
198                expect(false).assertTrue()
199            }
200            expect(1).assertEqual(ret)
201            console.log("Update done: " + ret)
202            let rdbPredicates = await new data_rdb.RdbPredicates("test")
203            rdbPredicates.equalTo("name", "lisi")
204            let resultSet = await rdbStore.query(rdbPredicates)
205            expect(1).assertEqual(resultSet.rowCount)
206            expect(true).assertEqual(resultSet.goToFirstRow())
207            const id = resultSet.getLong(resultSet.getColumnIndex("id"))
208            const name = resultSet.getString(resultSet.getColumnIndex("name"))
209            const age = resultSet.getLong(resultSet.getColumnIndex("age"))
210            const salary = resultSet.getDouble(resultSet.getColumnIndex("salary"))
211            const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType"))
212
213            expect("lisi").assertEqual(name)
214            expect(28).assertEqual(age)
215            expect(200.5).assertEqual(salary)
216            expect(4).assertEqual(blobType[0])
217            expect(5).assertEqual(blobType[1])
218            expect(6).assertEqual(blobType[2])
219            console.log(TAG + "dataShare update: {id=" + id + ", name=" + name + ", " +
220                "age=" + age + ", salary=" + salary + ", blobType=" + blobType)
221            resultSet = null
222        })
223
224        done()
225        console.log(TAG + "************* testRdbStoreDelete0003 end *************")
226    })
227
228    /**
229     * @tc.name rdb DataShare query test
230     * @tc.number testRdbStoreDataShareFunc0040
231     * @tc.desc rdb DataShare query promise Func test
232     */
233    it('testRdbStoreDataShareFunc0004', 0, async function (done) {
234        console.log(TAG + "************* testRdbStoreDataShareFunc0004 start *************")
235        let u8 = new Uint8Array([4, 5, 6])
236        let valueBucket = {
237            "name": "zhangsan",
238            "age": 18,
239            "salary": 100.5,
240            "blobType": u8,
241        }
242        await rdbStore.insert("test", valueBucket)
243
244        let predicates = new data_dataSharePredicates.DataSharePredicates()
245        predicates.equalTo("name", "zhangsan")
246        let queryPromise = rdbStore.query("test", predicates)
247        queryPromise.then((resultSet) => {
248            console.log(TAG + "DataShare Query done: ")
249            expect(true).assertEqual(resultSet.goToFirstRow())
250            const name = resultSet.getString(resultSet.getColumnIndex("name"))
251            const age = resultSet.getLong(resultSet.getColumnIndex("age"))
252            const salary = resultSet.getDouble(resultSet.getColumnIndex("salary"))
253            const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType"))
254
255            expect("zhangsan").assertEqual(name)
256            expect(18).assertEqual(age)
257            expect(100.5).assertEqual(salary)
258            expect(4).assertEqual(blobType[0])
259            expect(5).assertEqual(blobType[1])
260            expect(6).assertEqual(blobType[2])
261
262        }).catch((err) => {
263            console.log(TAG + "Query err: " + err)
264            expect(false).assertTrue()
265        })
266        await queryPromise
267
268        done()
269        console.log(TAG + "************* testRdbStoreDataShareFunc0004 end *************")
270    })
271
272    /**
273     * @tc.name rdb DataShare query test
274     * @tc.number testRdbStoreDataShareFunc0050
275     * @tc.desc rdb DataShare query callback Func test
276     */
277    it('testRdbStoreDataShareFunc0005', 0, async function (done) {
278        console.log(TAG + "************* testRdbStoreDataShareFunc0005 start *************")
279        let u8 = new Uint8Array([4, 5, 6])
280        let valueBucket = {
281            "name": "zhangsan",
282            "age": 18,
283            "salary": 100.5,
284            "blobType": u8,
285        }
286        await rdbStore.insert("test", valueBucket)
287
288        let predicates = new data_dataSharePredicates.DataSharePredicates()
289        predicates.equalTo("name", "zhangsan")
290
291        await rdbStore.query("test", predicates, ["ID", "NAME", "AGE", "SALARY", "blobType"],
292            function (err, resultSet) {
293                if (err) {
294                    console.info("Query err: " + err)
295                    expect(false).assertTrue()
296                }
297                expect(true).assertEqual(resultSet.goToFirstRow())
298                const name = resultSet.getString(resultSet.getColumnIndex("name"))
299                const age = resultSet.getLong(resultSet.getColumnIndex("age"))
300                const salary = resultSet.getDouble(resultSet.getColumnIndex("salary"))
301                const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType"))
302
303                expect("zhangsan").assertEqual(name)
304                expect(18).assertEqual(age)
305                expect(100.5).assertEqual(salary)
306                expect(4).assertEqual(blobType[0])
307                expect(5).assertEqual(blobType[1])
308                expect(6).assertEqual(blobType[2])
309            })
310
311        done()
312        console.log(TAG + "************* testRdbStoreDataShareFunc0005 end *************")
313    })
314
315    /**
316     * @tc.name rdb DataShare delete test
317     * @tc.number testRdbStoreDataShareFunc0060
318     * @tc.desc rdb DataShare delete Func test
319     */
320    it('testRdbStoreDataShareFunc0006', 0, async function (done) {
321        console.log(TAG + "************* testRdbStoreDataShareFunc0006 start *************")
322        let u8 = new Uint8Array([1, 2, 3])
323        let valueBucket = {
324            "name": "zhangsan",
325            "age": 18,
326            "salary": 100.5,
327            "blobType": u8,
328        }
329
330        await rdbStore.insert("test", valueBucket)
331        let predicates = new data_dataSharePredicates.DataSharePredicates()
332        predicates.equalTo("name", "zhangsan")
333        let deletePromise = rdbStore.delete("test", predicates)
334        deletePromise.then(async (ret) => {
335            expect(1).assertEqual(ret)
336            console.log(TAG + "Delete done: " + ret)
337        }).catch((err) => {
338            console.log(TAG + "Delete err: " + err)
339            expect(false).assertTrue()
340        })
341        await deletePromise
342
343        let rdbPredicates = await new data_rdb.RdbPredicates("test")
344        rdbPredicates.equalTo("name", "zhangsan")
345        let resultSet = await rdbStore.query(rdbPredicates)
346        expect(false).assertEqual(resultSet.goToFirstRow())
347        resultSet = null
348
349        done()
350        console.log(TAG + "************* testRdbStoreDataShareFunc0006 end *************")
351    })
352
353    /**
354     * @tc.name rdb DataShare delete test
355     * @tc.number testRdbStoreDataShareFunc0070
356     * @tc.desc rdb DataShare delete Func test
357     */
358    it('testRdbStoreDataShareFunc0007', 0, async function (done) {
359        console.log(TAG + "************* testRdbStoreDataShareFunc0007 start *************")
360        let u8 = new Uint8Array([1, 2, 3])
361        let valueBucket = {
362            "name": "zhangsan",
363            "age": 18,
364            "salary": 100.5,
365            "blobType": u8,
366        }
367        await rdbStore.insert("test", valueBucket)
368
369        let predicates = new data_dataSharePredicates.DataSharePredicates()
370        predicates.equalTo("name", "zhangsan")
371
372        await rdbStore.delete("test", predicates, async function (err, ret) {
373            if (err) {
374                console.info("Delete err: " + err)
375                expect(false).assertTrue()
376            }
377            expect(1).assertEqual(ret)
378            console.log("Delete done: " + ret)
379            let rdbPredicates = await new data_rdb.RdbPredicates("test")
380            rdbPredicates.equalTo("name", "zhangsan")
381            let resultSet = await rdbStore.query(rdbPredicates)
382            expect(false).assertEqual(resultSet.goToFirstRow())
383            resultSet = null
384        })
385
386        done()
387        console.log(TAG + "************* testRdbStoreDataShareFunc0007 end *************")
388    })
389    console.log(TAG + "*************Unit Test End*************")
390})