mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-10-09 03:17:54 +00:00
54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
import { describe, it, expect, beforeAll } from 'vitest';
|
|
import path from 'path';
|
|
import {
|
|
FIXTURES, getRelationships, getNodesByLabel, edgeSet,
|
|
runPipelineFromRepo, type PipelineResult,
|
|
} from './helpers.js';
|
|
|
|
describe('Next.js route mapping', () => {
|
|
let result: PipelineResult;
|
|
|
|
beforeAll(async () => {
|
|
result = await runPipelineFromRepo(
|
|
path.join(FIXTURES, 'nextjs-route-mapping'),
|
|
() => {},
|
|
);
|
|
}, 60000);
|
|
|
|
it('creates Route nodes for API endpoints', () => {
|
|
const routes = getNodesByLabel(result, 'Route');
|
|
expect(routes).toContain('/api/grants');
|
|
expect(routes).toContain('/api/organizations/[slug]/grants');
|
|
});
|
|
|
|
it('creates HANDLES_ROUTE edge from route file to Route node', () => {
|
|
const edges = getRelationships(result, 'HANDLES_ROUTE');
|
|
expect(edges.length).toBeGreaterThanOrEqual(2);
|
|
const grantsRoute = edges.find(e => e.target === '/api/grants');
|
|
expect(grantsRoute).toBeDefined();
|
|
expect(grantsRoute!.sourceFilePath).toContain('app/api/grants/route.ts');
|
|
});
|
|
|
|
it('creates FETCHES edge from consumer to Route node', () => {
|
|
const edges = getRelationships(result, 'FETCHES');
|
|
const fetchEdge = edges.find(e =>
|
|
e.sourceFilePath.includes('useGrants') && e.target === '/api/grants'
|
|
);
|
|
expect(fetchEdge).toBeDefined();
|
|
});
|
|
|
|
it('creates Route nodes for PHP API endpoints', () => {
|
|
const routes = getNodesByLabel(result, 'Route');
|
|
expect(routes).toContain('/api/upload');
|
|
expect(routes).toContain('/api/status');
|
|
});
|
|
|
|
it('matches dynamic route segments', () => {
|
|
const edges = getRelationships(result, 'FETCHES');
|
|
const dynamicFetch = edges.find(e =>
|
|
e.sourceFilePath.includes('GrantsList')
|
|
);
|
|
expect(dynamicFetch).toBeDefined();
|
|
expect(dynamicFetch!.target).toBe('/api/organizations/[slug]/grants');
|
|
});
|
|
});
|