UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

99 lines (98 loc) 4.31 kB
var import_vitest = require("vitest"); class ReadOnlyURLSearchParams extends URLSearchParams { set(_name, _value) { throw new Error("useSearchParams returns a read-only URLSearchParams object"); } append(_name, _value) { throw new Error("useSearchParams returns a read-only URLSearchParams object"); } delete(_name, _value) { throw new Error("useSearchParams returns a read-only URLSearchParams object"); } } (0, import_vitest.describe)("ReadOnlyURLSearchParams", () => { (0, import_vitest.it)("should allow reading values", () => { const params = new ReadOnlyURLSearchParams([ ["sort", "price"], ["category", "electronics"] ]); (0, import_vitest.expect)(params.get("sort")).toBe("price"), (0, import_vitest.expect)(params.get("category")).toBe("electronics"), (0, import_vitest.expect)(params.get("nonexistent")).toBe(null); }), (0, import_vitest.it)("should support has()", () => { const params = new ReadOnlyURLSearchParams([["key", "value"]]); (0, import_vitest.expect)(params.has("key")).toBe(!0), (0, import_vitest.expect)(params.has("missing")).toBe(!1); }), (0, import_vitest.it)("should support getAll() for repeated params", () => { const params = new ReadOnlyURLSearchParams([ ["tag", "a"], ["tag", "b"], ["tag", "c"] ]); (0, import_vitest.expect)(params.getAll("tag")).toEqual(["a", "b", "c"]); }), (0, import_vitest.it)("should support iteration", () => { const params = new ReadOnlyURLSearchParams([ ["a", "1"], ["b", "2"] ]), entries = Array.from(params.entries()); (0, import_vitest.expect)(entries).toEqual([ ["a", "1"], ["b", "2"] ]); }), (0, import_vitest.it)("should support toString()", () => { const params = new ReadOnlyURLSearchParams([ ["sort", "price"], ["page", "1"] ]); (0, import_vitest.expect)(params.toString()).toBe("sort=price&page=1"); }), (0, import_vitest.it)("should throw on set()", () => { const params = new ReadOnlyURLSearchParams([["key", "value"]]); (0, import_vitest.expect)(() => params.set("key", "new")).toThrow( "useSearchParams returns a read-only URLSearchParams object" ); }), (0, import_vitest.it)("should throw on append()", () => { const params = new ReadOnlyURLSearchParams([["key", "value"]]); (0, import_vitest.expect)(() => params.append("key", "another")).toThrow( "useSearchParams returns a read-only URLSearchParams object" ); }), (0, import_vitest.it)("should throw on delete()", () => { const params = new ReadOnlyURLSearchParams([["key", "value"]]); (0, import_vitest.expect)(() => params.delete("key")).toThrow( "useSearchParams returns a read-only URLSearchParams object" ); }); }); (0, import_vitest.describe)("useSearchParams param conversion", () => { function paramsToEntries(params) { return Object.entries(params).flatMap(([key, value]) => value === void 0 ? [] : Array.isArray(value) ? value.map((v) => [key, String(v)]) : [[key, String(value)]]); } (0, import_vitest.it)("should convert simple string params", () => { const entries = paramsToEntries({ sort: "price", page: "1" }); (0, import_vitest.expect)(entries).toEqual([ ["sort", "price"], ["page", "1"] ]); }), (0, import_vitest.it)("should expand array params into multiple entries", () => { const entries = paramsToEntries({ tags: ["a", "b", "c"] }); (0, import_vitest.expect)(entries).toEqual([ ["tags", "a"], ["tags", "b"], ["tags", "c"] ]); }), (0, import_vitest.it)("should filter out undefined values", () => { const entries = paramsToEntries({ present: "yes", missing: void 0 }); (0, import_vitest.expect)(entries).toEqual([["present", "yes"]]); }), (0, import_vitest.it)("should handle mixed params", () => { const entries = paramsToEntries({ single: "value", multiple: ["x", "y"], absent: void 0 }); (0, import_vitest.expect)(entries).toEqual([ ["single", "value"], ["multiple", "x"], ["multiple", "y"] ]); }), (0, import_vitest.it)("should handle empty params", () => { const entries = paramsToEntries({}); (0, import_vitest.expect)(entries).toEqual([]); }); }); //# sourceMappingURL=hooks.test.js.map