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
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);
|
|
});
|