5180 fichiers 38.5 Mo 0 téléchargements 366 vues mis à jour il y a 7 heures ui
nitro-v36-with-renderer-v36 / src / components / room / widgets / friend-request / FriendRequestWidgetView.test.tsx
FriendRequestWidgetView.test.tsx 1.8 Ko Télécharger le fichier
import { cleanup, fireEvent, render, screen } from '@testing-library/react';
import { ReactNode } from 'react';
import { afterEach, describe, expect, it, vi } from 'vitest';

const state = vi.hoisted(() => ({ full: false, respond: vi.fn(), alert: vi.fn() }));

vi.mock('../../../../api', () => ({ GetUserProfile: vi.fn(), LocalizeText: (key: string) => key }));
vi.mock('../object-location/ObjectLocationView', () => ({ ObjectLocationView: (props: { children: ReactNode }) => <div>{props.children}</div> }));
vi.mock('../../../../hooks', () => ({
    useFriendRequestWidget: () => ({ displayedRequests: [{ request: { id: 3, requesterUserId: 7, name: 'Alice' }, roomIndex: 1 }], hideFriendRequest: vi.fn() }),
    useFriends: () => ({ requestResponse: state.respond, isFriendListFull: () => state.full, showFriendListFullAlert: state.alert })
}));

const { FriendRequestWidgetView } = await import('./FriendRequestWidgetView');

describe('FriendRequestWidgetView', () => {
    afterEach(() => {
        cleanup();
        state.respond.mockClear();
        state.alert.mockClear();
    });

    it('answers the request by its request id', () => {
        state.full = false;
        render(<FriendRequestWidgetView />);
        fireEvent.click(screen.getByText(/widget\.friendrequest\.accept/));

        expect(state.respond).toHaveBeenCalledWith(3, true);
    });

    it('refuses to accept with a full friend list, as the friends list does', () => {
        state.full = true;
        render(<FriendRequestWidgetView />);
        fireEvent.click(screen.getByText(/widget\.friendrequest\.accept/));
        fireEvent.click(screen.getByText('widget.friendrequest.decline'));

        expect(state.alert).toHaveBeenCalledOnce();
        expect(state.respond).toHaveBeenCalledTimes(1);
        expect(state.respond).toHaveBeenCalledWith(3, false);
    });
});
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