diff --git a/app/api/__tests__/apks.test.ts b/app/api/__tests__/apks.test.ts index 8491242..838a31c 100644 --- a/app/api/__tests__/apks.test.ts +++ b/app/api/__tests__/apks.test.ts @@ -70,4 +70,52 @@ describe('/api/apks', () => { expect(response.status).toBe(500); expect(data.error).toBe('Failed to fetch APK files'); }); + + it('should filter APKs by commitId parameter', async () => { + const mockApks = [ + { + name: 'ft_timeshift_0_42_57ef3a60d.apk', + size: 15728640, + modifiedAt: new Date('2026-03-04T14:30:00Z'), + }, + { + name: 'ft_0_42_ff9ff3441.apk', + size: 15728640, + modifiedAt: new Date('2026-03-04T14:30:00Z'), + }, + { + name: 'ft_0_42_abc1234.apk', + size: 15728640, + modifiedAt: new Date('2026-03-04T14:30:00Z'), + }, + ]; + + const filteredApks = [ + mockApks[1], + ]; + + (getApks as jest.Mock).mockImplementation((project, version, commitId) => { + if (commitId === 'ff9ff3441') { + return Promise.resolve(filteredApks); + } + return Promise.resolve(mockApks); + }); + + (parseApkFilename as jest.Mock) + .mockReturnValue({ environment: 'product', commit: 'ff9ff3441', isValid: true }); + + const request = new Request('http://localhost:3000/api/apks?project=FT&version=0_42&commit=ff9ff3441'); + const response = await GET(request); + const data = await response.json(); + + expect(response.status).toBe(200); + expect(data).toHaveLength(1); + expect(data[0]).toMatchObject({ + name: 'ft_0_42_ff9ff3441.apk', + environment: 'product', + commit: 'ff9ff3441', + }); + + expect(getApks).toHaveBeenCalledWith('FT', '0_42', 'ff9ff3441'); + }); }); diff --git a/app/api/apks/route.ts b/app/api/apks/route.ts index 7d08037..3d86c1a 100644 --- a/app/api/apks/route.ts +++ b/app/api/apks/route.ts @@ -21,7 +21,8 @@ export async function GET(request: Request) { const apksWithMetadata = apks.map(apk => { const parsed = parseApkFilename(apk.name); return { - ...apk, + name: apk.name, + size: apk.size, environment: parsed.environment, commit: parsed.commit, modifiedAt: apk.modifiedAt.toISOString(),