Skip to content
Source
Sign inSign up

managedRelayTokenStore.test.ts

28 lines906 Bytes

1import { expect, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";
3import { vi } from "vite-plus/test";
4​
5const secureStore = vi.hoisted(() => new Map<string, string>());
6​
7vi.mock("expo-secure-store", () => ({
8 getItemAsync: vi.fn((key: string) => Promise.resolve(secureStore.get(key) ?? null)),
9 setItemAsync: vi.fn((key: string, value: string) => {
10 secureStore.set(key, value);
11 return Promise.resolve();
12 }),
13 deleteItemAsync: vi.fn((key: string) => {
14 secureStore.delete(key);
15 return Promise.resolve();
16 }),
17}));
18​
19import { managedRelayAccessTokenStore } from "./managedRelayTokenStore";
20​
21it.effect("falls back to an empty cache when persisted data is invalid", () =>
22 Effect.gen(function* () {
23 secureStore.clear();
24 secureStore.set("t3code.cloud.relay-access-tokens", "not-json");
25​
26 expect(yield* managedRelayAccessTokenStore.load).toEqual([]);
27 }),
28);