5180 fichiers 38.5 Mo 0 téléchargements 479 vues mis à jour il y a 7 heures ui
nitro-v36-with-renderer-v36 / src / components / housekeeping / views / hotel / HousekeepingHotelAlertView.test.tsx
HousekeepingHotelAlertView.test.tsx 2.2 Ko Télécharger le fichier
/* @vitest-environment jsdom */

import { cleanup, fireEvent, render, screen } from '@testing-library/react';
import { afterEach, describe, expect, it, vi } from 'vitest';
import { buildHousekeepingAlertRecipient, HOUSEKEEPING_ALERT_SCOPES } from '../../../../api/housekeeping/HousekeepingHotelTools';
import { HousekeepingHotelAlertView } from './HousekeepingHotelAlertView';

const sendHotelAlert = vi.fn(() => Promise.resolve({ ok: true, actionId: null, message: '' }));
const confirm = vi.fn((_message: string, onConfirm: () => void) => onConfirm());

vi.mock('../../../../hooks', () => ({
    useHousekeeping: () => ({ isActionPending: false, sendHotelAlert }),
    useHousekeepingConfirm: () => confirm
}));

vi.mock('../../../../api', () => ({
    LocalizeText: (key: string) => key,
    buildHousekeepingAlertRecipient,
    HOUSEKEEPING_ALERT_SCOPES
}));

describe('HousekeepingHotelAlertView', () => {
    afterEach(() => {
        cleanup();
        vi.clearAllMocks();
    });

    it('sends to the whole hotel without a recipient', () => {
        render(<HousekeepingHotelAlertView />);

        fireEvent.change(screen.getByPlaceholderText('housekeeping.hotel.alert.placeholder'), { target: { value: 'Hello' } });
        fireEvent.click(screen.getByText('housekeeping.hotel.alert.send.hotel'));

        expect(sendHotelAlert).toHaveBeenCalledWith('Hello', undefined);
        expect(confirm).toHaveBeenCalled();
    });

    it('needs a username for one user and sends it as the recipient', () => {
        render(<HousekeepingHotelAlertView />);

        fireEvent.click(screen.getByText('housekeeping.hotel.alert.scope.user'));
        fireEvent.change(screen.getByPlaceholderText('housekeeping.hotel.alert.placeholder'), { target: { value: 'Hi' } });

        const send = screen.getByText('housekeeping.hotel.alert.send.user').closest('button');

        expect(send?.disabled).toBe(true);

        fireEvent.change(screen.getByPlaceholderText('housekeeping.hotel.alert.target.user'), { target: { value: 'Frank' } });
        fireEvent.click(screen.getByText('housekeeping.hotel.alert.send.user'));

        expect(sendHotelAlert).toHaveBeenCalledWith('Hi', 'user:Frank');
    });
});
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