Files
chimera-Public/test/baseline-fixture-harness.test.js
T

45 lines
2.2 KiB
JavaScript

'use strict';
const test = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const fixtures = JSON.parse(
fs.readFileSync(path.join(__dirname, 'fixtures', 'chimera-baseline-fixtures.json'), 'utf8')
);
test('baseline fixture harness represents full coverage, partial coverage, inaccessible roots and staged jobs', () => {
assert.equal(fixtures.schema_version, 1);
assert.ok(Array.isArray(fixtures.scan_roots), 'scan roots are present');
assert.ok(Array.isArray(fixtures.installs), 'install fixture rows are present');
assert.ok(Array.isArray(fixtures.version_evidence), 'version evidence rows are present');
assert.ok(Array.isArray(fixtures.devices), 'devices are present');
assert.ok(Array.isArray(fixtures.jobs), 'jobs are present');
const coverageStates = new Set(fixtures.scan_roots.map((row) => row.coverage_state));
assert.ok(coverageStates.has('complete'), 'complete coverage is representable');
assert.ok(coverageStates.has('partial'), 'partial coverage is representable');
assert.ok(coverageStates.has('inaccessible'), 'inaccessible roots are representable');
const installsByTitle = fixtures.installs.reduce((acc, install) => {
(acc[install.title_id] ||= []).push(install);
return acc;
}, {});
const multiset = Object.entries(installsByTitle).find(([, value]) => value.length > 1);
assert.ok(multiset, 'a title can represent multiple installs');
assert.equal(new Set(multiset[1].map((item) => item.location)).size, 2);
const stagedJobs = fixtures.jobs.filter((job) => job.status === 'staged');
const activeRetryJobs = fixtures.jobs.filter((job) => job.status === 'interrupted');
assert.ok(stagedJobs.length > 0, 'staged jobs are representable');
assert.ok(activeRetryJobs.length > 0, 'staged/retry jobs are representable');
for (const job of fixtures.jobs) {
assert.ok(typeof job.job_id === 'string' && job.job_id.length > 0);
assert.ok(typeof job.title_id === 'string' && job.title_id.length > 0);
assert.ok(typeof job.kind === 'string' && job.kind.length > 0);
assert.ok(typeof job.confidence === 'string' && job.confidence.length > 0);
}
});