feat(web-platform): release V0.8.3 常规界面优化
web-platform-release / Build and publish release (push) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (push) Has been cancelled
web-platform-ci / Playwright E2E (push) 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
web-platform-release / Build and publish release (push) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (push) Has been cancelled
web-platform-ci / Playwright E2E (push) 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
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
import { fireEvent, render, screen } from '@testing-library/react';
|
||||
import { MapDraftStatusOverlay, MapViewportToolbar } from './MapViewportTools';
|
||||
|
||||
const noop = () => {};
|
||||
|
||||
describe('MapViewportToolbar', () => {
|
||||
it('统一联动变换、吸附与贴地检测命令', () => {
|
||||
const onModeChange = vi.fn();
|
||||
const onSnappingChange = vi.fn();
|
||||
const onPlacementModeChange = vi.fn();
|
||||
const onAlignToSurface = vi.fn();
|
||||
render(
|
||||
<MapViewportToolbar
|
||||
visible
|
||||
interactionActive
|
||||
mode="translate"
|
||||
snapping
|
||||
placementMode="auto_ground"
|
||||
hasSelectedObject
|
||||
allowScale
|
||||
loading={false}
|
||||
onActivate={noop}
|
||||
onModeChange={onModeChange}
|
||||
onSnappingChange={onSnappingChange}
|
||||
onPlacementModeChange={onPlacementModeChange}
|
||||
onAlignToSurface={onAlignToSurface}
|
||||
/>,
|
||||
);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '旋转工具 E' }));
|
||||
fireEvent.click(screen.getByRole('button', { name: '网格吸附' }));
|
||||
fireEvent.change(screen.getByLabelText('贴地检测模式'), {
|
||||
target: { value: 'gravity' },
|
||||
});
|
||||
fireEvent.click(screen.getByRole('button', { name: '立即贴合承载面' }));
|
||||
|
||||
expect(onModeChange).toHaveBeenCalledWith('rotate');
|
||||
expect(onSnappingChange).toHaveBeenCalledWith(false);
|
||||
expect(onPlacementModeChange).toHaveBeenCalledWith('gravity');
|
||||
expect(onAlignToSurface).toHaveBeenCalledOnce();
|
||||
});
|
||||
|
||||
it('参数地形或未选中对象时不提供缩放与贴合动作', () => {
|
||||
render(
|
||||
<MapViewportToolbar
|
||||
visible
|
||||
interactionActive
|
||||
mode="translate"
|
||||
snapping={false}
|
||||
placementMode="auto_ground"
|
||||
hasSelectedObject={false}
|
||||
allowScale={false}
|
||||
loading={false}
|
||||
onActivate={noop}
|
||||
onModeChange={noop}
|
||||
onSnappingChange={noop}
|
||||
onPlacementModeChange={noop}
|
||||
onAlignToSurface={noop}
|
||||
/>,
|
||||
);
|
||||
expect(screen.queryByRole('button', { name: '缩放工具 R' })).not.toBeInTheDocument();
|
||||
expect(screen.getByRole('button', { name: '立即贴合承载面' })).toBeDisabled();
|
||||
});
|
||||
});
|
||||
|
||||
describe('MapDraftStatusOverlay', () => {
|
||||
it('常驻显示未保存数量并提供提交与丢弃入口', () => {
|
||||
const onCommit = vi.fn();
|
||||
const onDiscard = vi.fn();
|
||||
render(
|
||||
<MapDraftStatusOverlay
|
||||
visible
|
||||
changeCount={3}
|
||||
loading={false}
|
||||
onCommit={onCommit}
|
||||
onDiscard={onDiscard}
|
||||
/>,
|
||||
);
|
||||
expect(screen.getByText('3 项未保存改动')).toBeVisible();
|
||||
fireEvent.click(screen.getByRole('button', { name: '提交地图草稿' }));
|
||||
fireEvent.click(screen.getByRole('button', { name: '丢弃地图草稿' }));
|
||||
expect(onCommit).toHaveBeenCalledOnce();
|
||||
expect(onDiscard).toHaveBeenCalledOnce();
|
||||
});
|
||||
|
||||
it('无草稿时显示已同步并禁用动作', () => {
|
||||
render(
|
||||
<MapDraftStatusOverlay
|
||||
visible
|
||||
changeCount={0}
|
||||
loading={false}
|
||||
onCommit={noop}
|
||||
onDiscard={noop}
|
||||
/>,
|
||||
);
|
||||
expect(screen.getByText('地图草稿已同步')).toBeVisible();
|
||||
expect(screen.getByRole('button', { name: '提交地图草稿' })).toBeDisabled();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user