test(router): tighten routing and telemetry assertions
This commit is contained in:
parent
3cc35e2b51
commit
b7c8e4fbef
@ -2,7 +2,7 @@
|
||||
* Tests for GET /api/health (tracker dashboard)
|
||||
*/
|
||||
|
||||
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
||||
import { describe, it, expect, afterEach } from 'vitest';
|
||||
|
||||
import { GET } from '@/app/api/health/route';
|
||||
|
||||
@ -23,8 +23,14 @@ describe('GET /api/health', () => {
|
||||
const data = await res.json();
|
||||
expect(data.status).toBe('ok');
|
||||
expect(data.service).toBe('tracker-dashboard');
|
||||
expect(data.timestamp).toBeDefined();
|
||||
expect(data.checks).toBeInstanceOf(Array);
|
||||
expect(data.timestamp).toMatch(/^\d{4}-\d{2}-\d{2}T/);
|
||||
expect(data.checks).toEqual([
|
||||
{
|
||||
name: 'env',
|
||||
status: 'pass',
|
||||
message: '3 required vars set',
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it('returns degraded when env vars are missing', async () => {
|
||||
@ -36,6 +42,7 @@ describe('GET /api/health', () => {
|
||||
expect(res.status).toBe(503);
|
||||
const data = await res.json();
|
||||
expect(data.status).toBe('degraded');
|
||||
expect(data.service).toBe('tracker-dashboard');
|
||||
expect(data.checks[0].status).toBe('fail');
|
||||
expect(data.checks[0].message).toContain('Missing');
|
||||
});
|
||||
|
||||
@ -69,10 +69,10 @@ describe('trackEvent', () => {
|
||||
expect(event.eventType).toBe('info');
|
||||
expect(event.module).toBe('tracker');
|
||||
expect(event.eventName).toBe('item_created');
|
||||
expect(event.id).toBeDefined();
|
||||
expect(event.sessionId).toBeDefined();
|
||||
expect(event.anonymousInstallId).toBeDefined();
|
||||
expect(event.occurredAt).toBeDefined();
|
||||
expect(event.id).toBe('550e8400-e29b-41d4-a716-446655440000');
|
||||
expect(typeof event.sessionId).toBe('string');
|
||||
expect(event.anonymousInstallId).toBe('550e8400-e29b-41d4-a716-446655440000');
|
||||
expect(event.occurredAt).toMatch(/^\d{4}-\d{2}-\d{2}T/);
|
||||
});
|
||||
|
||||
it('includes optional fields when provided', () => {
|
||||
@ -171,7 +171,12 @@ describe('initTelemetry', () => {
|
||||
const sessionEvent = payload.events.find(
|
||||
(e: Record<string, string>) => e.eventName === 'session_started'
|
||||
);
|
||||
expect(sessionEvent).toBeDefined();
|
||||
expect(sessionEvent.module).toBe('app_lifecycle');
|
||||
expect(sessionEvent).toEqual(
|
||||
expect.objectContaining({
|
||||
module: 'app_lifecycle',
|
||||
eventType: 'info',
|
||||
eventName: 'session_started',
|
||||
})
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@ -92,8 +92,8 @@ describe('LlmRouter', () => {
|
||||
|
||||
expect(result.response.choices[0]!.message.content).toBe('Hello!');
|
||||
expect(result.attempts).toBe(1);
|
||||
expect(result.provider).toBeDefined();
|
||||
expect(result.model).toBeDefined();
|
||||
expect(result.provider).toBe('test-fast');
|
||||
expect(result.model).toBe('fast-model');
|
||||
});
|
||||
|
||||
it('retries on 429 with fallback provider', async () => {
|
||||
@ -233,8 +233,13 @@ describe('LlmRouter', () => {
|
||||
await router.chat({ messages: [{ role: 'user', content: 'Hello' }] });
|
||||
|
||||
const health = router.getHealth();
|
||||
expect(health.length).toBeGreaterThan(0);
|
||||
expect(health[0]!.successes).toBe(1);
|
||||
expect(health).toContainEqual(
|
||||
expect.objectContaining({
|
||||
provider: 'test-fast',
|
||||
model: 'fast-model',
|
||||
successes: 1,
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
it('lists available providers', () => {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user