|
|
@@ -5,6 +5,100 @@ import OrderManagement from '../../src/components/OrderManagement';
|
|
|
import { orderClientManager } from '../../src/api/orderClient';
|
|
|
import { OrderStatus, WorkStatus } from '@d8d/allin-enums';
|
|
|
|
|
|
+// Mock 区域选择器组件
|
|
|
+vi.mock('@d8d/area-management-ui', () => ({
|
|
|
+ AreaSelect: vi.fn(({ value, onChange }) => {
|
|
|
+ return (
|
|
|
+ <div data-testid="area-select-mock">
|
|
|
+ <select
|
|
|
+ data-testid="area-select-province"
|
|
|
+ value={value?.provinceId || ''}
|
|
|
+ onChange={(e) => onChange && onChange({ provinceId: e.target.value ? parseInt(e.target.value) : undefined, cityId: undefined, districtId: undefined })}
|
|
|
+ >
|
|
|
+ <option value="">选择省份</option>
|
|
|
+ <option value="1">省份1</option>
|
|
|
+ <option value="2">省份2</option>
|
|
|
+ </select>
|
|
|
+ <select
|
|
|
+ data-testid="area-select-city"
|
|
|
+ value={value?.cityId || ''}
|
|
|
+ onChange={(e) => onChange && onChange({ ...value, cityId: e.target.value ? parseInt(e.target.value) : undefined, districtId: undefined })}
|
|
|
+ >
|
|
|
+ <option value="">选择城市</option>
|
|
|
+ <option value="3">城市1</option>
|
|
|
+ <option value="4">城市2</option>
|
|
|
+ </select>
|
|
|
+ <select
|
|
|
+ data-testid="area-select-district"
|
|
|
+ value={value?.districtId || ''}
|
|
|
+ onChange={(e) => onChange && onChange({ ...value, districtId: e.target.value ? parseInt(e.target.value) : undefined })}
|
|
|
+ >
|
|
|
+ <option value="">选择区县</option>
|
|
|
+ <option value="5">区县1</option>
|
|
|
+ <option value="6">区县2</option>
|
|
|
+ </select>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ })
|
|
|
+}));
|
|
|
+
|
|
|
+// Mock 文件选择器组件
|
|
|
+vi.mock('@d8d/file-management-ui', () => ({
|
|
|
+ FileSelector: vi.fn(({ value, onChange }) => {
|
|
|
+ return (
|
|
|
+ <div data-testid="file-selector-mock">
|
|
|
+ <input
|
|
|
+ type="file"
|
|
|
+ data-testid="file-input"
|
|
|
+ onChange={(e) => {
|
|
|
+ if (onChange && e.target.files?.[0]) {
|
|
|
+ onChange('mock-file-id-123');
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ {value && <div data-testid="selected-file">已选择文件: {value}</div>}
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ })
|
|
|
+}));
|
|
|
+
|
|
|
+// Mock 残疾人选择器组件
|
|
|
+vi.mock('@d8d/allin-disability-management-ui', () => ({
|
|
|
+ DisabledPersonSelector: vi.fn(({ open, onOpenChange, onSelect, mode, disabledIds }) => {
|
|
|
+ if (!open) return null;
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div data-testid="disabled-person-selector-mock">
|
|
|
+ <div>残疾人选择器模拟</div>
|
|
|
+ <button
|
|
|
+ data-testid="select-person-button"
|
|
|
+ onClick={() => {
|
|
|
+ const mockPerson = {
|
|
|
+ id: 1,
|
|
|
+ name: '测试残疾人',
|
|
|
+ gender: '男',
|
|
|
+ disabilityId: 'D123456',
|
|
|
+ disabilityType: '肢体残疾',
|
|
|
+ disabilityLevel: '三级',
|
|
|
+ phone: '13800138000'
|
|
|
+ };
|
|
|
+ onSelect(mode === 'multiple' ? [mockPerson] : mockPerson);
|
|
|
+ onOpenChange(false);
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 选择测试人员
|
|
|
+ </button>
|
|
|
+ <button
|
|
|
+ data-testid="close-selector-button"
|
|
|
+ onClick={() => onOpenChange(false)}
|
|
|
+ >
|
|
|
+ 关闭
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ })
|
|
|
+}));
|
|
|
+
|
|
|
// 完整的mock响应对象
|
|
|
const createMockResponse = (status: number, data?: any) => ({
|
|
|
status,
|
|
|
@@ -272,7 +366,7 @@ describe('订单管理集成测试', () => {
|
|
|
|
|
|
// 验证订单表单模态框打开
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('创建订单')).toBeInTheDocument();
|
|
|
+ expect(screen.getByTestId('create-order-dialog-title')).toBeInTheDocument();
|
|
|
});
|
|
|
|
|
|
// 这里可以添加表单填写和提交的测试
|
|
|
@@ -379,7 +473,7 @@ describe('订单管理集成测试', () => {
|
|
|
|
|
|
// 验证订单表单模态框打开
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('创建订单')).toBeInTheDocument();
|
|
|
+ expect(screen.getByTestId('create-order-dialog-title')).toBeInTheDocument();
|
|
|
});
|
|
|
|
|
|
// 验证区域选择器组件存在
|