• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2021-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 dataShare from '@ohos.data.dataShare';
17import {afterAll, afterEach, beforeAll, beforeEach, describe, expect, it} from 'deccjsunit/index'
18
19const URI_CONTACTS = "datashare:///com.ohos.contactsdataability";
20const rawContactUri = "datashare:///com.ohos.contactsdataability/contacts/raw_contact";
21const backup = "datashare:///com.ohos.contactsdataability/contacts/backup";
22const recover = "datashare:///com.ohos.contactsdataability/contacts/recover";
23const deletedUri = "datashare:///com.ohos.contactsdataability/contacts/deleted_raw_contact";
24
25describe('RecoveryTest', function() {
26    function sleep(numberMillis)
27    {
28        var now = new Date();
29        var exitTime = now.getTime() + numberMillis;
30        while (true) {
31            now = new Date();
32            if (now.getTime() > exitTime)
33                return;
34        }
35    }
36
37    async function ContactsQuery(tag, uri, size)
38    {
39        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
40        console.info(tag + ': ContactsQuery start ! dataShareHelper = ' + dataShareHelper);
41        var resultColumns = [];
42        let condition = new dataShare.DataSharePredicates();
43        condition.greaterThan("id", "0");
44        try {
45            var resultSet = await dataShareHelper.query(uri, resultColumns, condition);
46            console.info(tag + ' ContactsQuery resultSet.rowCount is = ' + resultSet.rowCount);
47            console.info(tag + ' ContactsQuery size is = ' + size);
48            expect(resultSet.rowCount == size).assertEqual(true);
49            if (resultSet.rowCount > 0) {
50                if (resultSet.goToFirstRow()) {
51                    do {
52                        var id = resultSet.getString(resultSet.getColumnIndex("id"));
53                        console.info(tag + ':logMessage contactsQuery id = ' + id);
54                        var name = resultSet.getString(resultSet.getColumnIndex("display_name"));
55                        console.info(tag + ':logMessage contactsQuery name = ' + name);
56                    } while (resultSet.goToNextRow())
57                }
58            }
59            resultSet.close();
60        } catch (error) {
61            console.info(tag + "logMessage ContactsQuery: error = " + error);
62        }
63    }
64
65    async function rawContactInsert(name)
66    {
67        console.info("------logMessage rawContactInsert is starting!-----");
68        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
69        console.info('logMessage get dataShareHelper success! dataShareHelper = ' + dataShareHelper);
70        var insertValue = {
71            "display_name" : name,
72        }
73        try {
74            var rawContactId = await dataShareHelper.insert(rawContactUri, insertValue);
75            console.info('logMessage rawContactInsert: rawContactId = ' + rawContactId);
76            expect(rawContactId > 0).assertTrue();
77        } catch (error) {
78            console.info('logMessage rawContactInsert: insert error = ' + error);
79        }
80        return rawContactId;
81    }
82
83    async function deleteRawContact(tag)
84    {
85        try {
86            let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
87            let condition = new dataShare.DataSharePredicates();
88            condition.greaterThan("id", "0");
89            condition.and();
90            condition.equalTo("is_deleted", "0");
91            await dataShareHelper.delete(rawContactUri, condition);
92            sleep(5000);
93            var conditionAll = new dataShare.DataSharePredicates();
94            conditionAll.greaterThan("id", "0");
95            await dataShareHelper.delete(deletedUri, conditionAll);
96        } catch (error) {
97            console.info(tag + ': deleteRawContact error = ' + error);
98        }
99    }
100
101    /**
102     * @tc.number  recovery_test_100
103     * @tc.name    backup database
104     * @tc.desc    Function test
105     */
106    it("recovery_test_100", 0, async function(done) {
107        await deleteRawContact("recovery_test_100");
108        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
109        var updateValues = {};
110        let condition = new dataShare.DataSharePredicates();
111        try {
112            var updateCode = await dataShareHelper.update(backup, updateValues, condition);
113            sleep(2000);
114            console.info('logMessage recovery_test_100: updateCode = ' + updateCode);
115            expect(updateCode == 0).assertTrue();
116            sleep(2000);
117            await ContactsQuery("recovery_test_100", rawContactUri, 0);
118            done();
119        } catch (error) {
120            console.info('logMessage recovery_test_100: raw_contact update error = ' + error);
121            done();
122        }
123    });
124
125    /**
126     * @tc.number  recovery_test_200
127     * @tc.n    ame    recovery database
128     * @tc.desc    Function test
129     */
130    it("recovery_test_200", 0, async function(done) {
131        await deleteRawContact("recovery_test_200");
132        let dataShareHelper = dataShare.createDataShareHelper(URI_CONTACTS);
133        var updateValues = {};
134        let condition = new dataShare.DataSharePredicates();
135        rawContactInsert("liming");
136        rawContactInsert("xiaolilili");
137        sleep(2000);
138        var updateCode = await dataShareHelper.update(backup, updateValues, condition);
139        sleep(2000);
140        console.info(' recovery_test_200: backup = ' + updateCode);
141        expect(updateCode == 0).assertTrue();
142        sleep(1000);
143        try {
144            var updateCode = await dataShareHelper.update(recover, updateValues, condition);
145            sleep(3000);
146            console.info('logMessage recovery_test_200: recover = ' + updateCode);
147            expect(updateCode == 0).assertTrue();
148            await ContactsQuery("recovery_test_200", rawContactUri, 2);
149            await deleteRawContact("recovery_test_200");
150            done();
151        } catch (error) {
152            console.info('logMessage recovery_test_200: raw_contact update error = ' + error);
153            done();
154        }
155    });
156});