• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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