8
0

integration.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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 RootEditableElement from '../../../src/view/rooteditableelement';
  7. import Document from '../../../src/view/document';
  8. import ViewElement from '../../../src/view/element';
  9. import { isBlockFiller, BR_FILLER } from '../../../src/view/filler';
  10. import createElement from '@ckeditor/ckeditor5-utils/src/dom/createelement';
  11. describe( 'Document integration', () => {
  12. it( 'should remove content of the DOM', () => {
  13. const domDiv = createElement( document, 'div', { id: 'editor' }, [
  14. createElement( document, 'p' ),
  15. createElement( document, 'p' )
  16. ] );
  17. const viewDocument = new Document();
  18. createRoot( 'div', 'main', viewDocument );
  19. viewDocument.attachDomRoot( domDiv );
  20. viewDocument.render();
  21. expect( domDiv.childNodes.length ).to.equal( 1 );
  22. expect( isBlockFiller( domDiv.childNodes[ 0 ], BR_FILLER ) ).to.be.true;
  23. viewDocument.destroy();
  24. } );
  25. it( 'should render changes in the Document', () => {
  26. const domDiv = document.createElement( 'div' );
  27. const viewDocument = new Document();
  28. createRoot( 'div', 'main', viewDocument );
  29. viewDocument.attachDomRoot( domDiv );
  30. viewDocument.getRoot().appendChildren( new ViewElement( 'p' ) );
  31. viewDocument.render();
  32. expect( domDiv.childNodes.length ).to.equal( 1 );
  33. expect( domDiv.childNodes[ 0 ].tagName ).to.equal( 'P' );
  34. viewDocument.destroy();
  35. } );
  36. it( 'should render attribute changes', () => {
  37. const domRoot = document.createElement( 'div' );
  38. const viewDocument = new Document();
  39. const viewRoot = createRoot( 'div', 'main', viewDocument );
  40. viewDocument.attachDomRoot( domRoot );
  41. const viewP = new ViewElement( 'p', { class: 'foo' } );
  42. viewRoot.appendChildren( viewP );
  43. viewDocument.render();
  44. expect( domRoot.childNodes.length ).to.equal( 1 );
  45. expect( domRoot.childNodes[ 0 ].getAttribute( 'class' ) ).to.equal( 'foo' );
  46. viewP.setAttribute( 'class', 'bar' );
  47. viewDocument.render();
  48. expect( domRoot.childNodes.length ).to.equal( 1 );
  49. expect( domRoot.childNodes[ 0 ].getAttribute( 'class' ) ).to.equal( 'bar' );
  50. viewDocument.destroy();
  51. } );
  52. } );
  53. function createRoot( name, rootName, viewDoc ) {
  54. const viewRoot = new RootEditableElement( name );
  55. viewRoot.rootName = rootName;
  56. viewRoot.document = viewDoc;
  57. viewDoc.roots.add( viewRoot );
  58. return viewRoot;
  59. }