/** * @jest-environment node */ import { GET } from '../projects/route'; import { getProjects } from '@/lib/fs-utils'; jest.mock('@/lib/fs-utils'); jest.mock('@/lib/project-utils', () => ({ getProjectDisplayName: jest.fn((name) => name === 'FT' ? '外放构建' : name), })); describe('/api/projects', () => { beforeEach(() => { jest.clearAllMocks(); }); it('should return projects with display names', async () => { (getProjects as jest.Mock).mockResolvedValue(['FT', 'FT_DEV', 'UNKNOWN']); const response = await GET(); const data = await response.json(); expect(response.status).toBe(200); expect(data).toEqual([ { name: 'FT', displayName: '外放构建' }, { name: 'FT_DEV', displayName: 'FT_DEV' }, { name: 'UNKNOWN', displayName: 'UNKNOWN' }, ]); }); it('should handle errors gracefully', async () => { (getProjects as jest.Mock).mockRejectedValue(new Error('File system error')); const response = await GET(); const data = await response.json(); expect(response.status).toBe(500); expect(data.error).toBe('Failed to fetch projects'); }); });