@quantlab/handsontable
Version:
Spreadsheet-like data grid editor that provides copy/paste functionality compatible with Excel/Google Docs
58 lines (45 loc) • 2.15 kB
JavaScript
import localHooks from 'handsontable/mixins/localHooks';
describe('localHooks mixin', () => {
it('should have empty collection on init', () => {
expect(localHooks._localHooks).toEqual(jasmine.any(Object));
});
it('should add local hook to the hooks collection', () => {
var callback = function() {};
var callback1 = function() {};
var callback2 = function() {};
localHooks.addLocalHook('myHook', callback);
localHooks.addLocalHook('myHook', callback);
localHooks.addLocalHook('myHook', callback1);
localHooks.addLocalHook('myHook1', callback2);
expect(localHooks._localHooks.myHook.length).toBe(3);
expect(localHooks._localHooks.myHook[0]).toBe(callback);
expect(localHooks._localHooks.myHook[1]).toBe(callback);
expect(localHooks._localHooks.myHook[2]).toBe(callback1);
expect(localHooks._localHooks.myHook1.length).toBe(1);
expect(localHooks._localHooks.myHook1[0]).toBe(callback2);
});
it('should run local hooks registered in collection', () => {
var callback = jasmine.createSpy();
var callback1 = jasmine.createSpy();
var callback2 = jasmine.createSpy();
var myArray = [1, 2];
localHooks._localHooks.myHook = [callback, callback1];
localHooks._localHooks.myHook1 = [callback, callback2];
localHooks.runLocalHooks('myHook');
localHooks.runLocalHooks('myHook1', 'foo', 'bar', myArray);
expect(callback.calls.count()).toBe(2);
expect(callback.calls.argsFor(0)).toEqual([]);
expect(callback.calls.argsFor(1)).toEqual(['foo', 'bar', [1, 2]]);
expect(callback).toHaveBeenCalled();
expect(callback2).toHaveBeenCalledWith('foo', 'bar', [1, 2]);
});
it('should clear all registered hooks from collection', () => {
var callback = jasmine.createSpy();
var callback1 = jasmine.createSpy();
var callback2 = jasmine.createSpy();
localHooks._localHooks.myHook = [callback, callback1];
localHooks._localHooks.myHook1 = [callback, callback2];
localHooks.clearLocalHooks();
expect(localHooks._localHooks).toEqual(jasmine.any(Object));
});
});