one
Version:
One is a new React Framework that makes Vite serve both native and web.
70 lines (69 loc) • 2.49 kB
JavaScript
import path from "node:path";
import { describe, expect, it } from "vitest";
import { isPathInsideDirectory, isRouteFilePath, isRouteFileWatchEvent } from "./routeFileWatch.mjs";
describe(isRouteFilePath, () => {
it("matches route source files", () => {
expect(isRouteFilePath("/project/app/index.ts")).toBe(true);
expect(isRouteFilePath("/project/app/index.tsx")).toBe(true);
expect(isRouteFilePath("/project/app/index.js")).toBe(true);
expect(isRouteFilePath("/project/app/index.jsx")).toBe(true);
});
it("ignores non-route files", () => {
expect(isRouteFilePath("/project/app/tamagui.generated.css")).toBe(false);
expect(isRouteFilePath("/project/app/routes.d.ts")).toBe(false);
});
});
describe(isPathInsideDirectory, () => {
it("only matches real descendants of the router root", () => {
const routerRoot = path.resolve("/project/app");
expect(isPathInsideDirectory("/project/app/index.tsx", routerRoot)).toBe(true);
expect(isPathInsideDirectory("/project/app-copy/index.tsx", routerRoot)).toBe(false);
expect(isPathInsideDirectory("/project/app", routerRoot)).toBe(false);
});
});
describe(isRouteFileWatchEvent, () => {
const routerRoot = path.resolve("/project/app");
it("matches route file add and delete events", () => {
expect(isRouteFileWatchEvent({
event: "add",
filePath: "/project/app/index.tsx",
routerRoot
})).toBe(true);
expect(isRouteFileWatchEvent({
event: "delete",
filePath: "/project/app/nested/page.jsx",
routerRoot
})).toBe(true);
expect(isRouteFileWatchEvent({
event: "unlink",
filePath: "/project/app/nested/page.jsx",
routerRoot
})).toBe(true);
});
it("ignores non-route file add and delete events", () => {
expect(isRouteFileWatchEvent({
event: "add",
filePath: "/project/app/tamagui.generated.css",
routerRoot
})).toBe(false);
expect(isRouteFileWatchEvent({
event: "delete",
filePath: "/project/app/routes.d.ts",
routerRoot
})).toBe(false);
});
it("only matches change events when requested", () => {
expect(isRouteFileWatchEvent({
event: "change",
filePath: "/project/app/index.tsx",
routerRoot
})).toBe(false);
expect(isRouteFileWatchEvent({
event: "change",
filePath: "/project/app/index.tsx",
routerRoot,
includeChangeEvents: true
})).toBe(true);
});
});
//# sourceMappingURL=routeFileWatch.test.mjs.map