import { validarCNPJ, formatarCNPJ, gerarCNPJ } from '../src/services/cnpj';

describe('Validação de CNPJ', () => {
  // Testes síncronos usando validarCNPJMatematico
  test('Deve validar CNPJ corretamente (validação matemática)', () => {
    expect(validarCNPJ('49.962.622/0001-90')).toBe(true);
    expect(validarCNPJ('11.111.111/1111-11')).toBe(false);
  });

  test('Deve formatar CNPJ corretamente', () => {
    expect(formatarCNPJ('33381121000105')).toBe('33.381.121/0001-05');
  });

  // Testes assíncronos para a função principal
  test('Deve validar CNPJ corretamente (com API)', async () => {
    expect(await validarCNPJ('11.279.714/0001-05')).toBe(true);
    expect(await validarCNPJ('11.111.111/1111-11')).toBe(false);
  });

  test('Deve gerar CNPJ válido', async () => {
    const cnpj = gerarCNPJ();
    expect(await validarCNPJ(cnpj)).toBe(true);
  });

  // Teste para CNPJs oficiais com dígitos irregulares
  test('Deve validar CNPJs oficiais com dígitos irregulares', async () => {
    expect(await validarCNPJ('18.236.120/0001-58')).toBe(true);
    expect(await validarCNPJ('01.579.286/0001-74')).toBe(true);
  });
});