Skip to article
Documentation

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);
});