import { BadRequestException } from '@nestjs/common';
import { validarConfig } from './configuracion.helpers';

describe('configuración editable del superadmin', () => {
  it('interruptores solo true/false, y youtrack_activo solo global', () => {
    expect(validarConfig('ia_activa', 'global', ' TRUE ')).toBe('true');
    expect(validarConfig('ia_activa', 'empresa:x', 'false')).toBe('false');
    expect(() => validarConfig('ia_activa', 'global', 'si')).toThrow(BadRequestException);
    expect(validarConfig('youtrack_activo', 'global', 'false')).toBe('false');
    expect(() => validarConfig('youtrack_activo', 'empresa:x', 'true')).toThrow(BadRequestException);
  });

  it('el tope es un entero acotado', () => {
    expect(validarConfig('tope_tokens_diarios', 'global', '500000')).toBe('500000');
    for (const malo of ['0', '-5', '1e9', 'abc', '999999999999', '9999']) {
      expect(() => validarConfig('tope_tokens_diarios', 'global', malo)).toThrow(BadRequestException);
    }
  });

  it('modelos y teléfono: solo globales y con forma válida', () => {
    expect(validarConfig('modelo_redactor', 'global', ' Claude-Sonnet-5-5 ')).toBe('claude-sonnet-5-5');
    expect(() => validarConfig('modelo_redactor', 'empresa:x', 'claude-haiku-5-5')).toThrow(BadRequestException);
    for (const malo of ['gpt-4o', 'claude', 'claude-', 'claude-abc def']) {
      expect(() => validarConfig('modelo_consultor', 'global', malo)).toThrow(BadRequestException);
    }
    expect(validarConfig('telefono_contacto', 'global', '+595 971 202885')).toBe('+595 971 202885');
    expect(() => validarConfig('telefono_contacto', 'global', 'llamame')).toThrow(BadRequestException);
  });
});
