clipboardobserver.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /**
  2. * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /* globals document */
  6. import ClipboardObserver from '../src/clipboardobserver';
  7. import ViewDocument from '@ckeditor/ckeditor5-engine/src/view/document';
  8. import DataTransfer from '../src/datatransfer';
  9. describe( 'ClipboardObserver', () => {
  10. let viewDocument, observer;
  11. beforeEach( () => {
  12. viewDocument = new ViewDocument();
  13. observer = viewDocument.addObserver( ClipboardObserver );
  14. } );
  15. it( 'should define domEventType', () => {
  16. expect( observer.domEventType ).to.deep.equal( [ 'paste', 'copy', 'cut', 'drop' ] );
  17. } );
  18. describe( 'onDomEvent', () => {
  19. let pasteSpy, preventDefaultSpy;
  20. function getDataTransfer() {
  21. return {
  22. getData( type ) {
  23. return 'foo:' + type;
  24. }
  25. };
  26. }
  27. beforeEach( () => {
  28. pasteSpy = sinon.spy();
  29. preventDefaultSpy = sinon.spy();
  30. } );
  31. it( 'should fire paste with the right event data - clipboardData', () => {
  32. const dataTransfer = getDataTransfer();
  33. viewDocument.on( 'paste', pasteSpy );
  34. observer.onDomEvent( {
  35. type: 'paste',
  36. target: document.body,
  37. clipboardData: dataTransfer,
  38. preventDefault: preventDefaultSpy
  39. } );
  40. expect( pasteSpy.calledOnce ).to.be.true;
  41. const data = pasteSpy.args[ 0 ][ 1 ];
  42. expect( data.domTarget ).to.equal( document.body );
  43. expect( data.dataTransfer ).to.be.instanceOf( DataTransfer );
  44. expect( data.dataTransfer.getData( 'x/y' ) ).to.equal( 'foo:x/y' );
  45. expect( preventDefaultSpy.calledOnce ).to.be.true;
  46. } );
  47. it( 'should fire paste with the right event data - dataTransfer', () => {
  48. const dataTransfer = getDataTransfer();
  49. viewDocument.on( 'drop', pasteSpy );
  50. observer.onDomEvent( {
  51. type: 'drop',
  52. target: document.body,
  53. dataTransfer,
  54. preventDefault: preventDefaultSpy
  55. } );
  56. expect( pasteSpy.calledOnce ).to.be.true;
  57. const data = pasteSpy.args[ 0 ][ 1 ];
  58. expect( data.domTarget ).to.equal( document.body );
  59. expect( data.dataTransfer ).to.be.instanceOf( DataTransfer );
  60. expect( data.dataTransfer.getData( 'x/y' ) ).to.equal( 'foo:x/y' );
  61. expect( preventDefaultSpy.calledOnce ).to.be.true;
  62. } );
  63. } );
  64. } );