Files
rea/tests/acceptance/applications/javascriptRouteAndRpcIdentity.test.ts
T

41 lines
1.7 KiB
TypeScript

import { expect } from "vitest";
import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js";
import { cliTest } from "../../support/cli/cliFixture.js";
import { analyzeJavaScriptDirectory } from "../../support/cli/javascriptApplication.js";
import { writeFixtureFiles } from "../../support/javascriptApplicationFixture.js";
cliTest.for(["CLI", "stdio MCP"] as const)(
"preserves route flags and lexical RPC names through %s",
async (surface, { cli }) => {
const root = await createTestTempDirectory("rea-route-rpc-identity-");
await writeFixtureFiles(root, {
"entry.ts": `
const INDEX=true;
createBrowserRouter([{index:INDEX,Component:Home}, {path:'/wrapped',children:[{index:(true as const),Component:Home}]}]);
function clientScope() {
const history=createTRPCClient({links:[httpBatchLink({url:'/api/trpc'})]});
history.archive.query();history.history.list.query();
navigator.permissions.query({name:'geolocation'});
api.endpoints.list.useQuery();
}
`,
});
const result = await analyzeJavaScriptDirectory(surface, cli, root);
expect(result.statistics.parse_failures).toBe(0);
expect(result.route_inventory?.routes.map(({ path }) => path)).toEqual([
"/",
"/wrapped",
]);
const operations = result.graph.nodes
.filter(({ kind }) => kind === "endpoint")
.flatMap(({ observations }) => observations)
.filter(
({ properties }) => properties.mechanism === "trpc:procedure:query",
)
.map(({ properties }) => properties.value)
.sort();
expect(operations).toEqual(["archive", "history.list"]);
},
);