@quantlab/handsontable
Version:
Spreadsheet-like data grid editor that provides copy/paste functionality compatible with Excel/Google Docs
121 lines (95 loc) • 3.42 kB
JavaScript
describe('Core.setCellMeta', () => {
const id = 'testContainer';
beforeEach(function() {
this.$container = $(`<div id="${id}"></div>`).appendTo('body');
});
afterEach(function() {
if (this.$container) {
destroy();
this.$container.remove();
}
});
it('should set correct meta className for cell', () => {
const className = 'htCenter htMiddle';
handsontable({
afterCellMetaReset() {
this.setCellMeta(0, 0, 'className', className);
}
});
let cellMeta = getCellMeta(0, 0);
expect(cellMeta.className).not.toBeUndefined();
expect(cellMeta.className).toEqual(className);
});
it('should set correct meta className for non existed cell', () => {
const className = 'htCenter htMiddle';
handsontable({
data: Handsontable.helper.createSpreadsheetData(5, 5),
afterCellMetaReset() {
this.setCellMeta(100, 100, 'className', className);
}
});
let cellMeta = getCellMeta(100, 100);
expect(cellMeta.className).not.toBeUndefined();
expect(cellMeta.className).toEqual(className);
});
it('should set correct meta classNames for cells using cell in configuration', function() {
const classNames = [
'htCenter htTop',
'htRight htBottom'
];
handsontable({
cell: [
{row: 0, col: 0, className: classNames[0] },
{row: 1, col: 1, className: classNames[1] }
]
});
expect(this.$container.find('tbody tr:eq(0) td:eq(0)')[0].className).toEqual(classNames[0]);
expect(this.$container.find('tbody tr:eq(1) td:eq(1)')[0].className).toEqual(classNames[1]);
});
it('should change cell meta data with updateSettings when the cell option is defined', function() {
const classNames = [
'htCenter htTop',
'htRight htBottom'
];
handsontable({
cell: [
{row: 0, col: 0, className: classNames[0] },
{row: 1, col: 1, className: classNames[1] }
]
});
expect(this.$container.find('tbody tr:eq(0) td:eq(0)')[0].className).toEqual(classNames[0]);
expect(this.$container.find('tbody tr:eq(1) td:eq(1)')[0].className).toEqual(classNames[1]);
updateSettings({
cell: []
});
expect(this.$container.find('tbody tr:eq(0) td:eq(0)')[0].className).toEqual('');
expect(this.$container.find('tbody tr:eq(1) td:eq(1)')[0].className).toEqual('');
updateSettings({
cell: [
{row: 0, col: 0, className: classNames[1] },
{row: 1, col: 1, className: classNames[0] }
]
});
expect(this.$container.find('tbody tr:eq(0) td:eq(0)')[0].className).toEqual(classNames[1]);
expect(this.$container.find('tbody tr:eq(1) td:eq(1)')[0].className).toEqual(classNames[0]);
});
it('should call afterSetCellMeta plugin hook', () => {
const className = 'htCenter htMiddle';
let res = {};
handsontable({
afterCellMetaReset() {
this.setCellMeta(0, 1, 'className', className);
},
afterSetCellMeta(row, col, key, val) {
res.row = row;
res.col = col;
res.key = key;
res.val = val;
}
});
expect(res.row).toEqual(0);
expect(res.col).toEqual(1);
expect(res.key).toEqual('className');
expect(res.val).toEqual(className);
});
});