8
0
Просмотр исходного кода

Tests: Added more test self-CC for widget package.

Marek Lewandowski 5 лет назад
Родитель
Сommit
a77caae9d9

+ 46 - 5
packages/ckeditor5-widget/tests/widgetresize.js

@@ -363,6 +363,40 @@ describe( 'WidgetResize', () => {
 				} )();
 			} );
 		} );
+
+		it( 'returns proper value when resize host is different from widget wrapper', () => {
+			createResizer( {
+				unit: undefined,
+				getHandleHost( domWidgetElement ) {
+					return domWidgetElement.querySelector( '.sub-div' );
+				}
+			} );
+
+			const usedHandle = 'bottom-right';
+			const pointerDifference = { x: -10, y: -10 };
+			const expectedWidth = '20%';
+
+			const domParts = getWidgetDomParts( editor, widget, usedHandle );
+			const resizeHost = domParts.widget.querySelector( '.sub-div' );
+			const initialPointerPosition = getHandleCenterPoint( resizeHost, usedHandle );
+			const finalPointerPosition = initialPointerPosition.moveBy( pointerDifference.x, pointerDifference.y );
+
+			resizerMouseSimulator.dragTo( editor, domParts.resizeHandle, finalPointerPosition );
+			expect( commitStub.callCount, 'call count' ).to.be.eql( 1 );
+			expect( commitStub.args[ 0 ][ 0 ], 'width' ).to.be.equal( expectedWidth );
+			sinon.assert.calledOnce( commitStub );
+		} );
+
+		it( 'doesn\'t break if the widget wrapper was removed from DOM', () => {
+			const resizer = createResizer( {
+				unit: undefined
+			} );
+			const domParts = getWidgetDomParts( editor, widget, 'bottom-right' );
+
+			domParts.resizeWrapper.remove();
+
+			resizer.redraw();
+		} );
 	} );
 
 	describe( '_getResizerByHandle()', () => {
@@ -417,11 +451,18 @@ describe( 'WidgetResize', () => {
 				.elementToElement( {
 					model: 'widget',
 					view: ( modelItem, viewWriter ) => {
-						const div = viewWriter.createContainerElement( 'div' );
-						viewWriter.setStyle( 'height', '50px', div );
-						viewWriter.setStyle( 'width', '25%', div ); // It evaluates to 100px.
-
-						return toWidget( div, viewWriter, {
+						const parentDiv = viewWriter.createContainerElement( 'div' );
+						viewWriter.setStyle( 'height', '50px', parentDiv );
+						viewWriter.setStyle( 'width', '25%', parentDiv ); // It evaluates to 100px.
+
+						const subDiv = viewWriter.createContainerElement( 'div' );
+						viewWriter.insert( viewWriter.createPositionAt( subDiv, 'start' ), viewWriter.createText( 'foo' ) );
+						viewWriter.addClass( 'sub-div', subDiv );
+						viewWriter.setStyle( 'height', '20px', subDiv );
+						viewWriter.setStyle( 'width', '50px', subDiv );
+						viewWriter.insert( viewWriter.createPositionAt( parentDiv, 'start' ), subDiv );
+
+						return toWidget( parentDiv, viewWriter, {
 							label: 'element label'
 						} );
 					}

+ 20 - 3
packages/ckeditor5-widget/tests/widgetresize/resizer.js

@@ -82,6 +82,23 @@ describe( 'Resizer', () => {
 		} );
 	} );
 
+	describe( 'redraw()', () => {
+		it( 'works fetch proper rect if handleHostRect argument not given explicitly', () => {
+			const resizerInstance = createResizer( {
+				getHandleHost: widgetWrapper => widgetWrapper
+			} );
+			resizerInstance.attach();
+			const renderedElement = resizerInstance._viewResizerWrapper.render( document );
+
+			document.body.appendChild( renderedElement );
+
+			resizerInstance.redraw();
+
+			// Cleanup.
+			renderedElement.remove();
+		} );
+	} );
+
 	describe( '_proposeNewSize()', () => {
 		let resizer;
 
@@ -139,14 +156,14 @@ describe( 'Resizer', () => {
 		} );
 	} );
 
-	function createResizer() {
+	function createResizer( customOptions ) {
 		const model = new Element( 'resizable' );
 		const viewElement = new ContainerElement( 'div' );
 
-		return new Resizer( {
+		return new Resizer( Object.assign( {
 			modelElement: model,
 			viewElement,
 			editor
-		} );
+		}, customOptions ) );
 	}
 } );