observer.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. /* globals document */
  6. import Observer from '../../../src/view/observer/observer';
  7. import View from '../../../src/view/view';
  8. import { StylesProcessor } from '../../../src/view/stylesmap';
  9. describe( 'Observer', () => {
  10. describe( 'constructor()', () => {
  11. it( 'should create Observer with properties', () => {
  12. const view = new View( new StylesProcessor() );
  13. const observer = new Observer( view );
  14. expect( observer ).to.be.an.instanceof( Observer );
  15. expect( observer ).to.have.property( 'document' ).that.equals( view.document );
  16. expect( observer ).to.have.property( 'isEnabled' ).that.is.false;
  17. } );
  18. } );
  19. describe( 'enable', () => {
  20. it( 'should set isEnabled to true', () => {
  21. const observer = new Observer( {} );
  22. expect( observer.isEnabled ).to.be.false;
  23. observer.enable();
  24. expect( observer.isEnabled ).to.be.true;
  25. } );
  26. } );
  27. describe( 'disable', () => {
  28. it( 'should set isEnabled to false', () => {
  29. const observer = new Observer( {} );
  30. observer.enable();
  31. expect( observer.isEnabled ).to.be.true;
  32. observer.disable();
  33. expect( observer.isEnabled ).to.be.false;
  34. } );
  35. } );
  36. describe( 'checkShouldIgnoreEventFromTarget()', () => {
  37. it( 'should not ignore on targets which are non-element node types', () => {
  38. const observer = new Observer( {} );
  39. expect( observer.checkShouldIgnoreEventFromTarget( {} ) ).to.be.false;
  40. expect( observer.checkShouldIgnoreEventFromTarget( { nodeType: 2 } ) ).to.be.false;
  41. expect( observer.checkShouldIgnoreEventFromTarget( { nodeType: 3 } ) ).to.be.false;
  42. expect( observer.checkShouldIgnoreEventFromTarget( { nodeType: 3, parentNode: null } ) ).to.be.false;
  43. } );
  44. it( 'should not ignore on targets without the `data-cke-ignore-events` attribute neither on itself nor in any ancestor', () => {
  45. const documentFragment = document.createDocumentFragment();
  46. const section = document.createElement( 'section' );
  47. const div = document.createElement( 'div' );
  48. const button = document.createElement( 'button' );
  49. documentFragment.appendChild( section ).appendChild( div ).appendChild( button );
  50. const observer = new Observer( {} );
  51. expect( observer.checkShouldIgnoreEventFromTarget( section ) ).to.be.false;
  52. expect( observer.checkShouldIgnoreEventFromTarget( div ) ).to.be.false;
  53. expect( observer.checkShouldIgnoreEventFromTarget( button ) ).to.be.false;
  54. } );
  55. it( 'should ignore on targets with the `data-cke-ignore-events` attribute set on itself or on any ancestor', () => {
  56. const documentFragment = document.createDocumentFragment();
  57. const section = document.createElement( 'section' );
  58. const div = document.createElement( 'div' );
  59. const button = document.createElement( 'button' );
  60. section.setAttribute( 'data-cke-ignore-events', 'true' );
  61. documentFragment.appendChild( section ).appendChild( div ).appendChild( button );
  62. const observer = new Observer( {} );
  63. expect( observer.checkShouldIgnoreEventFromTarget( section ) ).to.be.true;
  64. expect( observer.checkShouldIgnoreEventFromTarget( div ) ).to.be.true;
  65. expect( observer.checkShouldIgnoreEventFromTarget( button ) ).to.be.true;
  66. } );
  67. } );
  68. } );