Skip to content
Source
Sign inSign up

mediaReference.test.ts

28 lines1.2 KB

1import { describe, expect, it } from "vite-plus/test";
2​
3import { mediaFileReference, mediaReferenceFileName } from "./mediaReference.ts";
4​
5describe("mediaFileReference", () => {
6 it.each([
7 ["/work/project/./media/../clip.mp4", "/work/project/", "clip.mp4"],
8 ["/work/project-other/clip.mp4", "/work/project", undefined],
9 ["C:\\WORK\\project\\media\\..\\Clip.mp4", "c:/work/project/", "Clip.mp4"],
10 ["\\\\Server\\Share\\Project\\Clip.mp4", "//server/share/project", "Clip.mp4"],
11 ])("preserves %s and only labels paths inside %s as relative", (path, root, relativePath) => {
12 expect(mediaFileReference(path, root)).toEqual({
13 kind: "file",
14 path,
15 ...(relativePath === undefined ? {} : { relativePath }),
16 });
17 });
18});
19​
20describe("mediaReferenceFileName", () => {
21 it.each([
22 [{ kind: "file", path: "/tmp/take\\one%20.mp4" }, "take\\one%20.mp4"],
23 [{ kind: "url", url: "//cdn.example/clip%20one%2Emp4?sig=a+b#t=2" }, "clip one.mp4"],
24 [{ kind: "url", url: "https://cdn.example/clip%20%oops.mp4" }, "clip%20%oops.mp4"],
25 ] as const)("preserves filename semantics for %j", (reference, name) => {
26 expect(mediaReferenceFileName(reference)).toBe(name);
27 });
28});