mirror of
https://github.com/morluto/rea
synced 2026-10-26 06:16:17 -04:00
41 lines
1.7 KiB
TypeScript
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"]);
|
|
},
|
|
);
|