刘光辉
6 小时以前 cf11e63b659afcc9792ab3e395f1b45d844431a8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* @vitest-environment happy-dom */
 
import { describe, expect, it } from 'vitest';
 
import workspaceSource from '../SourceWorkspace.vue?raw';
 
const templateSource = workspaceSource.match(/<template>([\s\S]*)<\/template>/)?.[1] || '';
 
describe('lIMS 数据项简化工作台', () => {
  it('只向业务人员呈现数据项概念', () => {
    expect(templateSource).toContain('LIMS 数据项');
    expect(templateSource).not.toMatch(/tab="数据集"|起始业务对象|对象步骤|Join 来源|Join 目标|RAW|DISPLAY_NAME/);
  });
 
  it('从业务名称自动生成只读数据标识', () => {
    expect(workspaceSource).toMatch(/data-test=["']source-display-name["']/);
    expect(workspaceSource).toContain(':maxlength="200"');
    expect(workspaceSource).toMatch(/suggestFieldCode\(.*displayName/);
    expect(workspaceSource).toMatch(/data-test=["']source-property-code["']/);
    expect(workspaceSource).toMatch(/source-property-code[^>]*(readonly|disabled)/);
  });
 
  it('方案 A 的聚焦抽屉提供独立来源路径页面入口', () => {
    expect(workspaceSource).toContain('<BasicDrawer');
    expect(workspaceSource).toContain('data-test="manage-source-paths"');
    expect(workspaceSource).toContain('来源路径管理');
    expect(workspaceSource).toContain("onlineUtils.route('/eln/source-paths', { title: '来源路径管理' })");
    expect(workspaceSource).toContain('onActivated');
  });
 
  it('不在抽屉或弹窗组件上使用 v-show', () => {
    expect(templateSource).not.toMatch(/<(?:BasicDrawer|BasicModal)[^>]+v-show=/);
  });
 
  it('复用标准列表页面结构和通用表格加载状态', () => {
    expect(templateSource).toContain('jnpf-content-wrapper-search-box');
    expect(templateSource).toContain('jnpf-content-wrapper-content');
    expect(templateSource.match(/<BasicVxeTable/g)).toHaveLength(1);
    expect(templateSource).not.toContain('<ASpin');
    expect(templateSource).not.toContain('<BasicModal');
    expect(workspaceSource).toContain('setTableLoading');
  });
 
  it('为带底部操作区的抽屉预留底部空间', () => {
    const editorDrawerTag = templateSource.match(/<BasicDrawer[^>]+registerEditor[^>]+>/)?.[0] || '';
    expect(editorDrawerTag).toContain('show-footer');
    expect(workspaceSource).not.toContain('registerPathEditor');
  });
});