import { test } from 'node:test'; import assert from 'node:assert/strict'; import * as service from '../src/org-service.mjs'; const { templateRender, validateOrg } = service; test('installed modules supply presets and report availability without credentials', async () => { const presets = await service.orgPresets({ env: { PATH: '/usr/bin:/bin' } }); const fixture = presets.find(p => p.name === 'fixture'); const claude = presets.find(p => p.name === 'claude-code'); assert.equal(fixture.available.ok, true); assert.equal(claude.available.ok, false); assert.ok(claude.available.reason); assert.deepEqual(claude.thinking.levels, ['low', 'medium', 'high', 'xhigh', 'max']); }); test('preset overlays produce valid documents and the legacy alias remains identical', async () => { const doc = await templateRender('alpha', { preset: 'fixture' }); assert.deepEqual(doc, await templateRender('alpha', { fixture: 'local' })); assert.deepEqual(await validateOrg(doc), { ok: true, errors: [] }); assert.equal(doc.vars['bus.tester'], true); const claude = await templateRender('alpha', { preset: 'claude-code', thinking: 'medium' }); assert.deepEqual(claude.roles.assistant.vars, { harness: 'claude-code', model: 'opus', thinking: 'medium' }); assert.equal(claude.launch.models.opus.model, 'claude-opus-5-5'); assert.equal(claude.vars, undefined); assert.deepEqual(await validateOrg(claude), { ok: true, errors: [] }); }); test('unknown presets and thinking levels refuse', async () => { await assert.rejects(templateRender('alpha', { preset: 'no-such-preset' }), /unknown preset/); await assert.rejects(templateRender('alpha', { preset: 'claude-code', thinking: 'off' }), /thinking/); await assert.rejects(templateRender('alpha', { thinking: 'low' }), /thinking/); });