import * as SecureStore from "expo-secure-store"; import { loadJsonSetting, loadSetting, saveJsonSetting, saveSetting } from "../settings-storage"; describe("settings-storage (native path)", () => { it("returns the fallback when nothing is stored", async () => { expect(await loadSetting("vault_setting_unset_42", true)).toBe(true); expect(await loadSetting("vault_setting_unset_43", false)).toBe(false); }); it("round-trips a boolean via SecureStore", async () => { await saveSetting("vault_setting_alpha", true); expect(await loadSetting("vault_setting_alpha", false)).toBe(true); await saveSetting("vault_setting_alpha", false); expect(await loadSetting("vault_setting_alpha", true)).toBe(false); }); }); describe("loadJsonSetting / saveJsonSetting", () => { it("returns the fallback when nothing is stored", async () => { expect(await loadJsonSetting("vault_json_unset", ["default"])).toEqual(["default"]); }); it("round-trips an array via SecureStore", async () => { await saveJsonSetting("vault_json_tags", ["tag-1", "tag-2", "tag-3"]); expect(await loadJsonSetting("vault_json_tags", [])).toEqual(["tag-1", "tag-2", "tag-3"]); }); it("round-trips an object via SecureStore", async () => { await saveJsonSetting("vault_json_map", { "tag-1": true, "tag-2": false }); expect(await loadJsonSetting("vault_json_map", {})).toEqual({ "tag-1": true, "tag-2": false }); }); it("falls back on corrupt stored JSON instead of throwing", async () => { await SecureStore.setItemAsync("vault_json_corrupt", "{not valid json"); expect(await loadJsonSetting("vault_json_corrupt", ["fallback"])).toEqual(["fallback"]); }); });