Bladeren bron

Tests: Added simple limits tests for deleteContent and insertContent methods.

Szymon Kupś 8 jaren geleden
bovenliggende
commit
0191eec0f4

+ 39 - 0
packages/ckeditor5-engine/tests/controller/deletecontent.js

@@ -400,6 +400,45 @@ describe( 'DataController', () => {
 			} );
 		} );
 
+		describe( 'integration with limit elements', () => {
+			beforeEach( () => {
+				doc = new Document();
+				doc.createRoot();
+
+				const schema = doc.schema;
+
+				schema.registerItem( 'limit' );
+				schema.allow( { name: 'limit', inside: '$root' } );
+				schema.allow( { name: '$text', inside: 'limit' } );
+				schema.limits.add( 'limit' );
+			} );
+
+			test(
+				'should delete inside limit element',
+				'<limit>foo [bar] baz</limit>',
+				'<limit>foo [] baz</limit>'
+			);
+
+			test(
+				'should delete whole limit element',
+				'[<limit>foo bar</limit>]',
+				'[]'
+			);
+
+			test(
+				'should delete from two limit elements',
+				'<limit>foo [bar</limit><limit>baz] qux</limit>',
+				'<limit>foo []</limit><limit> qux</limit>'
+			);
+
+			test(
+				'should delete from two limit elements - merge',
+				'<limit>foo [bar</limit><limit>baz] qux</limit>',
+				'<limit>foo [] qux</limit>',
+				{ merge: true }
+			);
+		} );
+
 		function test( title, input, output, options ) {
 			it( title, () => {
 				setData( doc, input );

+ 43 - 0
packages/ckeditor5-engine/tests/controller/insertcontent.js

@@ -543,6 +543,49 @@ describe( 'DataController', () => {
 		} );
 	} );
 
+	describe( 'integration with limit elements', () => {
+		doc = new Document();
+		doc.createRoot();
+		dataController = new DataController( doc );
+
+		const schema = doc.schema;
+
+		schema.registerItem( 'limit' );
+		schema.allow( { name: 'limit', inside: '$root' } );
+		schema.allow( { name: '$text', inside: 'limit' } );
+		schema.limits.add( 'limit' );
+
+		schema.registerItem( 'disallowedElement' );
+		schema.allow( { name: 'disallowedElement', inside: '$clipboardHolder' } );
+
+		it( 'should insert limit element', () => {
+			insertHelper( '<limit></limit>' );
+
+			expect( getData( doc ) ).to.equal( '<limit>[]</limit>' );
+		} );
+
+		it( 'should insert text into limit element', () => {
+			setData( doc, '<limit>[]</limit>' );
+			insertHelper( 'foo bar' );
+
+			expect( getData( doc ) ).to.equal( '<limit>foo bar[]</limit>' );
+		} );
+
+		it( 'should insert text into limit element', () => {
+			setData( doc, '<limit>foo[</limit><limit>]bar</limit>' );
+			insertHelper( 'baz' );
+
+			expect( getData( doc ) ).to.equal( '<limit>foobaz[]bar</limit>' );
+		} );
+
+		it( 'should not insert disallowed elements inside limit elements', () => {
+			setData( doc, '<limit>[]</limit>' );
+			insertHelper( '<disallowedElement></disallowedElement>' );
+
+			expect( getData( doc ) ).to.equal( '<limit>[]</limit>' );
+		} );
+	} );
+
 	// @param {module:engine/model/item~Item|String} content
 	function insertHelper( content ) {
 		if ( typeof content == 'string' ) {