src/features/reviews/return-path.test.ts
Linked repository file from this build.
import { afterEach, beforeAll, expect, test } from "bun:test";
import { rememberPath, returnPath, RETURN_FALLBACK } from "./return-path";
const store = new Map<string, string>();
beforeAll(() => {
Object.defineProperty(globalThis, "sessionStorage", {
configurable: true,
value: {
getItem(key: string) {
return store.get(key) ?? null;
},
setItem(key: string, value: string) {
store.set(key, value);
},
clear() {
store.clear();
},
},
});
});
afterEach(() => {
store.clear();
});
test("Return uses the previous in-app path", () => {
rememberPath("/imports");
rememberPath("/reviews/2026:61999");
expect(returnPath()).toBe("/imports");
});
test("Return keeps search query from the previous page", () => {
rememberPath("/search?q=61999");
rememberPath("/reviews/2026:61999");
expect(returnPath()).toBe("/search?q=61999");
});
test("Return falls back to Home when this is the first page", () => {
rememberPath("/reviews/2026:61999");
expect(returnPath()).toBe(RETURN_FALLBACK);
});
test("Return ignores a stored path that is the current page", () => {
rememberPath("/inbox");
rememberPath("/reviews/2026:1");
sessionStorage.setItem("qccrm.return-path", "/reviews/2026:1");
expect(returnPath("/reviews/2026:1")).toBe(RETURN_FALLBACK);
});