397777089e
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
29 lines
1.3 KiB
JavaScript
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);
|
|
});
|
|
});
|