Sfoglia il codice sorgente

Add tests for overriding the border conversion.

Maciej Gołaszewski 6 anni fa
parent
commit
8e16379db6

+ 2 - 4
packages/ckeditor5-table/src/tableproperties/utils.js

@@ -42,15 +42,13 @@ export function upcastBorderStyles( conversion, viewElement ) {
 		};
 
 		// Try to consume appropriate values from consumable values list.
-		const toMatch = matcherPattern;
-
-		if ( !conversionApi.consumable.test( data.viewItem, toMatch ) ) {
+		if ( !conversionApi.consumable.test( data.viewItem, matcherPattern ) ) {
 			return;
 		}
 
 		const modelElement = [ ...data.modelRange.getItems( { shallow: true } ) ].pop();
 
-		conversionApi.consumable.consume( data.viewItem, toMatch );
+		conversionApi.consumable.consume( data.viewItem, matcherPattern );
 
 		conversionApi.writer.setAttribute( 'borderStyle', data.viewItem.getNormalizedStyle( 'border-style' ), modelElement );
 		conversionApi.writer.setAttribute( 'borderColor', data.viewItem.getNormalizedStyle( 'border-color' ), modelElement );

+ 16 - 0
packages/ckeditor5-table/tests/tablecellproperties.js

@@ -202,6 +202,22 @@ describe( 'TableCellProperties', () => {
 
 				expect( tableCell.getAttribute( 'verticalAlignment' ) ).to.equal( 'top' );
 			} );
+
+			it( 'should allow to be overriden (only border-top consumed)', () => {
+				editor.conversion.for( 'upcast' ).add( dispatcher => dispatcher.on( 'element:td', ( evt, data, conversionApi ) => {
+					conversionApi.consumable.consume( data.viewItem, {
+						styles: [ 'border-top' ]
+					} );
+				}, { priority: 'high' } ) );
+
+				editor.setData( '<table><tr><td style="border:1px solid blue;">foo</td></tr></table>' );
+
+				const tableCell = model.document.getRoot().getNodeByPath( [ 0, 0, 0 ] );
+
+				expect( tableCell.getAttribute( 'borderColor' ) ).to.be.undefined;
+				expect( tableCell.getAttribute( 'borderStyle' ) ).to.be.undefined;
+				expect( tableCell.getAttribute( 'borderWidth' ) ).to.be.undefined;
+			} );
 		} );
 
 		describe( 'downcast', () => {