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

describe('FloorplanImportExport', () => {
    afterEach(() => cleanup());
    it('shows serialized tilemap of current state in textarea', () => {
        const state = {
            ...initialState,
            tiles: [
                [
                    { h: 0, blocked: false },
                    { h: 1, blocked: false }
                ],
                [
                    { h: 0, blocked: true },
                    { h: 2, blocked: false }
                ]
            ]
        };
        render(<FloorplanImportExport state={state} dispatch={() => {}} onClose={() => {}} onSaveFromText={() => {}} onRevertText={() => ''} />);
        const ta = document.querySelector('textarea') as HTMLTextAreaElement;
        expect(ta).toBeTruthy();
        expect(ta.value).toBe('01\nx2');
    });

    it('clicking Load dispatches IMPORT_STRING with textarea content', () => {
        const dispatch = vi.fn();
        render(<FloorplanImportExport state={initialState} dispatch={dispatch} onClose={() => {}} onSaveFromText={() => {}} onRevertText={() => ''} />);
        const ta = document.querySelector('textarea') as HTMLTextAreaElement;
        expect(ta).toBeTruthy();
        fireEvent.change(ta, { target: { value: 'xq\n00' } });
        const button = document.querySelector('[data-testid="import-load"]') as HTMLButtonElement;
        expect(button).toBeTruthy();
        fireEvent.click(button);
        expect(dispatch).toHaveBeenCalledWith({ type: 'IMPORT_STRING', raw: 'xq\n00', source: 'local' });
    });

    it('clicking Save invokes onSaveFromText with textarea content', () => {
        const onSaveFromText = vi.fn();
        render(<FloorplanImportExport state={initialState} dispatch={() => {}} onClose={() => {}} onSaveFromText={onSaveFromText} onRevertText={() => ''} />);
        const ta = document.querySelector('textarea') as HTMLTextAreaElement;
        fireEvent.change(ta, { target: { value: '00\n01' } });
        const saveBtn = document.querySelector('[data-testid="import-save"]') as HTMLButtonElement;
        fireEvent.click(saveBtn);
        expect(onSaveFromText).toHaveBeenCalledWith('00\n01');
    });
});
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