integration tests
This commit is contained in:
92
tests/integration/race/import-results.integration.test.ts
Normal file
92
tests/integration/race/import-results.integration.test.ts
Normal file
@@ -0,0 +1,92 @@
|
||||
/**
|
||||
* Integration Test: Race Results Import API
|
||||
*
|
||||
* Tests the race results import endpoint with various scenarios.
|
||||
*/
|
||||
|
||||
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
||||
import { ApiClient } from '../harness/api-client';
|
||||
import { DockerManager } from '../harness/docker-manager';
|
||||
|
||||
describe('Race Results Import - API Integration', () => {
|
||||
let api: ApiClient;
|
||||
let docker: DockerManager;
|
||||
|
||||
beforeAll(async () => {
|
||||
docker = DockerManager.getInstance();
|
||||
await docker.start();
|
||||
|
||||
api = new ApiClient({ baseUrl: 'http://localhost:3101', timeout: 60000 });
|
||||
await api.waitForReady();
|
||||
}, 120000);
|
||||
|
||||
afterAll(async () => {
|
||||
docker.stop();
|
||||
}, 30000);
|
||||
|
||||
it('should return 404 for non-existent race', async () => {
|
||||
const nonExistentRaceId = 'non-existent-race-123';
|
||||
const results = [
|
||||
{
|
||||
driverId: 'driver-1',
|
||||
position: 1,
|
||||
fastestLap: 100,
|
||||
incidents: 0,
|
||||
startPosition: 1,
|
||||
},
|
||||
];
|
||||
|
||||
await expect(
|
||||
api.post(`/races/${nonExistentRaceId}/import-results`, {
|
||||
resultsFileContent: JSON.stringify(results),
|
||||
raceId: nonExistentRaceId,
|
||||
})
|
||||
).rejects.toThrow();
|
||||
});
|
||||
|
||||
it('should handle invalid JSON gracefully', async () => {
|
||||
const raceId = 'test-race-1';
|
||||
|
||||
await expect(
|
||||
api.post(`/races/${raceId}/import-results`, {
|
||||
resultsFileContent: 'invalid json {',
|
||||
raceId,
|
||||
})
|
||||
).rejects.toThrow();
|
||||
});
|
||||
|
||||
it('should reject empty results array', async () => {
|
||||
const raceId = 'test-race-1';
|
||||
const emptyResults: any[] = [];
|
||||
|
||||
await expect(
|
||||
api.post(`/races/${raceId}/import-results`, {
|
||||
resultsFileContent: JSON.stringify(emptyResults),
|
||||
raceId,
|
||||
})
|
||||
).rejects.toThrow();
|
||||
});
|
||||
|
||||
it('should handle missing required fields', async () => {
|
||||
const raceId = 'test-race-1';
|
||||
const invalidResults = [
|
||||
{
|
||||
// Missing required fields
|
||||
driverId: 'driver-1',
|
||||
position: 1,
|
||||
},
|
||||
];
|
||||
|
||||
await expect(
|
||||
api.post(`/races/${raceId}/import-results`, {
|
||||
resultsFileContent: JSON.stringify(invalidResults),
|
||||
raceId,
|
||||
})
|
||||
).rejects.toThrow();
|
||||
});
|
||||
|
||||
it('should verify API health endpoint works', async () => {
|
||||
const isHealthy = await api.health();
|
||||
expect(isHealthy).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user