8
0

enterobserver.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /**
  2. * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. import ViewDocument from '/ckeditor5/engine/view/document.js';
  6. import EnterObserver from '/ckeditor5/enter/enterobserver.js';
  7. import DomEventData from '/ckeditor5/engine/view/observer/domeventdata.js';
  8. import { getCode } from '/ckeditor5/utils/keyboard.js';
  9. describe( 'EnterObserver', () => {
  10. let viewDocument, observer;
  11. beforeEach( () => {
  12. viewDocument = new ViewDocument();
  13. observer = viewDocument.addObserver( EnterObserver );
  14. } );
  15. // See #10.
  16. it( 'can be initialized', () => {
  17. expect( () => {
  18. viewDocument.createRoot( document.createElement( 'div' ) );
  19. } ).to.not.throw();
  20. } );
  21. describe( 'enter event', () => {
  22. it( 'is fired on keydown', () => {
  23. const spy = sinon.spy();
  24. viewDocument.on( 'enter', spy );
  25. viewDocument.fire( 'keydown', new DomEventData( viewDocument, getDomEvent(), {
  26. keyCode: getCode( 'enter' )
  27. } ) );
  28. expect( spy.calledOnce ).to.be.true;
  29. } );
  30. it( 'is not fired on keydown when keyCode does not match enter', () => {
  31. const spy = sinon.spy();
  32. viewDocument.on( 'enter', spy );
  33. viewDocument.fire( 'keydown', new DomEventData( viewDocument, getDomEvent(), {
  34. keyCode: 1
  35. } ) );
  36. expect( spy.calledOnce ).to.be.false;
  37. } );
  38. } );
  39. function getDomEvent() {
  40. return {
  41. preventDefault: sinon.spy()
  42. };
  43. }
  44. } );