import { describe, it, expect, beforeAll, afterAll } from 'bun:test';
import { Database } from 'bun:sqlite';
import { initializeDatabase } from '../../../src/db';
import { setDb, resetDb } from '../../../src/db/locator';
import { CommandService } from '../../../src/services/command';

describe('CommandService - t ayuda y t ayuda avanzada usando help centralizado', () => {
  let memdb: Database;

  beforeAll(() => {
    memdb = new Database(':memory:');
    initializeDatabase(memdb);
    setDb(memdb);
  });

  afterAll(() => {
    resetDb();
    try { (memdb as any)?.close?.(); } catch {}
  });
  it('"t ayuda" incluye quick help y CTA a ayuda avanzada', async () => {
    const res = await CommandService.handle({
      sender: '600000001',
      groupId: '',
      message: 't ayuda',
      mentions: [],
    });

    expect(Array.isArray(res)).toBe(true);
    expect(res.length).toBeGreaterThan(0);
    const msg = res[0].message;

    expect(msg).toContain('t mias');
    expect(msg).toContain('t web');
    expect(msg).toContain('Ayuda avanzada');
    expect(msg).toContain('t ayuda avanzada');
    // Configurar etiquetas en español
    expect(msg).toContain('diario|l-v|semanal|off');
  });

  it('"t ayuda avanzada" incluye scopes de ver y formatos de fecha', async () => {
    const res = await CommandService.handle({
      sender: '600000001',
      groupId: '',
      message: 't ayuda avanzada',
      mentions: [],
    });

    const msg = res[0].message;
    // Scopes de ver
    expect(msg).toContain('t mias');
    expect(msg).toContain('t todas');
    // Formatos de fecha
    expect(msg).toContain('27-09-04');
    // Configurar etiquetas en español
    expect(msg).toContain('diario|l-v|semanal|off');
  });
});
