|
|
@@ -1,5 +1,6 @@
|
|
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
|
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
|
|
|
+import userEvent from '@testing-library/user-event';
|
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
|
import OrderManagement from '../../src/components/OrderManagement';
|
|
|
import { orderClientManager } from '../../src/api/orderClient';
|
|
|
@@ -394,8 +395,9 @@ describe('订单管理集成测试', () => {
|
|
|
|
|
|
// 等待下拉菜单打开,然后点击编辑按钮
|
|
|
await waitFor(() => {
|
|
|
- // 先检查下拉菜单内容是否渲染
|
|
|
- expect(screen.getByText('操作')).toBeInTheDocument();
|
|
|
+ // 检查下拉菜单内容是否渲染 - 使用更精确的选择器
|
|
|
+ // 下拉菜单中的"操作"是DropdownMenuLabel,而表格中的"操作"是表头
|
|
|
+ // 我们可以检查下拉菜单中的特定元素
|
|
|
const editButton = screen.getByTestId('edit-order-button-1');
|
|
|
expect(editButton).toBeInTheDocument();
|
|
|
});
|
|
|
@@ -420,15 +422,17 @@ describe('订单管理集成测试', () => {
|
|
|
// 先点击下拉菜单触发器,然后点击删除按钮
|
|
|
const menuTrigger = screen.getByTestId('order-menu-trigger-1');
|
|
|
expect(menuTrigger).toBeInTheDocument();
|
|
|
- fireEvent.click(menuTrigger);
|
|
|
+ await userEvent.click(menuTrigger);
|
|
|
|
|
|
// 等待下拉菜单打开,然后点击删除按钮
|
|
|
await waitFor(() => {
|
|
|
const deleteButton = screen.getByTestId('delete-order-button-1');
|
|
|
expect(deleteButton).toBeInTheDocument();
|
|
|
- fireEvent.click(deleteButton);
|
|
|
});
|
|
|
|
|
|
+ const deleteButton = screen.getByTestId('delete-order-button-1');
|
|
|
+ await userEvent.click(deleteButton);
|
|
|
+
|
|
|
// 这里会触发window.confirm,在测试环境中需要mock
|
|
|
// 实际测试中应该验证API调用
|
|
|
// Mock window.confirm
|
|
|
@@ -443,9 +447,19 @@ describe('订单管理集成测试', () => {
|
|
|
expect(screen.getByTestId('order-row-1')).toBeInTheDocument();
|
|
|
});
|
|
|
|
|
|
- // 点击激活按钮(只有草稿状态的订单才有激活按钮)
|
|
|
+ // 先打开下拉菜单,然后点击激活按钮(只有草稿状态的订单才有激活按钮)
|
|
|
+ const menuTrigger = screen.getByTestId('order-menu-trigger-1');
|
|
|
+ expect(menuTrigger).toBeInTheDocument();
|
|
|
+ await userEvent.click(menuTrigger);
|
|
|
+
|
|
|
+ // 等待下拉菜单打开,然后点击激活按钮
|
|
|
+ await waitFor(() => {
|
|
|
+ const activateButton = screen.getByTestId('activate-order-button-1');
|
|
|
+ expect(activateButton).toBeInTheDocument();
|
|
|
+ });
|
|
|
+
|
|
|
const activateButton = screen.getByTestId('activate-order-button-1');
|
|
|
- fireEvent.click(activateButton);
|
|
|
+ await userEvent.click(activateButton);
|
|
|
|
|
|
// 验证API调用
|
|
|
// 实际测试中应该验证API调用
|
|
|
@@ -459,9 +473,19 @@ describe('订单管理集成测试', () => {
|
|
|
expect(screen.getByTestId('order-row-2')).toBeInTheDocument();
|
|
|
});
|
|
|
|
|
|
- // 点击关闭按钮(只有已确认或进行中的订单有关闭按钮)
|
|
|
+ // 先打开下拉菜单,然后点击关闭按钮(只有已确认或进行中的订单有关闭按钮)
|
|
|
+ const menuTrigger = screen.getByTestId('order-menu-trigger-2');
|
|
|
+ expect(menuTrigger).toBeInTheDocument();
|
|
|
+ await userEvent.click(menuTrigger);
|
|
|
+
|
|
|
+ // 等待下拉菜单打开,然后点击关闭按钮
|
|
|
+ await waitFor(() => {
|
|
|
+ const closeButton = screen.getByTestId('close-order-button-2');
|
|
|
+ expect(closeButton).toBeInTheDocument();
|
|
|
+ });
|
|
|
+
|
|
|
const closeButton = screen.getByTestId('close-order-button-2');
|
|
|
- fireEvent.click(closeButton);
|
|
|
+ await userEvent.click(closeButton);
|
|
|
|
|
|
// 验证API调用
|
|
|
// 实际测试中应该验证API调用
|