1/* 2 * Copyright (c) 2021-2023 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 16const testPersistentStorage = tsuite("PersistentStorage", () => { 17 let ms = new MockStorage("./src/utest/resources/test.db"); 18 PersistentStorage.configureBackend(ms); 19 20 tcase("persisting existing values in AppStorage", () => { 21 AppStorage.setOrCreate<number>("existingPropToPersist", 123); 22 PersistentStorage.persistProp<number>("existingPropToPersist", 456); 23 24 test("PersistentStorage 'existingPropToPersist' value retrieved from AppStorage correct", AppStorage.get<number>("existingPropToPersist") == 123); 25 test("PersistentStorage 'existingPropToPersist' value retrieved from MockStorage correct", ms.get("existingPropToPersist") == 123); 26 }); 27 tcase("retrieval of values", () => { 28 AppStorage.setOrCreate<string>("persistentSay", "Terve"); 29 AppStorage.setOrCreate<string>("persistentSubject", "Maailma"); 30 31 PersistentStorage.persistProps([{ 32 key: "persistentSay", 33 defaultValue: "Terve" 34 }, { 35 key: "persistentSubject", 36 defaultValue: "Maailma" 37 }]); 38 39 test(`PersistentStorage 'persistentSay' value retrieved from AppStorage correct`, AppStorage.get<string>("persistentSay") === "Terve"); 40 test("PersistentStorage 'persistentSubject' value retrieved from AppStorage correct", AppStorage.get<string>("persistentSubject") == "Maailma"); 41 }); 42 43 tcase("writing values to IStorage via PersistentStorage", () => { 44 PersistentStorage.persistProps([{ 45 key: "writeToDb", 46 defaultValue: "" 47 }, { 48 key: "numberToDb", 49 defaultValue: 10 50 }]); 51 AppStorage.set("writeToDb", "test"); 52 AppStorage.set("numberToDb", 42); 53 test("PersistentStorage 'persistentSay' value retrieved from AppStorage correct", AppStorage.get<string>("persistentSay") == "Terve"); 54 test("PersistentStorage 'persistentSubject' value retrieved from AppStorage correct", AppStorage.get<string>("persistentSubject") == "Maailma"); 55 test("PersistentStorage 'writeToDb' value retrieved from AppStorage correct", AppStorage.get<string>("writeToDb") == "test"); 56 test("PersistentStorage 'numberToDb' value retrieved from AppStorage correct", AppStorage.get<number>("numberToDb") == 42); 57 58 test("PersistentStorage 'writeToDb' value retrieved from MockStorage correct", ms.get<string>("writeToDb") == "test"); 59 test("PersistentStorage 'numberToDb' value retrieved from MockStorage correct", ms.get("numberToDb") == 42); 60 }); 61 62 tcase("deleting values from IStorage via PersistentStorage", () => { 63 PersistentStorage.deleteProp("writeToDb"); 64 PersistentStorage.deleteProp("numberToDb"); 65 AppStorage.delete("writeToDb"); 66 AppStorage.delete("numberToDb"); 67 test("MockStorage 'writeToDb' value deleted", ms.get("writeToDb") == undefined); 68 test("MockStorage 'numberToDb' value deleted", ms.get("numberToDb") == undefined); 69 }); 70 71 tcase("Persisting new property that does not exist in db", () => { 72 PersistentStorage.persistProp("newProp", "new property value"); 73 74 test("PersistentStorage 'newProp' value retrieved from AppStorage correct", AppStorage.get<string>("newProp") == "new property value"); 75 test("MockStorage 'newProp' value retrieved from MockStorage correct", ms.get("newProp") == "new property value"); 76 }); 77 78 tcase("keys retrieval", () => { 79 const keys = PersistentStorage.keys(); 80 for (var i in keys) { 81 console.debug(`${keys[i]}`); 82 } 83 }); 84 85 tcase("teardown", () => { 86 PersistentStorage.aboutToBeDeleted(); 87 const deleteOk = AppStorage.delete("persistentSay") && AppStorage.delete("persistentSubject") && AppStorage.delete("newProp") && AppStorage.delete("existingPropToPersist"); 88 89 SubscriberManager.DumpSubscriberInfo(); 90 91 test("PersistentStorage teardown complete", deleteOk); 92 test(`SubscriberManager num of subscribers, is ${SubscriberManager.NumberOfSubscribers()} should be 0`, 93 SubscriberManager.NumberOfSubscribers() == 0); 94 }); 95}); 96