delete.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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 { Client, syncClients, expectClients, clearBuffer } from './utils.js';
  6. describe( 'transform', () => {
  7. let john, kate;
  8. beforeEach( () => {
  9. return Promise.all( [
  10. Client.get( 'john' ).then( client => ( john = client ) ),
  11. Client.get( 'kate' ).then( client => ( kate = client ) )
  12. ] );
  13. } );
  14. afterEach( () => {
  15. clearBuffer();
  16. return Promise.all( [ john.destroy(), kate.destroy() ] );
  17. } );
  18. describe( 'delete', () => {
  19. describe( 'by delete', () => {
  20. it( 'text from two elements', () => {
  21. john.setData( '<paragraph>F[oo</paragraph><paragraph>B]ar</paragraph>' );
  22. kate.setData( '<paragraph>Fo[o</paragraph><paragraph>Ba]r</paragraph>' );
  23. john.delete();
  24. kate.delete();
  25. syncClients();
  26. expectClients( '<paragraph>Fr</paragraph>' );
  27. } );
  28. it( 'text from three elements', () => {
  29. john.setData( '<paragraph>Foo</paragraph><paragraph>Ba[r</paragraph><paragraph>A]bc</paragraph>' );
  30. kate.setData( '<paragraph>Fo[o</paragraph><paragraph>Ba]r</paragraph><paragraph>Abc</paragraph>' );
  31. john.delete();
  32. kate.delete();
  33. syncClients();
  34. expectClients( '<paragraph>Fobc</paragraph>' );
  35. } );
  36. // https://github.com/ckeditor/ckeditor5-engine/issues/1492
  37. it( 'delete same content from a few elements', () => {
  38. john.setData( '<paragraph>F[oo</paragraph><paragraph>Bar</paragraph><paragraph>Ab]c</paragraph>' );
  39. kate.setData( '<paragraph>F[oo</paragraph><paragraph>Bar</paragraph><paragraph>Ab]c</paragraph>' );
  40. john.delete();
  41. kate.delete();
  42. syncClients();
  43. expectClients( '<paragraph>Fc</paragraph>' );
  44. john.undo();
  45. kate.undo();
  46. syncClients();
  47. expectClients( '<paragraph>Foo</paragraph><paragraph>Bar</paragraph><paragraph>Abc</paragraph>' );
  48. } );
  49. } );
  50. } );
  51. } );