浏览代码

Make image insertion position tests specific to table case.

Maciej Gołaszewski 6 年之前
父节点
当前提交
bd07ccce04

+ 10 - 22
packages/ckeditor5-image/tests/image/imageinsertcommand.js

@@ -88,28 +88,16 @@ describe( 'ImageInsertCommand', () => {
 			expect( command.isEnabled ).to.be.false;
 		} );
 
-		it( 'should be true when the selection is inside isLimit element which allows image', () => {
-			model.schema.register( 'outerObject', { isObject: true, isBlock: true, allowIn: '$root' } );
-			model.schema.register( 'limit', { isLimit: true, allowIn: 'outerObject' } );
-			model.schema.extend( '$block', { allowIn: 'limit' } );
-
-			editor.conversion.for( 'downcast' ).elementToElement( { model: 'outerObject', view: 'outerObject' } );
-			editor.conversion.for( 'downcast' ).elementToElement( { model: 'limit', view: 'limit' } );
-
-			setModelData( model, '<outerObject><limit>[]</limit></outerObject>' );
-
-			expect( command.isEnabled ).to.be.true;
-		} );
-
-		it( 'should be true when the selection is inside isLimit element which allows image', () => {
-			model.schema.register( 'outerObject', { isObject: true, isBlock: true, allowIn: '$root' } );
-			model.schema.register( 'limit', { isLimit: true, allowIn: 'outerObject' } );
-			model.schema.extend( '$block', { allowIn: 'limit' } );
-
-			editor.conversion.for( 'downcast' ).elementToElement( { model: 'outerObject', view: 'outerObject' } );
-			editor.conversion.for( 'downcast' ).elementToElement( { model: 'limit', view: 'limit' } );
-
-			setModelData( model, '<outerObject><limit><paragraph>foo[]</paragraph></limit></outerObject>' );
+		it( 'should be true when the selection is inside block element inside isLimit element which allows image', () => {
+			model.schema.register( 'table', { allowWhere: '$block', isLimit: true, isObject: true, isBlock: true } );
+			model.schema.register( 'tableRow', { allowIn: 'table', isLimit: true } );
+			model.schema.register( 'tableCell', { allowIn: 'tableRow', isLimit: true } );
+			model.schema.extend( '$block', { allowIn: 'tableCell' } );
+			editor.conversion.for( 'downcast' ).elementToElement( { model: 'table', view: 'table' } );
+			editor.conversion.for( 'downcast' ).elementToElement( { model: 'tableRow', view: 'tableRow' } );
+			editor.conversion.for( 'downcast' ).elementToElement( { model: 'tableCell', view: 'tableCell' } );
+
+			setModelData( model, '<table><tableRow><tableCell><paragraph>foo[]</paragraph></tableCell></tableRow></table>' );
 
 			expect( command.isEnabled ).to.be.true;
 		} );

+ 9 - 21
packages/ckeditor5-image/tests/image/utils.js

@@ -180,27 +180,15 @@ describe( 'image widget utils', () => {
 		} );
 
 		it( 'should be true when the selection is inside isLimit element which allows image', () => {
-			model.schema.register( 'outerObject', { isObject: true, isBlock: true, allowIn: '$root' } );
-			model.schema.register( 'limit', { isLimit: true, allowIn: 'outerObject' } );
-			model.schema.extend( '$block', { allowIn: 'limit' } );
-
-			editor.conversion.for( 'downcast' ).elementToElement( { model: 'outerObject', view: 'outerObject' } );
-			editor.conversion.for( 'downcast' ).elementToElement( { model: 'limit', view: 'limit' } );
-
-			setModelData( model, '<outerObject><limit>[]</limit></outerObject>' );
-
-			expect( isImageAllowed( model ) ).to.be.true;
-		} );
-
-		it( 'should be true when the selection is inside isLimit element which allows image', () => {
-			model.schema.register( 'outerObject', { isObject: true, isBlock: true, allowIn: '$root' } );
-			model.schema.register( 'limit', { isLimit: true, allowIn: 'outerObject' } );
-			model.schema.extend( '$block', { allowIn: 'limit' } );
-
-			editor.conversion.for( 'downcast' ).elementToElement( { model: 'outerObject', view: 'outerObject' } );
-			editor.conversion.for( 'downcast' ).elementToElement( { model: 'limit', view: 'limit' } );
-
-			setModelData( model, '<outerObject><limit><paragraph>foo[]</paragraph></limit></outerObject>' );
+			model.schema.register( 'table', { allowWhere: '$block', isLimit: true, isObject: true, isBlock: true } );
+			model.schema.register( 'tableRow', { allowIn: 'table', isLimit: true } );
+			model.schema.register( 'tableCell', { allowIn: 'tableRow', isLimit: true } );
+			model.schema.extend( '$block', { allowIn: 'tableCell' } );
+			editor.conversion.for( 'downcast' ).elementToElement( { model: 'table', view: 'table' } );
+			editor.conversion.for( 'downcast' ).elementToElement( { model: 'tableRow', view: 'tableRow' } );
+			editor.conversion.for( 'downcast' ).elementToElement( { model: 'tableCell', view: 'tableCell' } );
+
+			setModelData( model, '<table><tableRow><tableCell><paragraph>foo[]</paragraph></tableCell></tableRow></table>' );
 
 			expect( isImageAllowed( model ) ).to.be.true;
 		} );

+ 10 - 24
packages/ckeditor5-image/tests/imageupload/imageuploadcommand.js

@@ -107,30 +107,16 @@ describe( 'ImageUploadCommand', () => {
 			expect( command.isEnabled ).to.be.false;
 		} );
 
-		it( 'should be true when the selection is inside isLimit element which allows image', () => {
-			model.schema.register( 'outerObject', { isObject: true, isBlock: true, allowIn: '$root' } );
-			model.schema.register( 'limit', { isLimit: true, allowIn: 'outerObject' } );
-			model.schema.extend( '$block', { allowIn: 'limit' } );
-
-			editor.conversion.for( 'downcast' ).elementToElement( { model: 'outerObject', view: 'outerObject' } );
-			editor.conversion.for( 'downcast' ).elementToElement( { model: 'limit', view: 'limit' } );
-
-			setModelData( model, '<outerObject><limit>[]</limit></outerObject>' );
-
-			expect( command.isEnabled ).to.be.true;
-		} );
-
-		it( 'should be true when the selection is inside isLimit element which allows image', () => {
-			model.schema.register( 'outerObject', { isObject: true, isBlock: true, allowIn: '$root' } );
-			model.schema.register( 'limit', { isLimit: true, allowIn: 'outerObject' } );
-			model.schema.extend( '$block', { allowIn: 'limit' } );
-
-			editor.conversion.for( 'downcast' ).elementToElement( { model: 'outerObject', view: 'outerObject' } );
-			editor.conversion.for( 'downcast' ).elementToElement( { model: 'limit', view: 'limit' } );
-
-			setModelData( model, '<outerObject><limit><paragraph>foo[]</paragraph></limit></outerObject>' );
-
-			expect( command.isEnabled ).to.be.true;
+		it( 'should be true when the selection is inside block element inside isLimit element which allows image', () => {
+			model.schema.register( 'table', { allowWhere: '$block', isLimit: true, isObject: true, isBlock: true } );
+			model.schema.register( 'tableRow', { allowIn: 'table', isLimit: true } );
+			model.schema.register( 'tableCell', { allowIn: 'tableRow', isLimit: true } );
+			model.schema.extend( '$block', { allowIn: 'tableCell' } );
+			editor.conversion.for( 'downcast' ).elementToElement( { model: 'table', view: 'table' } );
+			editor.conversion.for( 'downcast' ).elementToElement( { model: 'tableRow', view: 'tableRow' } );
+			editor.conversion.for( 'downcast' ).elementToElement( { model: 'tableCell', view: 'tableCell' } );
+
+			setModelData( model, '<table><tableRow><tableCell><paragraph>foo[]</paragraph></tableCell></tableRow></table>' );
 		} );
 
 		it( 'should be false when schema disallows image', () => {