50 lines
2.0 KiB
TypeScript
50 lines
2.0 KiB
TypeScript
/**
|
|
* Unit tests for the "Test all destinations" tally. Regression guard: the toast used
|
|
* to report needs-init repos as "failed" (a reachable-but-uninitialized repo counted
|
|
* as a failure), producing "6 failed, 4 passed" when 5 of the 6 only needed init.
|
|
*/
|
|
import { describe, test, expect } from 'bun:test';
|
|
import { summarizeTestResults, formatTestSummary } from '../src/lib/utils/backup-test-summary';
|
|
|
|
describe('summarizeTestResults', () => {
|
|
test('counts the three outcomes separately', () => {
|
|
expect(summarizeTestResults(['success', 'success', 'needs_init', 'failed', 'needs_init']))
|
|
.toEqual({ passed: 2, failed: 1, needsInit: 2 });
|
|
});
|
|
|
|
test('needs_init is never counted as failed (the bug)', () => {
|
|
const c = summarizeTestResults(['needs_init', 'needs_init', 'needs_init', 'needs_init', 'needs_init', 'failed', 'success', 'success', 'success', 'success']);
|
|
expect(c).toEqual({ passed: 4, failed: 1, needsInit: 5 });
|
|
});
|
|
|
|
test('empty input yields all zeroes', () => {
|
|
expect(summarizeTestResults([])).toEqual({ passed: 0, failed: 0, needsInit: 0 });
|
|
});
|
|
});
|
|
|
|
describe('formatTestSummary', () => {
|
|
test('all passed -> success', () => {
|
|
const r = formatTestSummary({ passed: 3, failed: 0, needsInit: 0 });
|
|
expect(r.severity).toBe('success');
|
|
expect(r.text).toContain('3');
|
|
});
|
|
|
|
test('only needs-init (no real failures) -> warning', () => {
|
|
const r = formatTestSummary({ passed: 4, failed: 0, needsInit: 5 });
|
|
expect(r.severity).toBe('warning');
|
|
expect(r.text).toBe('4 passed, 5 need init');
|
|
});
|
|
|
|
test('any real failure -> error, includes all buckets present', () => {
|
|
const r = formatTestSummary({ passed: 4, failed: 1, needsInit: 5 });
|
|
expect(r.severity).toBe('error');
|
|
expect(r.text).toBe('4 passed, 1 failed, 5 need init');
|
|
});
|
|
|
|
test('failures without needs-init -> error, no "need init" clause', () => {
|
|
const r = formatTestSummary({ passed: 2, failed: 3, needsInit: 0 });
|
|
expect(r.severity).toBe('error');
|
|
expect(r.text).toBe('2 passed, 3 failed');
|
|
});
|
|
});
|