/** * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md. */ import HighlightEditing from './../src/highlightediting'; import HighlightCommand from './../src/highlightcommand'; import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph'; import VirtualTestEditor from '@ckeditor/ckeditor5-core/tests/_utils/virtualtesteditor'; import { getData as getModelData, setData as setModelData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model'; describe( 'HighlightEditing', () => { let editor, model; beforeEach( () => { return VirtualTestEditor .create( { plugins: [ HighlightEditing, Paragraph ] } ) .then( newEditor => { editor = newEditor; model = editor.model; } ); } ); afterEach( () => { editor.destroy(); } ); it( 'should set proper schema rules', () => { expect( editor.model.schema.checkAttribute( [ '$block', '$text' ], 'highlight' ) ).to.be.true; expect( editor.model.schema.checkAttribute( [ '$clipboardHolder', '$text' ], 'highlight' ) ).to.be.true; expect( editor.model.schema.checkAttribute( [ '$block' ], 'highlight' ) ).to.be.false; } ); it( 'adds highlight command', () => { expect( editor.commands.get( 'highlight' ) ).to.be.instanceOf( HighlightCommand ); } ); describe( 'data pipeline conversions', () => { it( 'should convert defined marker classes', () => { const data = '

foo

'; editor.setData( data ); expect( getModelData( model ) ).to.equal( '[]f<$text highlight="marker">oo' ); expect( editor.getData() ).to.equal( data ); } ); it( 'should convert only one defined marker classes', () => { editor.setData( '

foo

' ); expect( getModelData( model ) ).to.equal( '[]f<$text highlight="marker">oo' ); expect( editor.getData() ).to.equal( '

foo

' ); } ); it( 'should not convert undefined marker classes', () => { editor.setData( '

foo

' ); expect( getModelData( model ) ).to.equal( '[]foo' ); expect( editor.getData() ).to.equal( '

foo

' ); } ); it( 'should not convert marker without class', () => { editor.setData( '

foo

' ); expect( getModelData( model ) ).to.equal( '[]foo' ); expect( editor.getData() ).to.equal( '

foo

' ); } ); } ); describe( 'editing pipeline conversion', () => { it( 'should convert mark element with defined class', () => { setModelData( model, 'f<$text highlight="marker">oo' ); expect( editor.getData() ).to.equal( '

foo

' ); } ); } ); describe( 'config', () => { describe( 'default value', () => { it( 'should be set', () => { expect( editor.config.get( 'highlight' ) ).to.deep.equal( [ { model: 'marker', view: { name: 'mark', class: 'marker' }, title: 'Marker', color: '#ffff66', type: 'marker' }, { model: 'greenMarker', view: { name: 'mark', class: 'marker-green' }, title: 'Green Marker', color: '#66ff00', type: 'marker' }, { model: 'pinkMarker', view: { name: 'mark', class: 'marker-pink' }, title: 'Pink Marker', color: '#ff6fff', type: 'marker' }, { model: 'redPen', view: { name: 'mark', class: 'pen-red' }, title: 'Red Pen', color: '#ff2929', type: 'pen' }, { model: 'bluePen', view: { name: 'mark', class: 'pen-blue' }, title: 'Blue Pen', color: '#0091ff', type: 'pen' } ] ); } ); } ); } ); } );