mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-10-27 15:40:36 +08:00
In preparation for merging radicle-desktop into radicle-gui. It's a pure rename, so git can follow every file across the move.
55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
import { afterEach, beforeEach, expect, test, vi } from "vitest";
|
|
|
|
let flushSync: () => void;
|
|
|
|
async function load() {
|
|
vi.resetModules();
|
|
const { shareAction } = await import("@app/lib/shareAction.svelte");
|
|
({ flushSync } = await import("svelte"));
|
|
flushSync();
|
|
return shareAction;
|
|
}
|
|
|
|
beforeEach(() => {
|
|
localStorage.clear();
|
|
});
|
|
|
|
afterEach(() => {
|
|
vi.unstubAllGlobals();
|
|
});
|
|
|
|
test("defaults to copying the link", async () => {
|
|
expect((await load()).value).toBe("copyLink");
|
|
});
|
|
|
|
test.each([
|
|
["copyId", "copyId"],
|
|
["open", "open"],
|
|
["share", "copyLink"],
|
|
['"open"', "copyLink"],
|
|
])("reads a stored %j as %j", async (stored, expected) => {
|
|
localStorage.setItem("shareAction", stored);
|
|
|
|
expect((await load()).value).toBe(expected);
|
|
});
|
|
|
|
test("persists a change", async () => {
|
|
const shareAction = await load();
|
|
|
|
shareAction.value = "open";
|
|
flushSync();
|
|
|
|
expect(localStorage.getItem("shareAction")).toBe("open");
|
|
expect((await load()).value).toBe("open");
|
|
});
|
|
|
|
test("works without localStorage", async () => {
|
|
vi.stubGlobal("localStorage", undefined);
|
|
const shareAction = await load();
|
|
|
|
shareAction.value = "open";
|
|
flushSync();
|
|
|
|
expect(shareAction.value).toBe("open");
|
|
});
|