tui-grid
Version:
TOAST UI Grid : Powerful data grid control supported by TOAST UI
148 lines (122 loc) • 5.16 kB
JavaScript
;
var $ = require('jquery');
var ModelManager = require('model/manager');
var DomState = require('domState');
var ColumnModel = require('model/data/columnModel');
var DataModel = require('model/data/rowList');
var DimensionModel = require('model/dimension');
var SmartRenderModel = require('model/renderer-smart');
var CoordRowModel = require('model/coordRow');
var SummaryModel = require('model/summary');
var ClipboardModel = require('model/clipboard');
describe('model/manager', function() {
var domState = new DomState($('<div>'));
describe('creates dimension model', function() {
it('with options', function() {
var manager, dimension;
manager = new ModelManager({
header: {
height: 281
},
rowHeight: 72,
scrollX: true,
scrollY: true,
columnOptions: {
minWidth: 192
}
}, domState);
dimension = manager.dimensionModel;
expect(dimension.get('headerHeight')).toBe(281);
expect(dimension.get('rowHeight')).toBe(72);
expect(dimension.get('scrollX')).toBe(true);
expect(dimension.get('scrollY')).toBe(true);
expect(dimension.get('minimumColumnWidth')).toBe(192);
});
it('with options (boolean)', function() {
var manager, dimension;
manager = new ModelManager({
bodyHeight: 'fitToParent',
scrollX: false,
scrollY: false
});
dimension = manager.dimensionModel;
expect(dimension.get('fitToParentHeight')).toBe(true);
expect(dimension.get('scrollX')).toBe(false);
expect(dimension.get('scrollY')).toBe(false);
});
it('with required models', function() {
var manager, dimension;
manager = new ModelManager({}, domState);
dimension = manager.dimensionModel;
expect(dimension.columnModel instanceof ColumnModel).toBe(true);
expect(dimension.dataModel instanceof DataModel).toBe(true);
expect(dimension.domState).toBe(domState);
});
});
describe('creates renderer model', function() {
it('with options', function() {
var manager, renderModel, options;
options = {
emptyMessage: 'No Data',
showDummyRows: true
};
manager = new ModelManager(options);
renderModel = manager.renderModel;
expect(renderModel.get('emptyMessage', options.emptyMessage));
expect(renderModel.get('showDummyRows', options.showDummyRows));
});
it('with required models', function() {
var manager, renderModel;
manager = new ModelManager();
renderModel = manager.renderModel;
expect(renderModel.columnModel instanceof ColumnModel).toBe(true);
expect(renderModel.dataModel instanceof DataModel).toBe(true);
expect(renderModel.dimensionModel instanceof DimensionModel).toBe(true);
});
it('if virtualScrolling:false, instance should not be SmartRenderer', function() {
var manager = new ModelManager({
virtualScrolling: false
});
expect(manager.renderModel).not.toEqual(jasmine.any(SmartRenderModel));
});
it('if virtualScrolling:true, instance should be SmartRenderer', function() {
var manager = new ModelManager({
rowHeight: 10,
virtualScrolling: true
});
expect(manager.renderModel).toEqual(jasmine.any(SmartRenderModel));
});
});
describe('creates summary model', function() {
it('only if summary option exists', function() {
var manager1 = new ModelManager();
var manager2 = new ModelManager({
summary: {
columnContent: {}
}
});
expect(manager1.summaryModel).toBe(null);
expect(manager2.summaryModel).toEqual(jasmine.any(SummaryModel));
});
it('with dataModel and columnModel', function() {
var manager = new ModelManager({
summary: {columnContent: {}}
});
expect(manager.summaryModel.dataModel).toEqual(jasmine.any(DataModel));
expect(manager.summaryModel.columnModel).toEqual(jasmine.any(ColumnModel));
});
});
it('creates coordRow model', function() {
var manager = new ModelManager();
expect(manager.coordRowModel).toEqual(jasmine.any(CoordRowModel));
});
it('creates clipboard model', function() {
var manager = new ModelManager({
copyOptions: {
useFormattedValue: true
}
});
expect(manager.clipboardModel).toEqual(jasmine.any(ClipboardModel));
expect(manager.clipboardModel.copyOptions.useFormattedValue).toBe(true);
});
});