You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

24 lines
1.2 KiB

import { expect, it } from 'vitest';
import { incomingChat } from '../src/lib/chat-feedback.js';
import type { Room } from '../src/lib/types.js';
const message={id:'one',userId:'ana',nick:'Ana',text:'¿Jugamos?',createdAt:'2026-10-03T20:00:00Z'};
const room={id:'table',messages:[]} as unknown as Room;
it('la carga inicial del historial no genera notificaciones',()=>{
expect(incomingChat(null,{...room,messages:[message]},'luis')).toBeNull();
expect(incomingChat({...room,id:'other'},{...room,messages:[message]},'luis')).toBeNull();
});
it('los mensajes propios no generan avisos de otro jugador',()=>{
expect(incomingChat(room,{...room,messages:[message]},'ana')).toBeNull();
});
it('una confirmación duplicada no vuelve a avisar del mismo mensaje',()=>{
const next={...room,messages:[message]};
expect(incomingChat(room,next,'luis')).toEqual(message);
expect(incomingChat(next,next,'luis')).toBeNull();
});
it('si llegan varios mensajes muestra el último nuevo de otra persona',()=>{
const latest={...message,id:'two',text:'Te espero en la mesa'};
const mine={...message,id:'three',userId:'luis',text:'Voy'};
expect(incomingChat(room,{...room,messages:[message,latest,mine]},'luis')).toEqual(latest);
});

Powered by TurnKey Linux.