8
0

toolbarbindingsmixin.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /**
  2. * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /* bender-tags: ui, bindings, toolbar */
  6. import mix from '/ckeditor5/utils/mix.js';
  7. import Editor from '/ckeditor5/core/editor/editor.js';
  8. import Collection from '/ckeditor5/utils/collection.js';
  9. import Model from '/ckeditor5/ui/model.js';
  10. import Controller from '/ckeditor5/ui/controller.js';
  11. import ToolbarBindingsMixin from '/ckeditor5/ui/bindings/toolbarbindingsmixin.js';
  12. describe( 'ToolbarBindingsMixin', () => {
  13. const editor = new Editor();
  14. let mixinInstance;
  15. editor.ui = {
  16. featureComponents: {
  17. create: () => new Controller()
  18. }
  19. };
  20. class MixClass extends Controller {
  21. constructor( model, view ) {
  22. super( model, view );
  23. this.editor = editor;
  24. this.addCollection( 'items' );
  25. }
  26. }
  27. mix( MixClass, ToolbarBindingsMixin );
  28. beforeEach( () => {
  29. mixinInstance = new MixClass( new Model( {
  30. config: [ 'bold', 'italic' ]
  31. } ) );
  32. } );
  33. describe( 'bindToolbarItems', () => {
  34. it( 'creates item collection', () => {
  35. mixinInstance.bindToolbarItems();
  36. expect( mixinInstance.items ).to.be.instanceOf( Collection );
  37. expect( mixinInstance.items.map( i => i.name ) ).to.have.members( [ 'bold', 'italic' ] );
  38. } );
  39. it( 'works when no config specified in the model', () => {
  40. mixinInstance = new MixClass( new Model( {} ) );
  41. mixinInstance.bindToolbarItems();
  42. expect( mixinInstance.items ).to.be.instanceOf( Collection );
  43. expect( mixinInstance.items ).to.have.length( 0 );
  44. } );
  45. it( 'binds item collection to "items" controller collection', () => {
  46. const items = mixinInstance.collections.get( 'items' );
  47. expect( items ).to.have.length( 0 );
  48. mixinInstance.bindToolbarItems();
  49. expect( items ).to.have.length( 2 );
  50. } );
  51. } );
  52. } );