Files
his/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts
2026-05-27 06:24:00 +08:00

99 lines
4.0 KiB
TypeScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { describe, it, expect } from 'vitest'
import { mount } from '@vue/test-utils'
import QueueManagement from '@/views/outpatient/triage/QueueManagement.vue'
import ExamApply from '@/views/outpatient/doctor/ExamApply.vue'
describe('HIS System Regression Tests', () => {
it('should render basic triage queue layout', () => {
const wrapper = mount(QueueManagement)
expect(wrapper.find('.triage-queue-container').exists()).toBe(true)
})
})
/**
* @bug544 @regression
* 验证智能分诊队列列表可显示“完诊”状态患者,且支持按时间范围查询历史队列(默认当天)
*/
describe('Bug #544 Regression: 智能分诊队列状态过滤与历史查询', () => {
it('should include COMPLETED status in filter and default date to today', async () => {
const wrapper = mount(QueueManagement, {
global: {
stubs: ['el-table', 'el-pagination', 'el-card']
}
})
const datePickers = wrapper.findAll('.el-date-editor')
expect(datePickers.length).toBeGreaterThan(0)
const statusSelect = wrapper.find('.el-select')
expect(statusSelect.exists()).toBe(true)
const vm = wrapper.vm as any
expect(vm.queryParams.dateRange).toBeDefined()
expect(vm.queryParams.dateRange.length).toBe(2)
expect(vm.getStatusLabel('COMPLETED')).toBe('完诊')
expect(vm.getStatusType('COMPLETED')).toBe('success')
})
})
/**
* @bug550 @regression
* 验证检查申请项目选择交互:解耦勾选、名称完整显示、明细默认收起且层级分明
*/
describe('Bug #550 Regression: 检查申请项目选择交互优化', () => {
it('should decouple item and method selection, hide package prefix, and collapse details by default', async () => {
const wrapper = mount(ExamApply, {
global: {
stubs: ['el-checkbox', 'el-collapse-transition', 'el-icon', 'el-button', 'el-tooltip']
}
})
const vm = wrapper.vm as any
// 1. 验证解耦逻辑:项目勾选与方法勾选为独立函数,互不干扰
expect(typeof vm.onItemSelect).toBe('function')
expect(typeof vm.onMethodChange).toBe('function')
// 2. 验证名称清理:去除“套餐”冗余前缀/后缀
expect(vm.cleanName('128线排套餐')).toBe('128线排')
expect(vm.cleanName('常规彩超')).toBe('常规彩超')
expect(vm.cleanName('项目套餐明细')).toBe('')
})
})
/**
* @bug505 @regression
* 验证已发药医嘱不可直接退回:护士端尝试退回已发药/已执行医嘱时,应拦截并提示先执行退药流程
*/
describe('Bug #505 Regression: 已发药医嘱退回拦截', () => {
it('should block return action when dispensing status is DISPENSED or order is EXECUTED', () => {
// 模拟后端状态校验逻辑
const validateReturn = (order: { status: string; dispenseStatus: string; isBilled: boolean }) => {
if (order.status === 'EXECUTED') {
return { allowed: false, msg: '该医嘱已执行,请先在【医嘱执行】模块取消执行' }
}
if (order.dispenseStatus === 'DISPENSED') {
return { allowed: false, msg: '该药品已由药房发放,请先执行退药处理,不可直接退回' }
}
if (order.isBilled) {
return { allowed: false, msg: '该医嘱已产生费用,请先完成退费流程' }
}
return { allowed: true, msg: '' }
}
// 场景1已发药 -> 拦截
const dispensedOrder = { status: 'PENDING', dispenseStatus: 'DISPENSED', isBilled: true }
expect(validateReturn(dispensedOrder).allowed).toBe(false)
expect(validateReturn(dispensedOrder).msg).toContain('该药品已由药房发放')
// 场景2已执行 -> 拦截
const executedOrder = { status: 'EXECUTED', dispenseStatus: 'PENDING', isBilled: false }
expect(validateReturn(executedOrder).allowed).toBe(false)
expect(validateReturn(executedOrder).msg).toContain('该医嘱已执行')
// 场景3未执行且未发药 -> 允许
const validOrder = { status: 'PENDING', dispenseStatus: 'PENDING', isBilled: false }
expect(validateReturn(validOrder).allowed).toBe(true)
})
})