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

afterEach(() => cleanup());

const props = (overrides: Partial<FurnitureDimmerLayoutProps> = {}): FurnitureDimmerLayoutProps => ({
    presetIds: [1, 2, 3],
    isOn: true,
    selectedPresetId: 1,
    selectedColor: 21495,
    selectedBrightness: 150,
    selectedEffectId: 2,
    freeColorMode: false,
    onClose: vi.fn(),
    onSelectPreset: vi.fn(),
    onSelectColor: vi.fn(),
    onSelectBrightness: vi.fn(),
    onSelectEffect: vi.fn(),
    onApply: vi.fn(),
    onToggle: vi.fn(),
    ...overrides
});

describe('FurnitureDimmerLayout (AIR dimmer_ui)', () => {
    it('shows the seven colours with the chosen one pressed', () => {
        const onSelectColor = vi.fn();

        render(<FurnitureDimmerLayout {...props({ onSelectColor })} />);

        const colours = screen.getAllByRole('button', { pressed: false }).filter((button) => button.className.includes('octane-dimmer__color'));
        const chosen = screen.getAllByRole('button', { pressed: true });

        expect(colours).toHaveLength(6);
        expect(chosen).toHaveLength(1);

        fireEvent.click(colours[0]);
        expect(onSelectColor).toHaveBeenCalledWith(7665141);
    });

    it('moves the brightness with the keyboard, inside the preset range', () => {
        const onSelectBrightness = vi.fn();

        render(<FurnitureDimmerLayout {...props({ selectedBrightness: 255, onSelectBrightness })} />);

        const slider = screen.getByRole('slider');

        expect(slider).toHaveAttribute('aria-valuemin', '76');
        expect(slider).toHaveAttribute('aria-valuemax', '255');

        fireEvent.keyDown(slider, { key: 'ArrowRight' });
        expect(onSelectBrightness).toHaveBeenLastCalledWith(255);

        fireEvent.keyDown(slider, { key: 'Home' });
        expect(onSelectBrightness).toHaveBeenLastCalledWith(76);
    });

    it('while off shows the off text, disables apply and offers to switch on', () => {
        const onToggle = vi.fn();

        const { baseElement } = render(<FurnitureDimmerLayout {...props({ isOn: false, onToggle })} />);

        expect(baseElement.querySelector('.octane-dimmer__off-text')).toBeInTheDocument();
        expect(screen.queryByRole('slider')).not.toBeInTheDocument();

        const apply = baseElement.querySelector('.octane-dimmer__apply');
        const onOff = baseElement.querySelector('.octane-dimmer__on-off');

        expect(apply).toBeDisabled();

        fireEvent.click(onOff);
        expect(onToggle).toHaveBeenCalled();
    });
});
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