123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- /// <reference types="cypress" />
- import {
- mockColumnConfigSuccess,
- mockColumnConfigFail,
- mockColumnConfigCustomOrder,
- mockColumnConfigMinimal,
- } from '../../../support/mock/handlers/columnConfig';
- import { mockFetchTwoWorks } from '../../../support/mock/handlers/worklist';
- import LoginPage from '../../../support/pageObjects/LoginPage';
- import MainPage from '../../../support/pageObjects/MainPage';
- import WorklistPage from '../../../support/pageObjects/WorklistPage';
- describe('Worklist Column Configuration', () => {
- const loginPage = new LoginPage();
- const mainPage = new MainPage();
- const worklistPage = new WorklistPage();
- beforeEach(() => {
- mockFetchTwoWorks();
- });
- describe('TC-WL-COL-01: 使用本地配置显示列', () => {
- it('应该在API失败时使用本地配置', () => {
- // Mock API 失败,强制使用本地配置
- mockColumnConfigFail();
- cy.loginAndInitialize();
- mainPage.clickPatientManagementButton();
- mainPage.clickWorklistButton();
- // 等待配置API失败
- cy.wait('@fetchColumnConfigFail');
- // 验证表格可见
- worklistPage.getTable().should('be.visible');
- // 验证显示了配置的列(这里假设本地配置显示9个列)
- // 注意:实际列数取决于本地适配器的实现
- worklistPage.getHeaderCount().should('be.gte', 1);
- });
- });
- describe('TC-WL-COL-02: 使用远程API配置显示列', () => {
- it('应该从API获取配置并正确应用', () => {
- // Mock API 成功返回配置
- mockColumnConfigSuccess();
- cy.loginAndInitialize();
- mainPage.clickPatientManagementButton();
- mainPage.clickWorklistButton();
- // 等待配置API成功
- cy.wait('@fetchColumnConfig');
- // 验证表格显示 API 配置的列(9个可见列)
- worklistPage.getHeaderCount().should('eq', 9);
- // 验证特定列存在
- worklistPage.columnExists('患者ID'); // PatientID
- worklistPage.columnExists('患者姓名'); // PatientName
- worklistPage.columnExists('检查ID'); // StudyID
- worklistPage.columnExists('登记号'); // AccessionNumber
- worklistPage.columnExists('检查状态'); // StudyStatus
- worklistPage.columnExists('模态'); // Modality
- });
- });
- describe('TC-WL-COL-03: API失败时回退到本地配置', () => {
- it('应该在API失败后自动使用本地配置', () => {
- mockColumnConfigFail();
- cy.loginAndInitialize();
- mainPage.clickPatientManagementButton();
- mainPage.clickWorklistButton();
- cy.wait('@fetchColumnConfigFail');
- // 验证表格正常显示(使用本地配置)
- worklistPage.getTable().should('be.visible');
- worklistPage.getTable().find('tr').should('have.length.at.least', 1);
- });
- });
- describe('TC-WL-COL-04: 验证特定列的显示/隐藏', () => {
- it('应该只显示配置中visible=true的列', () => {
- mockColumnConfigSuccess();
- cy.loginAndInitialize();
- mainPage.clickPatientManagementButton();
- mainPage.clickWorklistButton();
- cy.wait('@fetchColumnConfig');
- // 验证可见列存在
- worklistPage.columnExists('患者ID');
- worklistPage.columnExists('患者姓名');
- // 验证隐藏列不存在
- worklistPage.columnNotExists('StudyInstanceUID');
- worklistPage.columnNotExists('SpecificCharacterSet');
- });
- });
- describe('TC-WL-COL-05: 验证列的显示顺序', () => {
- it('应该按配置的order顺序显示列', () => {
- mockColumnConfigCustomOrder();
- cy.loginAndInitialize();
- mainPage.clickPatientManagementButton();
- mainPage.clickWorklistButton();
- cy.wait('@fetchColumnConfig');
- // 验证列顺序
- worklistPage.getTableHeaders().should(($headers) => {
- // 第一列应该是 StudyStatus (order=1)
- expect($headers.eq(0).text()).to.include('检查状态');
- // 第二列应该是 PatientID (order=2)
- expect($headers.eq(1).text()).to.include('患者ID');
- // 第三列应该是 Modality (order=3)
- expect($headers.eq(2).text()).to.include('模态');
- // 第四列应该是 PatientName (order=4)
- expect($headers.eq(3).text()).to.include('患者姓名');
- });
- });
- });
- describe('TC-WL-COL-06: 验证列宽配置', () => {
- it('应该应用配置中的列宽', () => {
- mockColumnConfigMinimal();
- cy.loginAndInitialize();
- mainPage.clickPatientManagementButton();
- mainPage.clickWorklistButton();
- cy.wait('@fetchColumnConfig');
- // 验证列宽(允许一定的误差范围,因为可能有padding等)
- worklistPage.getColumnWidth('患者ID').should('be.closeTo', 120, 10);
- worklistPage.getColumnWidth('患者姓名').should('be.closeTo', 150, 10);
- });
- });
- describe('TC-WL-COL-07: 无配置时显示所有列', () => {
- it('应该在无配置时显示所有35个列(向后兼容)', () => {
- // Mock空配置或不Mock配置API
- cy.intercept('GET', '/api/config/table-columns', {
- statusCode: 200,
- body: {
- success: true,
- data: [
- {
- tableName: 'worklist',
- columns: [], // 空配置
- },
- ],
- },
- }).as('emptyConfig');
- cy.loginAndInitialize();
- mainPage.clickPatientManagementButton();
- mainPage.clickWorklistButton();
- cy.wait('@emptyConfig');
- // 验证显示所有列(35列)
- worklistPage.getHeaderCount().should('eq', 35);
- });
- });
- });
|