1/* 2 * Copyright (c) 2021 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 PersistentStorage.PersistProps([{ 29 key: "persistentSay", 30 defaultValue: "Terve" 31 }, { 32 key: "persistentSubject", 33 defaultValue: "Maailma" 34 }]); 35 36 test("PersistentStorage 'persistentSay' value retrieved from AppStorage correct", AppStorage.Get<string>("persistentSay") == "Hello"); 37 test("PersistentStorage 'persistentSubject' value retrieved from AppStorage correct", AppStorage.Get<string>("persistentSubject") == "World"); 38 }); 39 40 tcase("writing values to IStorage via PersistentStorage", () => { 41 PersistentStorage.PersistProps([{ 42 key: "writeToDb", 43 defaultValue: "" 44 }, { 45 key: "numberToDb", 46 defaultValue: 10 47 }]); 48 AppStorage.Set("writeToDb", "test"); 49 AppStorage.Set("numberToDb", 42); 50 test("PersistentStorage 'persistentSay' value retrieved from AppStorage correct", AppStorage.Get<string>("persistentSay") == "Hello"); 51 test("PersistentStorage 'persistentSubject' value retrieved from AppStorage correct", AppStorage.Get<string>("persistentSubject") == "World"); 52 test("PersistentStorage 'writeToDb' value retrieved from AppStorage correct", AppStorage.Get<string>("writeToDb") == "test"); 53 test("PersistentStorage 'numberToDb' value retrieved from AppStorage correct", AppStorage.Get<number>("numberToDb") == 42); 54 55 test("PersistentStorage 'writeToDb' value retrieved from MockStorage correct", ms.get("writeToDb") == "test"); 56 test("PersistentStorage 'numberToDb' value retrieved from MockStorage correct", ms.get("numberToDb") == 42); 57 }); 58 59 tcase("deleting values from IStorage via PersistentStorage", () => { 60 PersistentStorage.DeleteProp("writeToDb"); 61 PersistentStorage.DeleteProp("numberToDb"); 62 AppStorage.Delete("writeToDb"); 63 AppStorage.Delete("numberToDb"); 64 test("MockStorage 'writeToDb' value deleted", ms.get("writeToDb") == undefined); 65 test("MockStorage 'numberToDb' value deleted", ms.get("numberToDb") == undefined); 66 }); 67 68 tcase("Persisting new property that does not exist in db", () => { 69 PersistentStorage.PersistProp("newProp", "new property value"); 70 71 test("PersistentStorage 'newProp' value retrieved from AppStorage correct", AppStorage.Get<string>("newProp") == "new property value"); 72 test("MockStorage 'newProp' value retrieved from MockStorage correct", ms.get("newProp") == "new property value"); 73 }); 74 75 tcase("keys retrieval", () => { 76 const keys = PersistentStorage.Keys(); 77 for (var i in keys) { 78 console.debug(`${keys[i]}`); 79 } 80 }); 81 82 tcase("teardown", () => { 83 PersistentStorage.AboutToBeDeleted(); 84 const deleteOk = AppStorage.Delete("persistentSay") && AppStorage.Delete("persistentSubject") && AppStorage.Delete("newProp") && AppStorage.Delete("existingPropToPersist"); 85 86 SubscriberManager.Get().dumpSubscriberInfo(); 87 88 test("PersistentStorage teardown complete", deleteOk); 89 test(`SubscriberManager num of subscribers, is ${SubscriberManager.Get().numberOfSubscrbers()} should be 0`, SubscriberManager.Get().numberOfSubscrbers() == 0); 90 }); 91}); 92