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
50
51
52
53
54
55
56
| import { describe, expect, it } from 'vitest';
|
| import {
| buildFormulaBindingRequest,
| formulaVersionOptions,
| parameterBindingCandidates,
| resultBindingCandidates,
| } from '../../src/domain/formula-mapping';
| import type { FormulaBindingCandidate } from '../../src/domain/formula-mapping';
|
| const bindings: FormulaBindingCandidate[] = [
| { id: 'decimal', controlRole: 'PRIMARY', status: 'ACTIVE', fieldDataType: 'DECIMAL', readSource: 'NONE', writeTarget: 'ELN_RECORD', batchMode: 'RECORD_PRIVATE' },
| { id: 'text', controlRole: 'PRIMARY', status: 'ACTIVE', fieldDataType: 'TEXT', readSource: 'NONE', writeTarget: 'ELN_RECORD', batchMode: 'RECORD_PRIVATE' },
| { id: 'reference', controlRole: 'REFERENCE', status: 'ACTIVE', fieldDataType: 'DECIMAL', readSource: 'NONE', writeTarget: 'ELN_RECORD', batchMode: 'RECORD_PRIVATE' },
| { id: 'disabled', controlRole: 'PRIMARY', status: 'CANCELLED', fieldDataType: 'DECIMAL', readSource: 'NONE', writeTarget: 'ELN_RECORD', batchMode: 'RECORD_PRIVATE' },
| { id: 'readonly', controlRole: 'PRIMARY', status: 'ACTIVE', fieldDataType: 'DECIMAL', readSource: 'LIMS_TASK', writeTarget: 'ELN_RECORD', batchMode: 'RECORD_PRIVATE' },
| ];
|
| describe('formula mapping rules', () => {
| it('只允许启用公式的当前 PUBLISHED 与任意 PRE_RELEASE 新建映射,历史发布版本只读展示', () => {
| expect(formulaVersionOptions([
| { id: 'current', formulaEnabled: true, isCurrent: true, status: 'PUBLISHED' },
| { id: 'pre', formulaEnabled: true, isCurrent: false, status: 'PRE_RELEASE' },
| { id: 'historic', formulaEnabled: true, isCurrent: false, status: 'PUBLISHED' },
| { id: 'disabled', formulaEnabled: false, isCurrent: true, status: 'PUBLISHED' },
| ])).toEqual([
| { id: 'current', risk: false, selectable: true },
| { id: 'pre', risk: true, selectable: true },
| { id: 'historic', risk: false, selectable: false },
| ]);
| });
|
| it('槽位只接受类型兼容的 ACTIVE PRIMARY,P3 拒绝集合槽位', () => {
| expect(parameterBindingCandidates('DECIMAL', bindings)).toEqual(['decimal', 'readonly']);
| expect(parameterBindingCandidates('TEXT', bindings)).toEqual(['text']);
| expect(parameterBindingCandidates('DECIMAL_LIST', bindings)).toEqual([]);
| });
|
| it('结果仅接受可写的 ACTIVE PRIMARY 且类型兼容的字段', () => {
| expect(resultBindingCandidates('DECIMAL', bindings)).toEqual(['decimal']);
| });
|
| it('请求体仅发送公式版本、绑定 ID 和操作码', () => {
| expect(buildFormulaBindingRequest({
| formulaVersionId: 'formula-version',
| parameterBindings: { amount: 'decimal' },
| resultBindingId: 'result',
| operationCode: 'reserve-1',
| })).toEqual({
| formulaVersionId: 'formula-version',
| parameterBindings: { amount: 'decimal' },
| resultBindingId: 'result',
| operationCode: 'reserve-1',
| });
| });
| });
|
|