Files
radicle-explorer/tests/unit/router.test.ts
T
2023-06-01 10:09:12 +02:00

99 lines
2.9 KiB
TypeScript

import { describe, expect, test } from "vitest";
import { testExports } from "@app/lib/router";
// Defining the window.origin value, since vitest doesn't provide one.
window.origin = "http://localhost:3000";
describe("isOid", () => {
test.each([
{ oid: "a64ae9c6d572e0ad906faa9a4a7a8d43f113278c", expected: true },
{ oid: "a64ae9c", expected: false },
])("isOid $oid => $expected", ({ oid, expected }) => {
expect(testExports.isOid(oid)).toEqual(expected);
});
});
describe("routeToPath", () => {
test.each([
{ input: { resource: "home" }, output: "/", description: "Home Route" },
{
input: {
resource: "seeds",
params: { hostnamePort: "willow.radicle.garden" },
},
output: "/seeds/willow.radicle.garden",
description: "Seed View Route",
},
{
input: {
resource: "projects",
params: {
view: { resource: "tree" },
hostnamePort: "willow.radicle.garden",
id: "rad:zKtT7DmF9H34KkvcKj9PHW19WzjT",
},
},
output: "/seeds/willow.radicle.garden/rad:zKtT7DmF9H34KkvcKj9PHW19WzjT",
description: "Seed Project Route",
},
])("$description", (route: any) => {
expect(testExports.routeToPath(route.input)).toEqual(route.output);
});
});
describe("pathToRoute", () => {
test.each([
{ input: "", output: null, description: "Empty not found Route" },
{
input: "/foo/baz/bar",
output: null,
description: "Non existant not found route",
},
{ input: "/", output: { resource: "home" }, description: "Home Route" },
{
input: "/seeds/willow.radicle.garden",
output: {
resource: "seeds",
params: { hostnamePort: "willow.radicle.garden", projectPageIndex: 0 },
},
description: "Seed View Route",
},
{
input: "/seeds/willow.radicle.garden/rad:zKtT7DmF9H34KkvcKj9PHW19WzjT/",
output: {
resource: "projects",
params: {
view: { resource: "tree" },
hostnamePort: "willow.radicle.garden",
profile: undefined,
peer: undefined,
id: "rad:zKtT7DmF9H34KkvcKj9PHW19WzjT",
},
},
description: "Seed Project Route w trailing slash",
},
{
input:
"/seeds/willow.radicle.garden/rad:zKtT7DmF9H34KkvcKj9PHW19WzjT/nope",
output: null,
description: "Seed Project Route w undefined suffix",
},
{
input: "/seeds/willow.radicle.garden/rad:zKtT7DmF9H34KkvcKj9PHW19WzjT",
output: {
resource: "projects",
params: {
view: { resource: "tree" },
hostnamePort: "willow.radicle.garden",
profile: undefined,
peer: undefined,
id: "rad:zKtT7DmF9H34KkvcKj9PHW19WzjT",
},
},
description: "Seed Project Route w/o trailing slash",
},
])("$description", (route: any) => {
expect(testExports.pathToRoute(route.input)).toEqual(route.output);
});
});