5180 fichiers 38.5 Mo 0 téléchargements 476 vues mis à jour il y a 7 heures ui
nitro-v36-with-renderer-v36 / src / components / room / widgets / doorbell / DoorbellWidgetView.test.tsx
DoorbellWidgetView.test.tsx 2 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 answer = vi.fn();
const waiting = { users: ['Alice', 'Bob'] };

vi.mock('../../../../api', () => ({ LocalizeText: (key: string) => key, localizeWithFallback: (_key: string, fallback: string) => fallback }));
vi.mock('../../../../common', () => ({
    OctaneCardView: (props: { children: ReactNode }) => <div>{props.children}</div>,
    OctaneCardContentView: (props: { children: ReactNode }) => <div>{props.children}</div>,
    OctaneCardHeaderView: (props: { headerText: string; onCloseClick: () => void }) => (
        <h1>
            {props.headerText}
            <button type="button" onClick={props.onCloseClick}>
                close
            </button>
        </h1>
    )
}));
vi.mock('../../../../hooks', () => ({ useDoorbellState: () => waiting.users, useDoorbellActions: () => ({ answer }) }));

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

afterEach(cleanup);

describe('DoorbellWidgetView', () => {
    it('lets a visitor in with the check and turns them away with the cross', () => {
        render(<DoorbellWidgetView />);
        fireEvent.click(screen.getByRole('button', { name: 'generic.accept Alice' }));
        fireEvent.click(screen.getByRole('button', { name: 'generic.deny Bob' }));

        expect(answer).toHaveBeenNthCalledWith(1, 'Alice', true);
        expect(answer).toHaveBeenNthCalledWith(2, 'Bob', false);
    });

    it('hides the visitors waiting when closed, and shows the widget again when someone new rings', () => {
        waiting.users = ['Alice', 'Bob'];
        const { rerender } = render(<DoorbellWidgetView />);

        fireEvent.click(screen.getByRole('button', { name: 'close' }));
        expect(screen.queryByText('Alice')).toBeNull();

        waiting.users = ['Alice', 'Bob', 'Carol'];
        rerender(<DoorbellWidgetView />);
        expect(screen.getByText('Carol')).toBeTruthy();
    });
});
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