123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- describe('settings', () => {
- describe('renderer', () => {
- var id = 'testContainer';
- beforeEach(function() {
- this.$container = $(`<div id="${id}"></div>`).appendTo('body');
- });
- afterEach(function() {
- if (this.$container) {
- destroy();
- this.$container.remove();
- }
- });
- describe('defined in constructor', () => {
- it('should use text renderer by default', () => {
- var originalTextRenderer = Handsontable.cellTypes.text.renderer;
- spyOn(Handsontable.cellTypes.text, 'renderer');
- Handsontable.renderers.registerRenderer('text', Handsontable.cellTypes.text.renderer);
- handsontable();
- expect(Handsontable.cellTypes.text.renderer).toHaveBeenCalled();
- Handsontable.renderers.registerRenderer('text', originalTextRenderer);
- });
- it('should use renderer from predefined string', () => {
- var originalTextRenderer = Handsontable.renderers.TextRenderer;
- spyOn(Handsontable.renderers, 'TextRenderer');
- Handsontable.renderers.registerRenderer('text', Handsontable.renderers.TextRenderer);
- var originalCheckboxRenderer = Handsontable.renderers.CheckboxRenderer;
- spyOn(Handsontable.renderers, 'CheckboxRenderer');
- Handsontable.renderers.registerRenderer('checkbox', Handsontable.renderers.CheckboxRenderer);
- handsontable({
- columns: [
- {
- renderer: 'checkbox'
- }
- ]
- });
- expect(Handsontable.renderers.TextRenderer).not.toHaveBeenCalled();
- expect(Handsontable.renderers.CheckboxRenderer).toHaveBeenCalled();
- Handsontable.renderers.registerRenderer('text', originalTextRenderer);
- Handsontable.renderers.registerRenderer('checkbox', originalCheckboxRenderer);
- });
- it('should use renderer from predefined string when columns is a function', () => {
- var originalTextRenderer = Handsontable.renderers.TextRenderer;
- spyOn(Handsontable.renderers, 'TextRenderer');
- Handsontable.renderers.registerRenderer('text', Handsontable.renderers.TextRenderer);
- var originalCheckboxRenderer = Handsontable.renderers.CheckboxRenderer;
- spyOn(Handsontable.renderers, 'CheckboxRenderer');
- Handsontable.renderers.registerRenderer('checkbox', Handsontable.renderers.CheckboxRenderer);
- handsontable({
- columns(column) {
- return column === 0 ? {renderer: 'checkbox'} : null;
- }
- });
- expect(Handsontable.renderers.TextRenderer).not.toHaveBeenCalled();
- expect(Handsontable.renderers.CheckboxRenderer).toHaveBeenCalled();
- Handsontable.renderers.registerRenderer('text', originalTextRenderer);
- Handsontable.renderers.registerRenderer('checkbox', originalCheckboxRenderer);
- });
- it('should use renderer from custom function', () => {
- var called = false;
- function myRenderer() {
- called = true;
- }
- handsontable({
- columns: [
- {
- renderer: myRenderer
- }
- ]
- });
- expect(called).toBe(true);
- });
- it('should use renderer from custom function when columns is a function', () => {
- var called = false;
- function myRenderer() {
- called = true;
- }
- handsontable({
- columns(column) {
- return column === 0 ? {renderer: myRenderer} : null;
- }
- });
- expect(called).toBe(true);
- });
- it('should use renderer from custom string', () => {
- var myRenderer = jasmine.createSpy('myRenderer');
- Handsontable.renderers.registerRenderer('myRenderer', myRenderer);
- handsontable({
- columns: [
- {
- renderer: 'myRenderer'
- }
- ]
- });
- expect(myRenderer).toHaveBeenCalled();
- });
- it('should use renderer from custom string when columns is a function', () => {
- var myRenderer = jasmine.createSpy('myRenderer');
- Handsontable.renderers.registerRenderer('myRenderer', myRenderer);
- handsontable({
- columns(column) {
- return column === 0 ? {renderer: 'myRenderer'} : null;
- }
- });
- expect(myRenderer).toHaveBeenCalled();
- });
- });
- it('should call renderer with cellProperties.row, cellProperties.col matching row and col arguments', () => {
- var rendererSpy = jasmine.createSpy('rendererSpy').and.callThrough();
- var cellPropertiesCache = [];
- rendererSpy.and.callFake((instance, TD, row, col, prop, value, cellProperties) => {
- cellPropertiesCache.push({
- row: cellProperties.row,
- col: cellProperties.col
- });
- });
- handsontable({
- renderer: rendererSpy
- });
- for (var i = 0, len = rendererSpy.calls.count(); i < len; i++) {
- var args = rendererSpy.calls.argsFor(i);
- var row = args[2];
- var col = args[3];
- var cellProperties = cellPropertiesCache[i];
- expect(row).toEqual(cellProperties.row);
- expect(col).toEqual(cellProperties.col);
- }
- });
- it('should call cells function before passing cellProperties to renderer', () => {
- var rendererSpy = jasmine.createSpy('rendererSpy').and.callThrough();
- var cellPropertiesCache = [];
- rendererSpy.and.callFake((instance, TD, row, col, prop, value, cellProperties) => {
- cellPropertiesCache.push({
- cellsRow: cellProperties.cellsRow,
- cellsCol: cellProperties.cellsCol
- });
- });
- handsontable({
- renderer: rendererSpy,
- cells(row, col) {
- return {
- cellsRow: row,
- cellsCol: col
- };
- }
- });
- for (var i = 0, len = rendererSpy.calls.count(); i < len; i++) {
- var args = rendererSpy.calls.argsFor(i);
- var row = args[2];
- var col = args[3];
- var cellProperties = cellPropertiesCache[i];
- expect(row).toEqual(cellProperties.cellsRow);
- expect(col).toEqual(cellProperties.cellsCol);
- }
- });
- });
- });
|