| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /**
- * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
- */
- import Model from '@ckeditor/ckeditor5-engine/src/model/model';
- import { setData as setModelData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
- import getText from '../../src/utils/getlasttextline';
- describe( 'utils', () => {
- let model, doc, root;
- beforeEach( () => {
- model = new Model();
- doc = model.document;
- root = doc.createRoot();
- model.schema.register( 'paragraph', { inheritAllFrom: '$block' } );
- model.schema.register( 'softBreak', { allowWhere: '$text', isInline: true } );
- model.schema.extend( '$text', { allowAttributes: [ 'bold', 'italic' ] } );
- } );
- describe( 'getText()', () => {
- it( 'should return all text from passed range', () => {
- setModelData( model, '<paragraph>foobar[]baz</paragraph>' );
- testOutput(
- model.createRangeIn( root.getChild( 0 ) ),
- 'foobarbaz',
- [ 0, 0 ],
- [ 0, 9 ] );
- } );
- it( 'should limit the output text to the given range', () => {
- setModelData( model, '<paragraph>foobar[]baz</paragraph>' );
- const testRange = model.createRange(
- model.createPositionAt( root.getChild( 0 ), 1 ),
- model.document.selection.focus
- );
- testOutput(
- testRange,
- 'oobar',
- [ 0, 1 ],
- [ 0, 6 ] );
- } );
- it( 'should limit the output to the last inline element text constrain in given range', () => {
- setModelData( model, '<paragraph>foo<softBreak></softBreak>bar<softBreak></softBreak>baz[]</paragraph>' );
- const testRange = model.createRange(
- model.createPositionAt( root.getChild( 0 ), 0 ),
- model.document.selection.focus
- );
- testOutput(
- testRange,
- 'baz',
- [ 0, 8 ],
- [ 0, 11 ] );
- } );
- it( 'should return text from text nodes with attributes', () => {
- setModelData( model,
- '<paragraph>' +
- '<$text bold="true">foo</$text>' +
- '<$text bold="true" italic="true">bar</$text>' +
- '<$text italic="true">baz</$text>[]' +
- '</paragraph>'
- );
- testOutput(
- model.createRangeIn( root.getChild( 0 ) ),
- 'foobarbaz',
- [ 0, 0 ],
- [ 0, 9 ] );
- } );
- } );
- function testOutput( range1, expectedText, startPath, endPath ) {
- const { text, range } = getText( range1, model );
- expect( text ).to.equal( expectedText );
- expect( range.start.path ).to.deep.equal( startPath );
- expect( range.end.path ).to.deep.equal( endPath );
- }
- } );
|