Files
code-review/app/main.test.js
T

50 lines
1.7 KiB
JavaScript

import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import fs from 'fs';
import os from 'os';
import path from 'path';
import { handleCriticalFindings, validateAndRepairJsonFile } from './main.js';
describe('main helpers', () => {
it('validateAndRepairJsonFile accepts valid JSON', () => {
const ws = fs.mkdtempSync(path.join(os.tmpdir(), 'main-valid-'));
const file = path.join(ws, 'data.json');
fs.writeFileSync(file, '[{}]\n');
assert.equal(validateAndRepairJsonFile(file, 'data.json'), true);
assert.equal(fs.readFileSync(file, 'utf8'), '[{}]\n');
fs.rmSync(ws, { recursive: true, force: true });
});
it('validateAndRepairJsonFile repairs invalid JSON to empty array', () => {
const ws = fs.mkdtempSync(path.join(os.tmpdir(), 'main-repair-'));
const file = path.join(ws, 'data.json');
fs.writeFileSync(file, '{invalid json');
assert.equal(validateAndRepairJsonFile(file, 'data.json'), true);
assert.equal(fs.readFileSync(file, 'utf8'), '[]\n');
assert.equal(fs.existsSync(`${file}.bak`), true);
fs.rmSync(ws, { recursive: true, force: true });
});
it('handleCriticalFindings exits when critical findings exist', () => {
let exitCode = null;
const findings = [
{ level: 'critical' },
{ level: 'warning' },
];
const result = handleCriticalFindings(findings, code => { exitCode = code; });
assert.equal(result, true);
assert.equal(exitCode, 1);
});
it('handleCriticalFindings passes when no critical findings exist', () => {
let exitCode = null;
const result = handleCriticalFindings([{ level: 'info' }], code => { exitCode = code; });
assert.equal(result, false);
assert.equal(exitCode, null);
});
});