Files
brain/tools/enforce-domain-skill-discipline.test.mjs
T

29 lines
1.3 KiB
JavaScript

import { describe, it, expect } from 'vitest';
import { decide } from './enforce-domain-skill-discipline.mjs';
describe('судья дисциплины: объявленный навык должен быть вызван', () => {
it('объявлен, не вызван → блок с перечнем', () => {
const r = decide({ frozenPlan: { skills: ['claude-md-management'] }, journalSkillCalls: [] });
expect(r.block).toBe(true);
expect(r.reason).toMatch(/claude-md-management/);
});
it('объявлен и вызван (плагин-префикс) → allow', () => {
const r = decide({ frozenPlan: { skills: ['claude-md-management'] }, journalSkillCalls: ['claude-md-management:revise-claude-md'] });
expect(r.block).toBe(false);
});
it('объявлен и вызван (совпадение суффиксов) → allow', () => {
const r = decide({ frozenPlan: { skills: ['test-driven-development'] }, journalSkillCalls: ['superpowers:test-driven-development'] });
expect(r.block).toBe(false);
});
it('пустой skills → allow', () => {
expect(decide({ frozenPlan: { skills: [] }, journalSkillCalls: [] }).block).toBe(false);
});
it('нет печати → allow', () => {
expect(decide({ frozenPlan: null, journalSkillCalls: [] }).block).toBe(false);
});
});