Skip to content
This repository has been archived by the owner on Jun 26, 2020. It is now read-only.

Commit

Permalink
Merge b7aa56b into 69dcab5
Browse files Browse the repository at this point in the history
  • Loading branch information
jodator committed Dec 5, 2018
2 parents 69dcab5 + b7aa56b commit fd388b2
Showing 1 changed file with 40 additions and 2 deletions.
42 changes: 40 additions & 2 deletions tests/view/observer/selectionobserver.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import FocusObserver from '../../../src/view/observer/focusobserver';
import log from '@ckeditor/ckeditor5-utils/src/log';
import createViewRoot from '../_utils/createroot';
import { parse } from '../../../src/dev-utils/view';
import env from '@ckeditor/ckeditor5-utils/src/env';

describe( 'SelectionObserver', () => {
let view, viewDocument, viewRoot, selectionObserver, domRoot, domMain, domDocument;
Expand Down Expand Up @@ -185,6 +186,10 @@ describe( 'SelectionObserver', () => {

while ( counter > 0 ) {
changeDomSelection();

if ( env.isEdge ) {
extendDomSelection();
}
counter--;
}
} );
Expand All @@ -202,6 +207,10 @@ describe( 'SelectionObserver', () => {

for ( let i = 0; i < 10; i++ ) {
changeDomSelection();

if ( env.isEdge ) {
extendDomSelection();
}
}
} );

Expand Down Expand Up @@ -233,6 +242,10 @@ describe( 'SelectionObserver', () => {

for ( let i = 0; i < 50; i++ ) {
changeDomSelection();

if ( env.isEdge ) {
extendDomSelection();
}
}
} );
}
Expand All @@ -247,15 +260,20 @@ describe( 'SelectionObserver', () => {
view.getObserver( FocusObserver ).disable();

// Change selection.
changeDomSelection();
setDomSelection( 2 );

// Dunno why but Edge 18 does require this...
if ( env.isEdge ) {
setDomSelection( 3 );
}

// Wait 100ms.
setTimeout( () => {
// Check if spy was called.
expect( spy.notCalled ).to.true;

// Change selection one more time.
changeDomSelection();
setDomSelection( 3 );

// Wait 210ms (debounced function should be called).
setTimeout( () => {
Expand Down Expand Up @@ -328,6 +346,12 @@ describe( 'SelectionObserver', () => {
viewDocument.once( 'selectionChange', () => {
// 2. Selection change has been handled.

// Enforce selection change on Edge 18.
if ( env.isEdge ) {
domDocument.getSelection().collapse( domText, 2 );
domDocument.getSelection().extend( domText, 3 );
}

selectionObserver.listenTo( domDocument, 'selectionchange', () => {
// 4. Check if view was re-rendered.
expect( view.render.called ).to.be.true;
Expand Down Expand Up @@ -363,4 +387,18 @@ describe( 'SelectionObserver', () => {

domSelection.collapse( domFoo, offset == 2 ? 3 : 2 );
}

function setDomSelection( offset ) {
const domSelection = domDocument.getSelection();
const domFoo = domMain.childNodes[ 1 ].childNodes[ 0 ];

domSelection.collapse( domFoo, offset );
}

function extendDomSelection() {
const domFoo = domMain.childNodes[ 1 ].childNodes[ 0 ];
const selection = domDocument.getSelection();
const offset = selection.anchorOffset;
selection.extend( domFoo, offset == 2 ? 3 : 2 );
}
} );

0 comments on commit fd388b2

Please sign in to comment.