treeview.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /**
  2. * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /* bender-tags: treeview */
  6. 'use strict';
  7. import TreeView from '/ckeditor5/core/treeview/treeview.js';
  8. import Observer from '/ckeditor5/core/treeview/observer/observer.js';
  9. import Renderer from '/ckeditor5/core/treeview/renderer.js';
  10. import DomConverter from '/ckeditor5/core/treeview/domconverter.js';
  11. describe( 'TreeView', () => {
  12. describe( 'constructor', () => {
  13. it( 'should create TreeView with all properties', () => {
  14. const domP = document.createElement( 'p' );
  15. const domDiv = document.createElement( 'div' );
  16. domDiv.setAttribute( 'id', 'editor' );
  17. domDiv.appendChild( domP );
  18. const treeView = new TreeView( domDiv );
  19. expect( treeView ).to.have.property( 'domRoot' ).that.equals( domDiv );
  20. expect( treeView ).to.have.property( 'observers' ).that.is.instanceOf( Set );
  21. expect( treeView ).to.have.property( 'renderer' ).that.is.instanceOf( Renderer );
  22. expect( treeView ).to.have.property( 'domConverter' ).that.is.instanceOf( DomConverter );
  23. expect( treeView ).to.have.property( 'viewRoot' );
  24. expect( treeView.domConverter.getCorrespondingDom( treeView.viewRoot ) ).to.equal( domDiv );
  25. expect( treeView.viewRoot.name ).to.equal( 'div' );
  26. expect( treeView.viewRoot.getAttribute( 'id' ) ).to.equal( 'editor' );
  27. expect( treeView.renderer.markedChildren.has( treeView.viewRoot ) ).to.be.true;
  28. } );
  29. } );
  30. describe( 'observer', () => {
  31. let observerMock, treeView;
  32. beforeEach( () => {
  33. observerMock = new Observer();
  34. observerMock.attach = sinon.spy();
  35. observerMock.detach = sinon.spy();
  36. observerMock.init = sinon.spy();
  37. treeView = new TreeView( document.createElement( 'div' ) );
  38. treeView.renderer.render = sinon.spy();
  39. } );
  40. it( 'should be inited and attached on adding', () => {
  41. treeView.addObserver( observerMock );
  42. expect( treeView.observers.has( observerMock ) ).to.be.true;
  43. sinon.assert.calledOnce( observerMock.init );
  44. sinon.assert.calledWith( observerMock.init, treeView );
  45. sinon.assert.calledOnce( observerMock.attach );
  46. } );
  47. it( 'should be detached and reattached on render', () => {
  48. treeView.addObserver( observerMock );
  49. treeView.render();
  50. expect( treeView.observers.has( observerMock ) ).to.be.true;
  51. sinon.assert.calledOnce( observerMock.detach );
  52. sinon.assert.calledOnce( treeView.renderer.render );
  53. sinon.assert.calledTwice( observerMock.attach );
  54. } );
  55. } );
  56. } );