Files
YGChatCS/scripts/check-long-text-guide-detail-routes.mjs

42 lines
1.5 KiB
JavaScript

import assert from "node:assert/strict";
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
import {
DETAIL_ROUTE_BY_TYPE,
getLongTextGuideDetailRoute,
} from "../src/pages/ChatModule/LongTextGuideCardPreview/detailRoutes.mjs";
const dirname = path.dirname(fileURLToPath(import.meta.url));
const rootDir = path.resolve(dirname, "..");
const expectedRoutes = {
longTextCard: "/pages/ChatModule/LongTextGuideCardPreview/guide",
longTextCardScenicSpot: "/pages/ChatModule/LongTextGuideCardPreview/poi",
longTextCardRoute: "/pages/ChatModule/LongTextGuideCardPreview/route",
longTextCardSnap: "/pages/ChatModule/LongTextGuideCardPreview/photo",
longTextCardFullDoc: "/pages/ChatModule/LongTextGuideCardPreview/fullDoc",
};
assert.deepEqual(DETAIL_ROUTE_BY_TYPE, expectedRoutes);
for (const [type, route] of Object.entries(expectedRoutes)) {
assert.equal(getLongTextGuideDetailRoute(type), route);
const pageFile = path.join(rootDir, "src", `${route.replace(/^\//, "")}.vue`);
assert.ok(fs.existsSync(pageFile), `Missing page file for ${type}: ${pageFile}`);
}
const pagesJson = JSON.parse(
fs.readFileSync(path.join(rootDir, "src/pages.json"), "utf8"),
);
const registeredPages = new Set(pagesJson.pages.map((item) => item.path));
for (const route of Object.values(expectedRoutes)) {
assert.ok(
registeredPages.has(route.replace(/^\//, "")),
`Route is not registered in src/pages.json: ${route}`,
);
}