utils.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /**
  2. * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. import ViewElement from '@ckeditor/ckeditor5-engine/src/view/element';
  6. import { widgetize, isWidget, WIDGET_CLASS_NAME, setLabel, getLabel } from '../../src/widget/utils';
  7. describe( 'widget utils', () => {
  8. let element;
  9. beforeEach( () => {
  10. element = new ViewElement( 'div' );
  11. widgetize( element );
  12. } );
  13. describe( 'widgetize()', () => {
  14. it( 'should set contenteditable to false', () => {
  15. expect( element.getAttribute( 'contenteditable' ) ).to.be.false;
  16. } );
  17. it( 'should define getFillerOffset method', () => {
  18. expect( element.getFillerOffset ).to.be.function;
  19. expect( element.getFillerOffset() ).to.be.null;
  20. } );
  21. it( 'should add proper CSS class', () => {
  22. expect( element.hasClass( WIDGET_CLASS_NAME ) ).to.be.true;
  23. } );
  24. it( 'should add element\'s label if one is provided', () => {
  25. element = new ViewElement( 'div' );
  26. widgetize( element, { label: 'foo bar baz label' } );
  27. expect( getLabel( element ) ).to.equal( 'foo bar baz label' );
  28. } );
  29. it( 'should add element\'s label if one is provided as function', () => {
  30. element = new ViewElement( 'div' );
  31. widgetize( element, { label: () => 'foo bar baz label' } );
  32. expect( getLabel( element ) ).to.equal( 'foo bar baz label' );
  33. } );
  34. } );
  35. describe( 'isWidget()', () => {
  36. it( 'should return true for widgetized elements', () => {
  37. expect( isWidget( element ) ).to.be.true;
  38. } );
  39. it( 'should return false for non-widgetized elements', () => {
  40. expect( isWidget( new ViewElement( 'p' ) ) ).to.be.false;
  41. } );
  42. } );
  43. describe( 'label utils', () => {
  44. it( 'should allow to set label for element', () => {
  45. const element = new ViewElement( 'p' );
  46. setLabel( element, 'foo bar baz' );
  47. expect( getLabel( element ) ).to.equal( 'foo bar baz' );
  48. } );
  49. it( 'should return empty string for elements without label', () => {
  50. const element = new ViewElement( 'div' );
  51. expect( getLabel( element ) ).to.equal( '' );
  52. } );
  53. it( 'should allow to use a function as label creator', () => {
  54. const element = new ViewElement( 'p' );
  55. let caption = 'foo';
  56. setLabel( element, () => caption );
  57. expect( getLabel( element ) ).to.equal( 'foo' );
  58. caption = 'bar';
  59. expect( getLabel( element ) ).to.equal( 'bar' );
  60. } );
  61. } );
  62. } );