8
0

preventdefault.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /**
  2. * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  4. */
  5. /* global Event */
  6. import preventDefault from '../../src/bindings/preventdefault';
  7. import View from '../../src/view';
  8. describe( 'preventDefault', () => {
  9. it( 'prevents default of a native DOM event', () => {
  10. const view = new View();
  11. view.setTemplate( {
  12. tag: 'div',
  13. on: {
  14. foo: preventDefault( view )
  15. }
  16. } );
  17. const evt = new Event( 'foo', { bubbles: true } );
  18. const spy = sinon.spy( evt, 'preventDefault' );
  19. // Render to enable bubbling.
  20. view.render();
  21. view.element.dispatchEvent( evt );
  22. sinon.assert.calledOnce( spy );
  23. } );
  24. it( 'prevents only when target is view#element', () => {
  25. const view = new View();
  26. const child = new View();
  27. child.setTemplate( {
  28. tag: 'a'
  29. } );
  30. view.setTemplate( {
  31. tag: 'div',
  32. on: {
  33. foo: preventDefault( view )
  34. },
  35. children: [
  36. child
  37. ]
  38. } );
  39. const evt = new Event( 'foo', { bubbles: true } );
  40. const spy = sinon.spy( evt, 'preventDefault' );
  41. // Render to enable bubbling.
  42. view.render();
  43. child.element.dispatchEvent( evt );
  44. sinon.assert.notCalled( spy );
  45. } );
  46. } );