5180 fichiers 38.5 Mo 0 téléchargements 377 vues mis à jour il y a 7 heures ui
nitro-v36-with-renderer-v36 / src / components / friends / views / messenger / persistentMessenger.helpers.test.ts
persistentMessenger.helpers.test.ts 2.2 Ko Télécharger le fichier
import { describe, expect, it } from 'vitest';
import { canFollowMessengerConversation, filterMessengerConversations, resolveConversationAfterClose, restoreConversationsWithNewMessages } from './persistentMessenger.helpers';

const conversations = [
    { id: 1, type: 0, participantId: 7, name: 'Alex', lastMessageId: 4, unreadCount: 0, updatedAt: 10 },
    { id: 2, type: 1, participantId: 0, name: 'Wired Lab', lastMessageId: 8, unreadCount: 3, updatedAt: 20 }
];

describe('filterMessengerConversations', () =>
{
    it('filters names case-insensitively and preserves activity order', () =>
    {
        expect(filterMessengerConversations(conversations, 'wired').map(item => item.id)).toEqual([ 2 ]);
        expect(filterMessengerConversations(conversations, '').map(item => item.id)).toEqual([ 2, 1 ]);
    });
});

describe('canFollowMessengerConversation', () =>
{
    it('hides Follow for Staff Chat and keeps it for ordinary direct chats', () =>
    {
        expect(canFollowMessengerConversation(conversations[0])).toBe(true);
        expect(canFollowMessengerConversation({ ...conversations[0], participantId: -1, name: 'Staff Chat' })).toBe(false);
        expect(canFollowMessengerConversation({ ...conversations[0], name: 'staff chat' })).toBe(false);
    });
});

describe('resolveConversationAfterClose', () =>
{
    it('selects the next visible conversation and falls back to an earlier one', () =>
    {
        expect(resolveConversationAfterClose(conversations, [], 1)).toBe(2);
        expect(resolveConversationAfterClose(conversations, [ 2 ], 1)).toBe(0);
        expect(resolveConversationAfterClose(conversations, [], 2)).toBe(1);
    });
});

describe('restoreConversationsWithNewMessages', () =>
{
    it('restores hidden conversations when their message or unread cursor advances', () =>
    {
        const previous = conversations.map(item => ({ ...item }));
        const current = conversations.map(item => item.id === 1 ? { ...item, lastMessageId: 5 } : { ...item, unreadCount: 4 });

        expect(restoreConversationsWithNewMessages([ 1, 2 ], previous, current)).toEqual([]);
        expect(restoreConversationsWithNewMessages([ 1, 2 ], previous, previous)).toEqual([ 1, 2 ]);
    });
});
15Sujets
1Dépôts
20Membres
3En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser