import { describe, test, expect } from 'bun:test'; import { validateConfig, type GeneratorConfig } from '../../src/config.js'; describe('config', () => { describe('validateConfig', () => { test('должен пройти валидацию для корректной конфигурации', () => { const config: Partial = { inputPath: './openapi.json', outputPath: './output', fileName: 'Api', }; expect(() => validateConfig(config)).not.toThrow(); expect(validateConfig(config)).toBe(true); }); test('должен пройти валидацию без опционального fileName', () => { const config: Partial = { inputPath: './openapi.json', outputPath: './output', }; expect(() => validateConfig(config)).not.toThrow(); expect(validateConfig(config)).toBe(true); }); test('должен выбросить ошибку без inputPath', () => { const config: Partial = { outputPath: './output', }; expect(() => validateConfig(config)).toThrow('Не указан путь к OpenAPI спецификации'); }); test('должен выбросить ошибку без outputPath', () => { const config: Partial = { inputPath: './openapi.json', }; expect(() => validateConfig(config)).toThrow('Не указана директория для генерации'); }); test('должен выбросить ошибку без обоих обязательных полей', () => { const config: Partial = {}; expect(() => validateConfig(config)).toThrow('Ошибка конфигурации'); }); test('должен выбросить ошибку для удаленного both режима', () => { const config = { inputPath: './openapi.json', outputPath: './output', mode: 'both', }; expect(() => validateConfig(config as Partial)).toThrow('Доступные значения: split, single'); }); }); });