import { describe, test, expect } from 'vitest'; import { SCENARIOS, CBT_GLOSSARY } from '../constants'; import { validateScenario } from '../scripts/validate-scenarios'; describe('CBT Clinical Scenarios Catalog', () => { test('should contain exactly 14 pre-calibrated default scenarios', () => { expect(SCENARIOS.length).toBe(14); }); test('every scenario should pass strict schema validation with zero errors', () => { for (const scenario of SCENARIOS) { const result = validateScenario(scenario); expect(result.isValid).toBe(true); expect(result.errors.length).toBe(0); } }); test('every scenario should have an assigned character name and non-empty initial message', () => { for (const scenario of SCENARIOS) { expect(scenario.characterName && scenario.characterName.trim().length > 0).toBe(true); expect(scenario.initialMessage && scenario.initialMessage.trim().length > 0).toBe(true); expect(scenario.systemInstruction.includes('INTERNAL CBT LOGIC')).toBe(true); } }); test('CBT glossary should contain valid definitions for all categories', () => { expect(CBT_GLOSSARY.length).toBeGreaterThanOrEqual(18); for (const entry of CBT_GLOSSARY) { expect(entry.term && entry.term.trim().length > 0).toBe(true); expect(entry.definition && entry.definition.trim().length > 0).toBe(true); expect(['Distortion', 'Technique', 'Concept'].includes(entry.category)).toBe(true); } }); });