8
0

clipboardobserver.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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' ] );
  17. } );
  18. describe( 'onDomEvent', () => {
  19. it( 'should fire paste with the right event data', () => {
  20. const spy = sinon.spy();
  21. const dataTransfer = {
  22. getData( type ) {
  23. return 'foo:' + type;
  24. }
  25. };
  26. viewDocument.on( 'paste', spy );
  27. observer.onDomEvent( { type: 'paste', target: document.body, clipboardData: dataTransfer } );
  28. expect( spy.calledOnce ).to.be.true;
  29. const data = spy.args[ 0 ][ 1 ];
  30. expect( data.domTarget ).to.equal( document.body );
  31. expect( data.dataTransfer ).to.be.instanceOf( DataTransfer );
  32. expect( data.dataTransfer.getData( 'x/y' ) ).to.equal( 'foo:x/y' );
  33. } );
  34. // If it fires paste it fires all the other events too.
  35. } );
  36. } );