| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
- */
- /* globals window, document */
- import WidgetResize from '../src/widgetresize';
- import ClassicTestEditor from '@ckeditor/ckeditor5-core/tests/_utils/classictesteditor';
- import ArticlePluginSet from '@ckeditor/ckeditor5-core/tests/_utils/articlepluginset';
- describe( 'WidgetResize', () => {
- let editor, editorElement;
- before( async () => {
- editorElement = createEditorElement();
- editor = await createEditor( editorElement );
- } );
- after( () => {
- editorElement.remove();
- return editor.destroy();
- } );
- describe( 'plugin', () => {
- it( 'is loaded', () => {
- expect( editor.plugins.get( WidgetResize ) ).to.be.instanceOf( WidgetResize );
- } );
- } );
- describe( 'mouse listeners', () => {
- it( 'doesnt break when called with unexpected element', () => {
- const unrelatedElement = document.createElement( 'div' );
- editor.plugins.get( WidgetResize )._mouseDownListener( {}, {
- target: unrelatedElement
- } );
- } );
- } );
- describe( 'mouse listeners (stubbed)', () => {
- let mouseListenerStubs, localEditor, localElement;
- beforeEach( async () => {
- mouseListenerStubs = {
- down: sinon.stub( WidgetResize.prototype, '_mouseDownListener' ),
- move: sinon.stub( WidgetResize.prototype, '_mouseMoveListener' ),
- up: sinon.stub( WidgetResize.prototype, '_mouseUpListener' )
- };
- localElement = createEditorElement();
- localEditor = await createEditor( localElement );
- } );
- afterEach( () => {
- for ( const stub of Object.values( mouseListenerStubs ) ) {
- stub.restore();
- }
- localElement.remove();
- return localEditor.destroy();
- } );
- it( 'are detached when plugin is destroyed', async () => {
- await localEditor.destroy();
- // Trigger mouse event.
- fireMouseEvent( document.body, 'mousedown', {} );
- // Ensure nothing got called.
- expect( mouseListenerStubs.down.callCount ).to.be.equal( 0 );
- } );
- } );
- function createEditor( element ) {
- return new Promise( ( resolve, reject ) => {
- ClassicTestEditor
- .create( element, {
- plugins: [
- ArticlePluginSet, WidgetResize
- ]
- } )
- .then( newEditor => {
- resolve( newEditor );
- } )
- .catch( reject );
- } );
- }
- function createEditorElement() {
- const element = document.createElement( 'div' );
- document.body.appendChild( element );
- return element;
- }
- function fireMouseEvent( target, eventType, eventData ) {
- // Id of the left mouse button.
- const MOUSE_BUTTON_MAIN = 0;
- // Using initMouseEvent instead of MouseEvent constructor, as MouseEvent constructor doesn't support passing pageX
- // and pageY. See https://stackoverflow.com/questions/45843458/setting-click-events-pagex-and-pagey-always-reverts-to-0
- // However there's still a problem, that events created with `initMouseEvent` have **floored** pageX, pageY numbers.
- const event = document.createEvent( 'MouseEvent' );
- event.initMouseEvent( eventType, true, true, window, null, 0, 0, eventData.pageX, eventData.pageY, false, false, false, false,
- MOUSE_BUTTON_MAIN, null );
- target.dispatchEvent( event );
- }
- } );
|