8
0

enterobserver.js 1.5 KB

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