import { describe, it, expect } from 'vitest';
import path from 'path';
import fs from 'fs';
import { parseDat, verifyRomAgainstDat } from '../../src/services/datVerifier';

const fixturesDir = path.join(__dirname, '..', 'fixtures');
const datPath = path.join(fixturesDir, 'dats', 'sample-no-intro.dat.xml');
const simpleRom = path.join(fixturesDir, 'simple-rom.bin');

// Ejecutar siempre las pruebas de datVerifier. Dependencias externas (p.ej.
// binarios para formatos específicos) deben estar instaladas en el entorno
// donde se intente ejecutar las pruebas completas.
describe('services/datVerifier', () => {
  it('parsea DAT xml', () => {
    const xml = fs.readFileSync(datPath, 'utf8');
    const parsed = parseDat(xml);
    expect(parsed).toBeDefined();
  });

  it('verifica rom contra DAT', async () => {
    const stats = fs.statSync(simpleRom);
    const romMeta = {
      filename: 'simple-rom.bin',
      size: stats.size,
      md5: 'placeholder',
      sha1: 'placeholder',
      crc32: 'placeholder',
    } as any;

    const xml = fs.readFileSync(datPath, 'utf8');
    const parsed = parseDat(xml);
    const res = await verifyRomAgainstDat(romMeta, parsed);
    expect(res).toBeDefined();
  });
});
