import { describe, it, expect, beforeAll, beforeEach } from 'bun:test'; import { Database } from 'bun:sqlite'; import { initializeDatabase } from '../../../src/db'; import { TaskService } from '../../../src/tasks/service'; import { CommandService } from '../../../src/services/command'; describe('CommandService - ayuda por DM', () => { let memdb: Database; beforeAll(() => { memdb = new Database(':memory:'); initializeDatabase(memdb); TaskService.dbInstance = memdb; CommandService.dbInstance = memdb; }); beforeEach(() => { process.env.NODE_ENV = 'test'; process.env.TZ = 'Europe/Madrid'; }); it('responde con ayuda cuando el usuario escribe "/t"', async () => { const sender = '600111222'; const responses = await CommandService.handle({ sender, groupId: '12345@g.us', message: '/t', mentions: [], }); expect(Array.isArray(responses)).toBe(true); expect(responses.length).toBe(1); const r = responses[0]; expect(r.recipient).toBe(sender); expect(r.message).toContain('Guía rápida:'); expect(r.message).toContain('/t ver mis'); }); it('responde con ayuda cuando el usuario escribe "/t ayuda"', async () => { const sender = '600111222'; const responses = await CommandService.handle({ sender, groupId: `${sender}@s.whatsapp.net`, // DM message: '/t ayuda', mentions: [], }); expect(responses.length).toBe(1); const r = responses[0]; expect(r.recipient).toBe(sender); expect(r.message).toContain('Guía rápida:'); expect(r.message).toContain('/t n'); }); }); import { describe, it, expect } from 'bun:test'; import { CommandService } from '../../../src/services/command'; describe('CommandService - /t ayuda y /t ayuda avanzada usando help centralizado', () => { 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 ver mis'); 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 ver sin'); expect(msg).toContain('/t ver grupo'); expect(msg).toContain('/t ver todos'); // Formatos de fecha expect(msg).toContain('YY-MM-DD'); expect(msg).toContain('20YY'); // Configurar etiquetas en español expect(msg).toContain('diario|l-v|semanal|off'); }); });