41 lines
2.3 KiB
JavaScript
41 lines
2.3 KiB
JavaScript
import { describe, it, expect } from 'vitest';
|
|
import { renderArchive } from './secretary-render-archive.mjs';
|
|
|
|
describe('renderArchive — полный леджер', () => {
|
|
const base = (over) => ({ subject: '', decisions: [], will: [], open: [], consequences: [], doneNext: [], steps: [], hidden: [], candidates: [], ...over });
|
|
|
|
it('показывает мёртвых со статусом, причиной и историей (сырьё ТЗ)', () => {
|
|
const p = base({ hidden: [{ id: 'СВ-1', status: 'отпал', title: 'мёртвая', born: 1, endedTurn: 2, why: 'вытеснено',
|
|
history: [{ turn: 1, ev: 'рождён', why: 'диагност' }, { turn: 2, ev: 'отпал', why: 'вытеснено' }] }] });
|
|
const md = renderArchive(p);
|
|
expect(md).toMatch(/СВ-1/);
|
|
expect(md).toMatch(/отпал/);
|
|
expect(md).toMatch(/вытеснено/); // причина видна
|
|
expect(md).toMatch(/ход 1: рождён/); // история по шагам
|
|
});
|
|
|
|
it('живые и мёртвые вместе; родословная и наследник видны', () => {
|
|
const p = base({
|
|
hidden: [{ id: 'СВ-2', status: 'мутировал', title: 'старая форма', born: 1, endedTurn: 3, mutatedTo: 'СВ-3', why: 'заточил' }],
|
|
candidates: [{ id: 'КД-5', status: 'жив', title: 'живой кандидат', branch: 'b', born: 2, lineage: ['СВ-2'] }],
|
|
});
|
|
const md = renderArchive(p);
|
|
expect(md).toMatch(/СВ-2.*→ СВ-3/); // наследник
|
|
expect(md).toMatch(/КД-5/);
|
|
expect(md).toMatch(/родословная: СВ-2 → КД-5/);
|
|
});
|
|
|
|
it('пустой протокол не падает', () => {
|
|
expect(renderArchive(base())).toContain('ПОЛНЫЙ ЛЕДЖЕР');
|
|
});
|
|
});
|
|
|
|
describe('renderArchive — база знаний', () => {
|
|
const base2 = (over) => ({ subject: '', decisions: [], will: [], open: [], consequences: [], doneNext: [], steps: [], hidden: [], candidates: [], ...over });
|
|
it('печатает раздел со строкой знание — источник', () => {
|
|
const md = renderArchive(base2({ knowledge: [{ ref: 'f.mjs:10', text: 'факт' }] }));
|
|
expect(md).toContain('## База знаний');
|
|
expect(md).toContain('факт — f.mjs:10');
|
|
});
|
|
});
|