import { IStoreState, ID } from '../../index.data'; import { id2Label, label2Id, getCellIdsFromPositionedContent, idFormula2LabelFormula, labelFormula2IdFormula, } from './helper'; import { FormulaManagerConfig } from '../index.data'; const state = ({ rows: [{ id: 1, cellIds: [11, 12] }, { id: 2, cellIds: [21, 22] }, { id: 3, cellIds: [31, 32] }], cells: { 11: { id: 11, rowId: 1 }, 12: { id: 12, rowId: 1 }, 21: { id: 21, rowId: 2 }, 22: { id: 22, rowId: 2 }, 31: { id: 31, rowId: 3 }, 32: { id: 32, rowId: 3 }, }, } as any) as IStoreState; const config = { getSheetIdByCode: (code: string) => { return '1'; }, getExternalCellIdByLabel: (sheetCode: string, cellLabel: string) => { return 'ext11'; }, getSheetCodeById: (id: ID) => { return 'AA'; }, getExternalCellLabelById: (sheetId: ID, cellId: ID) => { return 'A5'; }, } as FormulaManagerConfig; describe('idFormula2LabelFormula', () => { it('case0: 内部公式', () => { const formulaStr = 'sum({{id11}}+{{id21}})'; const result = idFormula2LabelFormula(state, formulaStr); const expected = 'sum(A1+A2)'; expect(result).toEqual(expected); }); it('case1: 外部公式', () => { const formulaStr = 'sum({{id33!11}}+{{id21}})'; const result = idFormula2LabelFormula(state, formulaStr, config); const expected = 'sum(AA!A5+A2)'; expect(result).toEqual(expected); }); }); describe('labelFromula2IdFormula', () => { it('case0: 内部公式', () => { const formulaStr = 'sum(A1+A2)'; const result = labelFormula2IdFormula(state, formulaStr); const expected = 'sum({{id11}}+{{id21}})'; expect(result).toEqual(expected); }); it('case1: 外部公式', () => { const formulaStr = 'sum(AA!A5+A2)'; const result = labelFormula2IdFormula(state, formulaStr, config); const expected = 'sum({{id1!ext11}}+{{id21}})'; expect(result).toEqual(expected); }); }); describe('id2Label', () => { it('case0: 仅内部公式', () => { expect(label2Id(state, 'A1')).toEqual(11); expect(label2Id(state, 'B2')).toEqual(22); expect(() => label2Id(state, 'C3')).toThrow(); }); it('case1: 外部公式', () => { expect(label2Id(state, 'B!A1', config)).toEqual('1!ext11'); }); }); describe('getCellIdsFromPositionedContent', () => { it('case0:内部公式', () => { expect(getCellIdsFromPositionedContent(state, 'A1+A2')).toEqual([11, 21]); }); it('case0: 外部公式', () => { expect(getCellIdsFromPositionedContent(state, 'B!A1+A2', config)).toEqual([21]); }); }); describe('id2Label', () => { it('case0, 内部', () => { expect(id2Label(state, 11)).toEqual('A1'); }); it('case1: 外部', () => { expect(id2Label(state, '111!15', config)).toEqual('AA!A5'); }); });