import getMachine from '.'; import { IStoreState } from '../../index.data'; describe('machine as row-picker', () => { const state = ({ rows: [ { id: 1, i: 1 }, { id: 2, i: 2 }, { id: 3, i: 3 }, { id: 4, i: 4 }, ], cells: { 11: { id: 11, i: 1, j: 0, rowId: 1 }, 12: { id: 12, i: 1, j: 1, rowId: 1 }, 21: { id: 21, i: 2, j: 0, rowId: 2 }, 22: { id: 22, i: 2, j: 1, rowId: 2 }, 31: { id: 31, i: 2, j: 0, rowId: 3 }, 32: { id: 32, i: 2, j: 1, rowId: 3 }, 41: { id: 41, i: 2, j: 0, rowId: 4 }, 42: { id: 42, i: 2, j: 1, rowId: 4 }, }, } as any) as IStoreState; it('点击第21单元格', () => { const machine = getMachine(); const state1 = machine.transition('idle', { type: 'MOUSE.DOWN', selectedCell: 21, state, }); expect(state1.value).toEqual({ selecting: 'cell' }); expect(state1.context).toEqual({ usage: 'cell-picker', selectionType: 'cell', selectedCellRange: [21, 21], }); }); it('点击第22单元格', () => { const machine2 = getMachine({ selectionType: 'cell', selectedCellRange: [21, 21] }); const state2 = machine2.transition( { selecting: 'cell' }, { type: 'MOUSE.MOVE', selectedCell: 22, state, }, ); expect(state2.value).toEqual({ selecting: 'cell' }); expect(state2.context).toEqual({ usage: 'cell-picker', selectionType: 'cell', selectedCellRange: [22, 22], }); }); });