localHooks.spec.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import localHooks from 'handsontable/mixins/localHooks';
  2. describe('localHooks mixin', () => {
  3. afterEach(() => {
  4. localHooks._localHooks = Object.create(null);
  5. });
  6. describe('.addLocalHook', () => {
  7. it('should return itself to make method chainable', () => {
  8. expect(localHooks.addLocalHook('myHook', () => {})).toBe(localHooks);
  9. });
  10. });
  11. describe('.clearLocalHooks', () => {
  12. it('should return itself to make method chainable', () => {
  13. expect(localHooks.clearLocalHooks()).toBe(localHooks);
  14. });
  15. });
  16. it('should have empty collection on init', () => {
  17. expect(localHooks._localHooks).toEqual(jasmine.any(Object));
  18. });
  19. it('should add local hook to the hooks collection', () => {
  20. const callback = () => {};
  21. const callback1 = () => {};
  22. const callback2 = () => {};
  23. localHooks.addLocalHook('myHook', callback);
  24. localHooks.addLocalHook('myHook', callback);
  25. localHooks.addLocalHook('myHook', callback1);
  26. localHooks.addLocalHook('myHook1', callback2);
  27. expect(localHooks._localHooks.myHook.length).toBe(3);
  28. expect(localHooks._localHooks.myHook[0]).toBe(callback);
  29. expect(localHooks._localHooks.myHook[1]).toBe(callback);
  30. expect(localHooks._localHooks.myHook[2]).toBe(callback1);
  31. expect(localHooks._localHooks.myHook1.length).toBe(1);
  32. expect(localHooks._localHooks.myHook1[0]).toBe(callback2);
  33. });
  34. it('should run local hooks registered in collection', () => {
  35. const callback = jasmine.createSpy();
  36. const callback1 = jasmine.createSpy();
  37. const callback2 = jasmine.createSpy();
  38. const myArray = [1, 2];
  39. localHooks._localHooks.myHook = [callback, callback1];
  40. localHooks._localHooks.myHook1 = [callback, callback2];
  41. localHooks.runLocalHooks('myHook');
  42. localHooks.runLocalHooks('myHook1', 'foo', 'bar', myArray);
  43. expect(callback.calls.count()).toBe(2);
  44. expect(callback.calls.argsFor(0)).toEqual([]);
  45. expect(callback.calls.argsFor(1)).toEqual(['foo', 'bar', [1, 2]]);
  46. expect(callback).toHaveBeenCalled();
  47. expect(callback2).toHaveBeenCalledWith('foo', 'bar', [1, 2]);
  48. });
  49. it('should clear all registered hooks from collection', () => {
  50. const callback = () => {};
  51. const callback1 = () => {};
  52. const callback2 = () => {};
  53. localHooks._localHooks.myHook = [callback, callback1];
  54. localHooks._localHooks.myHook1 = [callback, callback2];
  55. localHooks.clearLocalHooks();
  56. expect(localHooks._localHooks).toEqual(jasmine.any(Object));
  57. });
  58. });