sendou.ink/hooks/useMyRouter.test.ts
2021-06-16 22:40:08 +03:00

46 lines
1.5 KiB
TypeScript

import { adjustedSearchParams } from "./useMyRouter";
const TEST_URL = "https://sendou.ink/freeagents?xp=true&playstyle=MIDLINE";
describe("adjustedSearchParams", () => {
test("no changes return search params unchanged", () => {
const newParams = adjustedSearchParams(TEST_URL, []);
const newParamsObj = Object.fromEntries(Array.from(newParams.entries()));
expect(newParamsObj.xp).toBe("true");
expect(newParamsObj.playstyle).toBe("MIDLINE");
expect(Object.keys(newParamsObj).length).toBe(2);
});
test("adds search params while retaining old", () => {
const newParams = adjustedSearchParams(TEST_URL, [["test", "works"]]);
const newParamsObj = Object.fromEntries(Array.from(newParams.entries()));
expect(newParamsObj.xp).toBe("true");
expect(newParamsObj.playstyle).toBe("MIDLINE");
expect(newParamsObj.test).toBe("works");
expect(Object.keys(newParamsObj).length).toBe(3);
});
test("adds search params of number and boolean types", () => {
const newParams = adjustedSearchParams(TEST_URL, [
["number", 2],
["boolean", true],
]);
const newParamsObj = Object.fromEntries(Array.from(newParams.entries()));
expect(newParamsObj.number).toBe("2");
expect(newParamsObj.boolean).toBe("true");
});
test("falsy value removes the key", () => {
const newParams = adjustedSearchParams(TEST_URL, [
["xp", ""],
["playstyle", null],
]);
const newParamsObj = Object.fromEntries(Array.from(newParams.entries()));
expect(Object.keys(newParamsObj).length).toBe(0);
});
});