5180 fichiers 38.5 Mo 0 téléchargements 275 vues mis à jour il y a 6 heures ui
nitro-v36-with-renderer-v36 / src / components / groups / views / GroupDropMenu.test.tsx
GroupDropMenu.test.tsx 2 Ko Télécharger le fichier
import { cleanup, fireEvent, render, screen } from '@testing-library/react';
import { afterEach, describe, expect, it, vi } from 'vitest';
import { GroupDropMenu } from './GroupNativeLayout';

vi.mock('../../../common/native-text/NativeText', () => ({
    NativeText: ({ text }: { text: string }) => <span>{text}</span>
}));

const OPTIONS = [
    { value: -1, label: 'Select a room' },
    { value: 7, label: 'Room seven' },
    { value: 9, label: 'Room nine' }
];

const renderMenu = (onSelect = vi.fn()) => {
    render(<GroupDropMenu height={26} label="Base room" options={OPTIONS} value={7} width={200} x={0} y={0} onSelect={onSelect} />);

    return onSelect;
};

describe('GroupDropMenu', () => {
    afterEach(() => cleanup());

    it('shows the chosen caption on the trigger and lists every option when opened', () => {
        renderMenu();

        const trigger = screen.getByRole('combobox', { name: 'Base room' });

        expect(trigger).toHaveTextContent('Room seven');

        fireEvent.click(trigger);

        expect(screen.getAllByRole('option').map((option) => option.textContent)).toEqual(['Select a room', 'Room seven', 'Room nine']);
    });

    it('reports the numeric value of the picked option', () => {
        const onSelect = renderMenu();

        fireEvent.click(screen.getByRole('combobox', { name: 'Base room' }));

        const option = screen.getByRole('option', { name: 'Room nine' });

        fireEvent.pointerDown(option);
        fireEvent.click(option);

        expect(onSelect).toHaveBeenCalledWith(9);
    });

    it('closes on Escape without picking', () => {
        const onSelect = renderMenu();
        const trigger = screen.getByRole('combobox', { name: 'Base room' });

        fireEvent.click(trigger);
        expect(screen.getAllByRole('option')).toHaveLength(3);

        fireEvent.keyDown(screen.getAllByRole('option')[0], { key: 'Escape' });

        expect(screen.queryAllByRole('option')).toHaveLength(0);
        expect(onSelect).not.toHaveBeenCalled();
    });
});
15Sujets
1Dépôts
20Membres
2En 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