8
0

pasteplaintext.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. import VirtualTestEditor from '@ckeditor/ckeditor5-core/tests/_utils/virtualtesteditor';
  6. import PastePlainText from '../src/pasteplaintext';
  7. import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
  8. import { getCode } from '@ckeditor/ckeditor5-utils/src/keyboard';
  9. /* global document */
  10. describe( 'PastePlainText', () => {
  11. let editor, viewDocument;
  12. beforeEach( () => {
  13. return VirtualTestEditor
  14. .create( {
  15. plugins: [ PastePlainText, Paragraph ]
  16. } )
  17. .then( newEditor => {
  18. editor = newEditor;
  19. viewDocument = editor.editing.view.document;
  20. } );
  21. } );
  22. it( 'marks clipboard input as plain text with shift pressed', () => {
  23. const dataTransferMock = createDataTransfer( { 'text/html': '<p>x</p>', 'text/plain': 'y' } );
  24. viewDocument.on( 'clipboardInput', ( event, data ) => {
  25. expect( data.asPlainText ).to.be.true;
  26. // No need for further execution.
  27. event.stop();
  28. } );
  29. viewDocument.fire( 'keydown', {
  30. keyCode: getCode( 'v' ),
  31. shiftKey: true,
  32. ctrlKey: true,
  33. preventDefault: () => {},
  34. domTarget: document.body
  35. } );
  36. viewDocument.fire( 'clipboardInput', {
  37. dataTransfer: dataTransferMock
  38. } );
  39. } );
  40. it( 'ignores clipboard input as plain text when shift was released', () => {
  41. const dataTransferMock = createDataTransfer( { 'text/html': '<p>x</p>', 'text/plain': 'y' } );
  42. viewDocument.on( 'clipboardInput', ( event, data ) => {
  43. expect( data.asPlainText ).to.be.undefined;
  44. // No need for further execution.
  45. event.stop();
  46. } );
  47. viewDocument.fire( 'keydown', {
  48. keyCode: getCode( 'a' ),
  49. shiftKey: true,
  50. preventDefault: () => {},
  51. domTarget: document.body
  52. } );
  53. viewDocument.fire( 'keyup', {
  54. keyCode: getCode( 'a' ),
  55. shiftKey: true,
  56. preventDefault: () => {},
  57. domTarget: document.body
  58. } );
  59. viewDocument.fire( 'keydown', {
  60. keyCode: getCode( 'v' ),
  61. shiftKey: false,
  62. ctrlKey: true,
  63. preventDefault: () => {},
  64. domTarget: document.body
  65. } );
  66. viewDocument.fire( 'clipboardInput', {
  67. dataTransfer: dataTransferMock
  68. } );
  69. } );
  70. function createDataTransfer( data ) {
  71. return {
  72. getData( type ) {
  73. return data[ type ];
  74. }
  75. };
  76. }
  77. } );