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

vi.mock('../scene3d/FloorplanScene', () => ({
    FloorplanScene: { create: vi.fn(() => Promise.reject(new Error('no webgl'))) }
}));

const state = {
    tiles: [[{ h: 0, blocked: false }]],
    door: { x: 0, y: 0, dir: 2 },
    thickness: { wall: 1, floor: 1 },
    wallHeight: -1,
    brush: { h: 0, action: 'SET' },
    selection: new Set(),
    squareSelect: false
} as unknown as FloorplanState;

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

    it('shows a loading state, then reports when the scene cannot be created', async () => {
        const originalObserver = globalThis.ResizeObserver;
        globalThis.ResizeObserver = class {
            observe() {}
            disconnect() {}
            unobserve() {}
        };

        const { getByTestId, findByTestId } = render(<Floorplan3DView state={state} dispatch={() => {}} />);

        expect(getByTestId('floorplan-3d-loading')).toBeTruthy();
        await act(async () => {});
        expect(await findByTestId('floorplan-3d-unavailable')).toBeTruthy();
        expect((getByTestId('view3d-rotate') as HTMLButtonElement).disabled).toBe(true);

        globalThis.ResizeObserver = originalObserver;
    });
});
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