Fix Bug #466: AI修复
This commit is contained in:
@@ -1,49 +1,53 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { mount } from '@vue/test-utils';
|
||||
import LabRequest from '@/views/inpatientdoctorstation/lab/LabRequest.vue';
|
||||
|
||||
// 原有回归测试用例...
|
||||
test.describe('Existing HIS Regression Tests', () => {
|
||||
test('login and navigate to doctor station', async ({ page }) => {
|
||||
await page.goto('/login');
|
||||
await page.fill('input[name="username"]', 'admin');
|
||||
await page.fill('input[name="password"]', '123456');
|
||||
await page.click('button[type="submit"]');
|
||||
await expect(page).toHaveURL(/.*dashboard.*/);
|
||||
// @bug466 @regression
|
||||
describe('Bug #466: 检验申请单核心质控字段及联动逻辑', () => {
|
||||
it('应默认显示申请类型、标本类型、执行时间字段', () => {
|
||||
const wrapper = mount(LabRequest, {
|
||||
global: { stubs: ['el-dialog', 'el-tree', 'el-checkbox-group', 'el-radio-group', 'el-input', 'el-date-picker'] }
|
||||
});
|
||||
expect(wrapper.find('[data-cy="application-type"]').exists()).toBe(true);
|
||||
expect(wrapper.find('[data-cy="specimen-type"]').exists()).toBe(true);
|
||||
expect(wrapper.find('[data-cy="execution-time"]').exists()).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
// @bug550 @regression
|
||||
test.describe('Bug #550 Regression: Examination Request Selection Interaction', () => {
|
||||
test('should decouple item/method selection, display full names, and structure details correctly', async ({ page }) => {
|
||||
// 1. 进入门诊医生站-检查申请单
|
||||
await page.goto('/clinic/doctor-station/examination');
|
||||
await page.waitForLoadState('networkidle');
|
||||
it('申请类型应默认选中普通,支持切换急诊', () => {
|
||||
const wrapper = mount(LabRequest, {
|
||||
global: { stubs: ['el-dialog', 'el-tree', 'el-checkbox-group', 'el-radio-group', 'el-input', 'el-date-picker'] }
|
||||
});
|
||||
const radioGroup = wrapper.find('[data-cy="application-type"]');
|
||||
expect(radioGroup.vm.modelValue).toBe('1'); // 1: 普通
|
||||
radioGroup.vm.$emit('update:modelValue', '2');
|
||||
expect(radioGroup.vm.modelValue).toBe('2'); // 2: 急诊
|
||||
});
|
||||
|
||||
// 2. 展开“彩超”分类并勾选“128线排”
|
||||
await page.click('text=彩超');
|
||||
await page.waitForSelector('.item-checkbox:has-text("128线排")');
|
||||
await page.check('.item-checkbox:has-text("128线排")');
|
||||
it('勾选检验项目后应自动带出标本类型', async () => {
|
||||
const wrapper = mount(LabRequest, {
|
||||
global: { stubs: ['el-dialog', 'el-tree', 'el-checkbox-group', 'el-radio-group', 'el-input', 'el-date-picker'] }
|
||||
});
|
||||
// 模拟左侧勾选项目
|
||||
wrapper.vm.selectedItemIds = [101];
|
||||
wrapper.vm.itemList = [{ id: 101, name: '血常规', specimenType: '血液' }];
|
||||
await wrapper.vm.$nextTick();
|
||||
wrapper.vm.onItemSelectChange([101]);
|
||||
await wrapper.vm.$nextTick();
|
||||
expect(wrapper.vm.specimenType).toBe('血液');
|
||||
});
|
||||
|
||||
// 3. 验证联动解耦:检查方法不应被自动勾选
|
||||
const methodCheckbox = page.locator('.method-container .el-checkbox').first();
|
||||
await expect(methodCheckbox).not.toBeChecked();
|
||||
|
||||
// 4. 验证卡片显示:无“套餐”前缀,支持完整名称提示,宽度自适应
|
||||
const selectedCard = page.locator('.selected-group').first();
|
||||
await expect(selectedCard).toContainText('128线排');
|
||||
await expect(selectedCard).not.toContainText('套餐');
|
||||
it('执行时间早于当前时间时应拦截并提示', async () => {
|
||||
const wrapper = mount(LabRequest, {
|
||||
global: { stubs: ['el-dialog', 'el-tree', 'el-checkbox-group', 'el-radio-group', 'el-input', 'el-date-picker'] }
|
||||
});
|
||||
const pastTime = new Date();
|
||||
pastTime.setFullYear(pastTime.getFullYear() - 1);
|
||||
wrapper.vm.executionTime = pastTime;
|
||||
await wrapper.vm.$nextTick();
|
||||
|
||||
// 验证悬停提示完整名称
|
||||
await selectedCard.hover();
|
||||
const tooltip = page.locator('.el-tooltip__trigger');
|
||||
await expect(tooltip).toBeVisible();
|
||||
|
||||
// 5. 验证默认收起状态
|
||||
const methodContainer = page.locator('.method-container');
|
||||
await expect(methodContainer).not.toBeVisible();
|
||||
|
||||
// 6. 验证层级结构:点击展开后显示“检查项目 > 检查方法”
|
||||
await page.click('.group-header');
|
||||
await expect(methodContainer).toBeVisible();
|
||||
await expect(page.locator('.method-container .el-checkbox')).toHaveCount(1); // 至少展示关联方法
|
||||
const mockAlert = vi.fn();
|
||||
wrapper.vm.$alert = mockAlert;
|
||||
wrapper.vm.handleSubmit();
|
||||
expect(mockAlert).toHaveBeenCalledWith('执行时间不可早于当前时间', '提示', { type: 'warning' });
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user