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