45 lines
2.2 KiB
JavaScript
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);
|
|
}
|
|
});
|