import * as React from 'react';
import { configure, mount, ReactWrapper } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import Story from './Story';
import SpreadSheet from '../../../SpreadSheetProvider';
import { sliceBy, mockResizeObserver } from 'valor-app-utils';
import { getCellsInfo } from '../helper';
mockResizeObserver();
configure({ adapter: new Adapter() });
describe('', () => {
it('插平级/undo', () => {
const wrapper = mount();
const sheetWrapper = wrapper.find(SpreadSheet).at(0);
// 选中 cell11
const spreadSheetInstance = sheetWrapper.instance() as any;
// 选中前必须先计算行列宽度
spreadSheetInstance.runtime.fsmService.send('MOUSE.DOWN', { selectedCell: 11 });
setTimeout(() => {
// 第一步: 插入平级
wrapper
.find('#insertSibling')
.at(0)
.simulate('click');
// 注意: 在计算后, 必须重新从wrapper开始查找
let cellInfo = getCellsInfo(wrapper);
expect(cellInfo.resultIds).toEqual([11, 100, 12]);
expect(cellInfo.resultValues).toEqual([1, 100, 1]);
wrapper
.find('#undo')
.at(0)
.simulate('click');
cellInfo = getCellsInfo(wrapper);
expect(cellInfo.resultIds).toEqual([11, 12]);
expect(cellInfo.resultValues).toEqual([1, 1]);
wrapper
.find('#redo')
.at(0)
.simulate('click');
cellInfo = getCellsInfo(wrapper);
expect(cellInfo.resultIds).toEqual([11, 100, 12]);
expect(cellInfo.resultValues).toEqual([1, 100, 1]);
});
});
it('插下级/undo', () => {
const wrapper = mount();
const sheetWrapper = wrapper.find(SpreadSheet).at(0);
// 选中 cell11
const spreadSheetInstance = sheetWrapper.instance() as any;
// 选中前必须先计算行列宽度
spreadSheetInstance.runtime.fsmService.send('MOUSE.DOWN', { selectedCell: 11 });
setTimeout(() => {
// 第一步: 插入平级
wrapper
.find('#insertChild')
.at(0)
.simulate('click');
const expectedIds = [11, 100, 12];
const expectedValues = [100, 100, 1];
// 注意: 在计算后, 必须重新从wrapper开始查找
let cellInfo = getCellsInfo(wrapper);
expect(cellInfo.resultIds).toEqual(expectedIds);
expect(cellInfo.resultValues).toEqual(expectedValues);
wrapper
.find('#undo')
.at(0)
.simulate('click');
cellInfo = getCellsInfo(wrapper);
expect(cellInfo.resultIds).toEqual([11, 12]);
expect(cellInfo.resultValues).toEqual([1, 1]);
wrapper
.find('#redo')
.at(0)
.simulate('click');
cellInfo = getCellsInfo(wrapper);
expect(cellInfo.resultIds).toEqual([11, 100, 12]);
expect(cellInfo.resultValues).toEqual([100, 100, 1]);
});
});
});