import { tryToggleCollapse } from './collapse'; import { treeArray } from 'valor-app-utils'; describe('toggleCollapsed', () => { const columns = [{ id: 1, type: 'row-no', j: 0 }]; const cells = { 1: { id: 1, rowId: 1 }, 2: { id: 2, rowId: 2 }, 3: { id: 3, rowId: 3 }, 4: { id: 4, rowId: 4 }, 5: { id: 5, rowId: 5 }, 6: { id: 6, rowId: 6 }, 7: { id: 7, rowId: 7 }, 8: { id: 8, rowId: 8 }, 9: { id: 9, rowId: 9 }, }; const rows = [ { id: 1, level: 1, cellIds: [1] }, { id: 2, level: 2, cellIds: [2] }, { id: 3, level: 3, cellIds: [3] }, { id: 4, level: 3, cellIds: [4] }, { id: 5, level: 2, cellIds: [5] }, { id: 6, level: 1, cellIds: [6] }, { id: 7, level: 2, cellIds: [7] }, { id: 8, level: 1, cellIds: [8] }, { id: 9, level: 1, cellIds: [9] }, ].map(it => ({ ...it, type: 'body' })); const state = { cells, rows, columns, treeContext: treeArray.getTreeContexts(rows as any), }; it('case0: 叶结点无需折叠', () => { expect(tryToggleCollapse(state as any, 9)).toEqual(null); expect(tryToggleCollapse(state as any, 8)).toEqual(null); expect(tryToggleCollapse(state as any, 7)).toEqual(null); expect(tryToggleCollapse(state as any, 4)).toEqual(null); }); it('case1: 非叶结点可折叠', () => { expect(tryToggleCollapse(state as any, 1)).toEqual({ collapsedRowIds: [1], }); expect(tryToggleCollapse(state as any, 2)).toEqual({ collapsedRowIds: [2], }); }); it('case2: 已折叠的结点, 再次调用将变成展开', () => { expect(tryToggleCollapse({ ...state, collapsedRowIds: [1] } as any, 1)).toEqual({ collapsedRowIds: [], }); expect(tryToggleCollapse({ ...state, collapsedRowIds: [1, 6] } as any, 6)).toEqual({ collapsedRowIds: [1], }); }); });