| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- /**
- * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
- import ViewElement from '@ckeditor/ckeditor5-engine/src/view/element';
- import ViewEditableElement from '@ckeditor/ckeditor5-engine/src/view/editableelement';
- import ViewDocument from '@ckeditor/ckeditor5-engine/src/view/document';
- import {
- toWidget,
- isWidget,
- setLabel,
- getLabel,
- toWidgetEditable,
- WIDGET_CLASS_NAME
- } from '../src/utils';
- describe( 'widget utils', () => {
- let element;
- beforeEach( () => {
- element = new ViewElement( 'div' );
- toWidget( element );
- } );
- describe( 'toWidget()', () => {
- it( 'should set contenteditable to false', () => {
- expect( element.getAttribute( 'contenteditable' ) ).to.be.false;
- } );
- it( 'should define getFillerOffset method', () => {
- expect( element.getFillerOffset ).to.be.function;
- expect( element.getFillerOffset() ).to.be.null;
- } );
- it( 'should add proper CSS class', () => {
- expect( element.hasClass( WIDGET_CLASS_NAME ) ).to.be.true;
- } );
- it( 'should add element\'s label if one is provided', () => {
- element = new ViewElement( 'div' );
- toWidget( element, { label: 'foo bar baz label' } );
- expect( getLabel( element ) ).to.equal( 'foo bar baz label' );
- } );
- it( 'should add element\'s label if one is provided as function', () => {
- element = new ViewElement( 'div' );
- toWidget( element, { label: () => 'foo bar baz label' } );
- expect( getLabel( element ) ).to.equal( 'foo bar baz label' );
- } );
- } );
- describe( 'isWidget()', () => {
- it( 'should return true for widgetized elements', () => {
- expect( isWidget( element ) ).to.be.true;
- } );
- it( 'should return false for non-widgetized elements', () => {
- expect( isWidget( new ViewElement( 'p' ) ) ).to.be.false;
- } );
- } );
- describe( 'label utils', () => {
- it( 'should allow to set label for element', () => {
- const element = new ViewElement( 'p' );
- setLabel( element, 'foo bar baz' );
- expect( getLabel( element ) ).to.equal( 'foo bar baz' );
- } );
- it( 'should return empty string for elements without label', () => {
- const element = new ViewElement( 'div' );
- expect( getLabel( element ) ).to.equal( '' );
- } );
- it( 'should allow to use a function as label creator', () => {
- const element = new ViewElement( 'p' );
- let caption = 'foo';
- setLabel( element, () => caption );
- expect( getLabel( element ) ).to.equal( 'foo' );
- caption = 'bar';
- expect( getLabel( element ) ).to.equal( 'bar' );
- } );
- } );
- describe( 'toWidgetEditable', () => {
- let viewDocument, element;
- beforeEach( () => {
- viewDocument = new ViewDocument();
- element = new ViewEditableElement( 'div' );
- element.document = viewDocument;
- toWidgetEditable( element );
- } );
- it( 'should be created in context of proper document', () => {
- expect( element.document ).to.equal( viewDocument );
- } );
- it( 'should add proper class', () => {
- expect( element.hasClass( 'ck-editable' ) ).to.be.true;
- } );
- it( 'should add proper contenteditable value when element is read-only', () => {
- element.isReadOnly = true;
- expect( element.getAttribute( 'contenteditable' ) ).to.false;
- element.isReadOnly = false;
- expect( element.getAttribute( 'contenteditable' ) ).to.true;
- } );
- it( 'should add proper class when element is focused', () => {
- element.isFocused = true;
- expect( element.hasClass( 'ck-editable_focused' ) ).to.be.true;
- element.isFocused = false;
- expect( element.hasClass( 'ck-editable_focused' ) ).to.be.false;
- } );
- } );
- } );
|