refactor: release v1.0.5 安全精简与网站发布
web-platform-ci / Standalone decision service (no cloud credentials) (push) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (push) Has been cancelled
web-platform-ci / Playwright E2E (push) Has been cancelled
lekiwi-compatibility / cpu-compatibility (push) Has been cancelled
web-platform-ci / Standalone decision service (no cloud credentials) (pull_request) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (pull_request) Has been cancelled
web-platform-ci / Playwright E2E (pull_request) Has been cancelled
lekiwi-compatibility / cpu-compatibility (pull_request) Has been cancelled
web-platform-ci / Standalone decision service (no cloud credentials) (push) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (push) Has been cancelled
web-platform-ci / Playwright E2E (push) Has been cancelled
lekiwi-compatibility / cpu-compatibility (push) Has been cancelled
web-platform-ci / Standalone decision service (no cloud credentials) (pull_request) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (pull_request) Has been cancelled
web-platform-ci / Playwright E2E (pull_request) Has been cancelled
lekiwi-compatibility / cpu-compatibility (pull_request) Has been cancelled
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { act, renderHook } from '@testing-library/react';
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { useWorkbenchChrome } from './useWorkbenchChrome';
|
||||
|
||||
beforeEach(() => localStorage.clear());
|
||||
|
||||
describe('工作台界面状态组合', () => {
|
||||
it('布局预设保持侧栏状态,控制预设打开控制工具', () => {
|
||||
const root = { current: document.createElement('div') };
|
||||
const { result } = renderHook(() => useWorkbenchChrome(root));
|
||||
act(() => result.current.applyLayoutPreset('viewport'));
|
||||
expect([result.current.leftOpen, result.current.rightOpen]).toEqual([false, false]);
|
||||
act(() => result.current.applyLayoutPreset('project'));
|
||||
expect([result.current.leftOpen, result.current.rightOpen]).toEqual([true, false]);
|
||||
act(() => result.current.applyLayoutPreset('control'));
|
||||
expect([result.current.leftOpen, result.current.rightOpen]).toEqual([false, true]);
|
||||
expect(result.current.workspaceTool).toBe('controls');
|
||||
act(() => result.current.applyLayoutPreset('default'));
|
||||
expect([result.current.leftOpen, result.current.rightOpen]).toEqual([true, true]);
|
||||
});
|
||||
|
||||
it('显示工具自动打开右栏,沿用传感器相机、力与角度的初始值', () => {
|
||||
const root = { current: document.createElement('div') };
|
||||
const { result } = renderHook(() => useWorkbenchChrome(root));
|
||||
act(() => result.current.applyLayoutPreset('viewport'));
|
||||
act(() => result.current.showWorkspaceTool('data'));
|
||||
expect(result.current.workspaceTool).toBe('data');
|
||||
expect(result.current.rightOpen).toBe(true);
|
||||
expect(result.current.showSensorCamera).toBe(true);
|
||||
expect(result.current.forceScale).toBe(50);
|
||||
expect(result.current.angleUnit).toBe('rad');
|
||||
});
|
||||
|
||||
it('全屏请求失败不冒泡,卸载移除全屏监听', async () => {
|
||||
const root = { current: document.createElement('div') };
|
||||
root.current.requestFullscreen = vi.fn(() => Promise.reject(new Error('浏览器拒绝')));
|
||||
const remove = vi.spyOn(document, 'removeEventListener');
|
||||
const { result, unmount } = renderHook(() => useWorkbenchChrome(root));
|
||||
await act(async () => result.current.toggleFullscreen());
|
||||
expect(root.current.requestFullscreen).toHaveBeenCalledOnce();
|
||||
unmount();
|
||||
expect(remove).toHaveBeenCalledWith('fullscreenchange', expect.any(Function));
|
||||
remove.mockRestore();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user