fix/test: clean up split-brain noise and add openrouter-status tests
- buildSplitBrainFixHints: skip artifact hint when skills db is down (mirror of same fix to collectSplitBrainIssues) - Add test asserting no duplicate artifact/db hints when db is missing - Add openrouter-status.test.ts covering all formatOpenRouterStatusLine branches (missing, unknown, error, ok with and without field combos) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --- Build: pass | Tests: pass — Tests 2061 passed (2061)
This commit is contained in:
parent
a1f37c57a4
commit
3fbddcd73b
3 changed files with 65 additions and 1 deletions
54
src/openrouter-status.test.ts
Normal file
54
src/openrouter-status.test.ts
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { formatOpenRouterStatusLine } from './openrouter-status.js';
|
||||
|
||||
describe('formatOpenRouterStatusLine', () => {
|
||||
it('reports missing when key is absent', () => {
|
||||
expect(formatOpenRouterStatusLine({ status: 'missing' })).toBe('OpenRouter: missing key');
|
||||
});
|
||||
|
||||
it('reports unknown when status is unknown', () => {
|
||||
expect(formatOpenRouterStatusLine({ status: 'unknown' })).toBe('OpenRouter: unknown');
|
||||
});
|
||||
|
||||
it('reports error message when status is error', () => {
|
||||
expect(formatOpenRouterStatusLine({ status: 'error', error: 'http_401' })).toBe(
|
||||
'OpenRouter: http_401',
|
||||
);
|
||||
});
|
||||
|
||||
it('reports ok with no details when ok but all fields absent', () => {
|
||||
expect(formatOpenRouterStatusLine({ status: 'ok' })).toBe('OpenRouter: ok');
|
||||
});
|
||||
|
||||
it('includes remaining balance when present', () => {
|
||||
const line = formatOpenRouterStatusLine({ status: 'ok', remainingUsd: 4.5 });
|
||||
expect(line).toContain('$4.50 remaining');
|
||||
});
|
||||
|
||||
it('includes limit when present', () => {
|
||||
const line = formatOpenRouterStatusLine({ status: 'ok', limitUsd: 10.0 });
|
||||
expect(line).toContain('$10.00 limit');
|
||||
});
|
||||
|
||||
it('includes free-tier label when isFreeTier is true', () => {
|
||||
const line = formatOpenRouterStatusLine({ status: 'ok', isFreeTier: true });
|
||||
expect(line).toContain('free-tier');
|
||||
});
|
||||
|
||||
it('combines all fields with dots', () => {
|
||||
const line = formatOpenRouterStatusLine({
|
||||
status: 'ok',
|
||||
remainingUsd: 3.25,
|
||||
limitUsd: 10.0,
|
||||
isFreeTier: false,
|
||||
});
|
||||
expect(line).toBe('OpenRouter: $3.25 remaining · $10.00 limit');
|
||||
});
|
||||
|
||||
it('omits undefined numeric fields from output', () => {
|
||||
const line = formatOpenRouterStatusLine({ status: 'ok', remainingUsd: 2.0 });
|
||||
expect(line).not.toContain('limit');
|
||||
expect(line).not.toContain('free-tier');
|
||||
});
|
||||
});
|
||||
|
|
@ -129,4 +129,14 @@ describe('buildSplitBrainFixHints', () => {
|
|||
const hints = buildSplitBrainFixHints({ ...readyStatus(), skillsRuntimeLookup: 'missing' });
|
||||
expect(hints).toContain('Restore runtime lookup: just setup -- --step skills-init');
|
||||
});
|
||||
|
||||
it('does not emit an artifact hint when skills db is down (unavailable is implied by the db hint)', () => {
|
||||
const hints = buildSplitBrainFixHints({
|
||||
...readyStatus(),
|
||||
skillsDb: 'missing',
|
||||
skillsArtifact: 'unavailable',
|
||||
});
|
||||
expect(hints).toContain('Fix skills DB: check PostgreSQL, then run: just setup-db');
|
||||
expect(hints).not.toContain('Refresh knowledge artifact: just setup -- --step skills-memory');
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -234,7 +234,7 @@ export function buildSplitBrainFixHints(status: SplitBrainStatus): string[] {
|
|||
if (status.memoryDb !== 'available') {
|
||||
hints.push('Fix memory DB: check PostgreSQL, then run: just setup-db');
|
||||
}
|
||||
if (status.skillsArtifact !== 'ready') {
|
||||
if (status.skillsArtifact !== 'ready' && status.skillsArtifact !== 'unavailable') {
|
||||
if (
|
||||
status.skillsArtifactSql !== 'present' ||
|
||||
status.skillsArtifactMetadata !== 'present'
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue