| | |
| | | import test, { describe } from "node:test" |
| | | import * as path from "./path" |
| | | import assert from "node:assert" |
| | | import { FullSlug, TransformOptions } from "./path" |
| | | import { FullSlug, TransformOptions, SimpleSlug } from "./path" |
| | | |
| | | describe("typeguards", () => { |
| | | test("isSimpleSlug", () => { |
| | |
| | | assert(!path.isRelativeURL("./abc/def.md")) |
| | | }) |
| | | |
| | | test("isAbsoluteURL", () => { |
| | | assert(path.isAbsoluteURL("https://example.com")) |
| | | assert(path.isAbsoluteURL("http://example.com")) |
| | | assert(path.isAbsoluteURL("ftp://example.com/a/b/c")) |
| | | assert(path.isAbsoluteURL("http://host/%25")) |
| | | assert(path.isAbsoluteURL("file://host/twoslashes?more//slashes")) |
| | | |
| | | assert(!path.isAbsoluteURL("example.com/abc/def")) |
| | | assert(!path.isAbsoluteURL("abc")) |
| | | }) |
| | | |
| | | test("isFullSlug", () => { |
| | | assert(path.isFullSlug("index")) |
| | | assert(path.isFullSlug("abc/def")) |
| | |
| | | ["index.md", "index"], |
| | | ["test.mp4", "test.mp4"], |
| | | ["note with spaces.md", "note-with-spaces"], |
| | | ["notes.with.dots.md", "notes.with.dots"], |
| | | ["test/special chars?.md", "test/special-chars"], |
| | | ["test/special chars #3.md", "test/special-chars-3"], |
| | | ["cool/what about r&d?.md", "cool/what-about-r-and-d"], |
| | | ], |
| | | path.slugifyFilePath, |
| | | path.isFilePath, |
| | |
| | | path.isRelativeURL, |
| | | ) |
| | | }) |
| | | |
| | | test("joinSegments", () => { |
| | | assert.strictEqual(path.joinSegments("a", "b"), "a/b") |
| | | assert.strictEqual(path.joinSegments("a/", "b"), "a/b") |
| | | assert.strictEqual(path.joinSegments("a", "b/"), "a/b/") |
| | | assert.strictEqual(path.joinSegments("a/", "b/"), "a/b/") |
| | | |
| | | // preserve leading and trailing slashes |
| | | assert.strictEqual(path.joinSegments("/a", "b"), "/a/b") |
| | | assert.strictEqual(path.joinSegments("/a/", "b"), "/a/b") |
| | | assert.strictEqual(path.joinSegments("/a", "b/"), "/a/b/") |
| | | assert.strictEqual(path.joinSegments("/a/", "b/"), "/a/b/") |
| | | |
| | | // lone slash |
| | | assert.strictEqual(path.joinSegments("/a/", "b", "/"), "/a/b/") |
| | | assert.strictEqual(path.joinSegments("a/", "b" + "/"), "a/b/") |
| | | |
| | | // works with protocol specifiers |
| | | assert.strictEqual(path.joinSegments("https://example.com", "a"), "https://example.com/a") |
| | | assert.strictEqual(path.joinSegments("https://example.com/", "a"), "https://example.com/a") |
| | | assert.strictEqual(path.joinSegments("https://example.com", "a/"), "https://example.com/a/") |
| | | assert.strictEqual(path.joinSegments("https://example.com/", "a/"), "https://example.com/a/") |
| | | }) |
| | | }) |
| | | |
| | | describe("link strategies", () => { |
| | |
| | | }) |
| | | }) |
| | | }) |
| | | |
| | | describe("resolveRelative", () => { |
| | | test("from index", () => { |
| | | assert.strictEqual(path.resolveRelative("index" as FullSlug, "index" as FullSlug), "./") |
| | | assert.strictEqual(path.resolveRelative("index" as FullSlug, "abc" as FullSlug), "./abc") |
| | | assert.strictEqual( |
| | | path.resolveRelative("index" as FullSlug, "abc/def" as FullSlug), |
| | | "./abc/def", |
| | | ) |
| | | assert.strictEqual( |
| | | path.resolveRelative("index" as FullSlug, "abc/def/ghi" as FullSlug), |
| | | "./abc/def/ghi", |
| | | ) |
| | | }) |
| | | |
| | | test("from nested page", () => { |
| | | assert.strictEqual(path.resolveRelative("abc/def" as FullSlug, "index" as FullSlug), "../") |
| | | assert.strictEqual(path.resolveRelative("abc/def" as FullSlug, "abc" as FullSlug), "../abc") |
| | | assert.strictEqual( |
| | | path.resolveRelative("abc/def" as FullSlug, "abc/def" as FullSlug), |
| | | "../abc/def", |
| | | ) |
| | | assert.strictEqual( |
| | | path.resolveRelative("abc/def" as FullSlug, "ghi/jkl" as FullSlug), |
| | | "../ghi/jkl", |
| | | ) |
| | | }) |
| | | |
| | | test("with index paths", () => { |
| | | assert.strictEqual(path.resolveRelative("abc/index" as FullSlug, "index" as FullSlug), "../") |
| | | assert.strictEqual( |
| | | path.resolveRelative("abc/def/index" as FullSlug, "index" as FullSlug), |
| | | "../../", |
| | | ) |
| | | assert.strictEqual(path.resolveRelative("index" as FullSlug, "abc/index" as FullSlug), "./abc/") |
| | | assert.strictEqual( |
| | | path.resolveRelative("abc/def" as FullSlug, "abc/index" as FullSlug), |
| | | "../abc/", |
| | | ) |
| | | }) |
| | | |
| | | test("with simple slugs", () => { |
| | | assert.strictEqual(path.resolveRelative("abc/def" as FullSlug, "" as SimpleSlug), "../") |
| | | assert.strictEqual(path.resolveRelative("abc/def" as FullSlug, "ghi" as SimpleSlug), "../ghi") |
| | | assert.strictEqual(path.resolveRelative("abc/def" as FullSlug, "ghi/" as SimpleSlug), "../ghi/") |
| | | }) |
| | | }) |