|
|
@@ -78,100 +78,102 @@ describe( 'Selection', () => {
|
|
|
} );
|
|
|
} );
|
|
|
|
|
|
- it( 'should copy added ranges and store multiple ranges', () => {
|
|
|
- selection.addRange( liveRange );
|
|
|
- selection.addRange( range );
|
|
|
+ describe( 'addRange', () => {
|
|
|
+ it( 'should copy added ranges and store multiple ranges', () => {
|
|
|
+ selection.addRange( liveRange );
|
|
|
+ selection.addRange( range );
|
|
|
|
|
|
- let ranges = selection.getRanges();
|
|
|
+ let ranges = selection.getRanges();
|
|
|
|
|
|
- expect( ranges.length ).to.equal( 2 );
|
|
|
- expect( ranges[ 0 ].isEqual( liveRange ) ).to.be.true;
|
|
|
- expect( ranges[ 1 ].isEqual( range ) ).to.be.true;
|
|
|
- expect( ranges[ 0 ] ).not.to.be.equal( liveRange );
|
|
|
- expect( ranges[ 1 ] ).not.to.be.equal( range );
|
|
|
- } );
|
|
|
+ expect( ranges.length ).to.equal( 2 );
|
|
|
+ expect( ranges[ 0 ].isEqual( liveRange ) ).to.be.true;
|
|
|
+ expect( ranges[ 1 ].isEqual( range ) ).to.be.true;
|
|
|
+ expect( ranges[ 0 ] ).not.to.be.equal( liveRange );
|
|
|
+ expect( ranges[ 1 ] ).not.to.be.equal( range );
|
|
|
+ } );
|
|
|
|
|
|
- it( 'should set anchor and focus to the start and end of the most recently added range', () => {
|
|
|
- selection.addRange( liveRange );
|
|
|
+ it( 'should set anchor and focus to the start and end of the most recently added range', () => {
|
|
|
+ selection.addRange( liveRange );
|
|
|
|
|
|
- expect( selection.anchor.path ).to.deep.equal( [ 0 ] );
|
|
|
- expect( selection.focus.path ).to.deep.equal( [ 1 ] );
|
|
|
+ expect( selection.anchor.path ).to.deep.equal( [ 0 ] );
|
|
|
+ expect( selection.focus.path ).to.deep.equal( [ 1 ] );
|
|
|
|
|
|
- selection.addRange( range );
|
|
|
+ selection.addRange( range );
|
|
|
|
|
|
- expect( selection.anchor.path ).to.deep.equal( [ 2 ] );
|
|
|
- expect( selection.focus.path ).to.deep.equal( [ 2, 2 ] );
|
|
|
- } );
|
|
|
+ expect( selection.anchor.path ).to.deep.equal( [ 2 ] );
|
|
|
+ expect( selection.focus.path ).to.deep.equal( [ 2, 2 ] );
|
|
|
+ } );
|
|
|
|
|
|
- it( 'should set anchor and focus to the end and start of the most recently added range if backward flag was used', () => {
|
|
|
- selection.addRange( liveRange, true );
|
|
|
+ it( 'should set anchor and focus to the end and start of the most recently added range if backward flag was used', () => {
|
|
|
+ selection.addRange( liveRange, true );
|
|
|
|
|
|
- expect( selection.anchor.path ).to.deep.equal( [ 1 ] );
|
|
|
- expect( selection.focus.path ).to.deep.equal( [ 0 ] );
|
|
|
+ expect( selection.anchor.path ).to.deep.equal( [ 1 ] );
|
|
|
+ expect( selection.focus.path ).to.deep.equal( [ 0 ] );
|
|
|
|
|
|
- selection.addRange( range, true );
|
|
|
+ selection.addRange( range, true );
|
|
|
|
|
|
- expect( selection.anchor.path ).to.deep.equal( [ 2, 2 ] );
|
|
|
- expect( selection.focus.path ).to.deep.equal( [ 2 ] );
|
|
|
- } );
|
|
|
+ expect( selection.anchor.path ).to.deep.equal( [ 2, 2 ] );
|
|
|
+ expect( selection.focus.path ).to.deep.equal( [ 2 ] );
|
|
|
+ } );
|
|
|
|
|
|
- it( 'should return a copy of (not a reference to) array of stored ranges', () => {
|
|
|
- selection.addRange( liveRange );
|
|
|
+ it( 'should return a copy of (not a reference to) array of stored ranges', () => {
|
|
|
+ selection.addRange( liveRange );
|
|
|
|
|
|
- let ranges = selection.getRanges();
|
|
|
+ let ranges = selection.getRanges();
|
|
|
|
|
|
- selection.addRange( range );
|
|
|
+ selection.addRange( range );
|
|
|
|
|
|
- expect( ranges.length ).to.equal( 1 );
|
|
|
- expect( ranges[ 0 ].isEqual( liveRange ) ).to.be.true;
|
|
|
- } );
|
|
|
+ expect( ranges.length ).to.equal( 1 );
|
|
|
+ expect( ranges[ 0 ].isEqual( liveRange ) ).to.be.true;
|
|
|
+ } );
|
|
|
|
|
|
- it( 'should convert added Range to LiveRange', () => {
|
|
|
- selection.addRange( range );
|
|
|
+ it( 'should convert added Range to LiveRange', () => {
|
|
|
+ selection.addRange( range );
|
|
|
|
|
|
- let ranges = selection.getRanges();
|
|
|
+ let ranges = selection.getRanges();
|
|
|
|
|
|
- expect( ranges[ 0 ] ).to.be.instanceof( LiveRange );
|
|
|
- } );
|
|
|
+ expect( ranges[ 0 ] ).to.be.instanceof( LiveRange );
|
|
|
+ } );
|
|
|
|
|
|
- it( 'should fire change:range event when adding a range', () => {
|
|
|
- let spy = sinon.spy();
|
|
|
- selection.on( 'change:range', spy );
|
|
|
+ it( 'should fire change:range event when adding a range', () => {
|
|
|
+ let spy = sinon.spy();
|
|
|
+ selection.on( 'change:range', spy );
|
|
|
|
|
|
- selection.addRange( range );
|
|
|
+ selection.addRange( range );
|
|
|
|
|
|
- expect( spy.called ).to.be.true;
|
|
|
- } );
|
|
|
+ expect( spy.called ).to.be.true;
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should unbind all events when destroyed', () => {
|
|
|
+ selection.addRange( liveRange );
|
|
|
+ selection.addRange( range );
|
|
|
|
|
|
- it( 'should unbind all events when destroyed', () => {
|
|
|
- selection.addRange( liveRange );
|
|
|
- selection.addRange( range );
|
|
|
+ let ranges = selection.getRanges();
|
|
|
|
|
|
- let ranges = selection.getRanges();
|
|
|
+ sinon.spy( ranges[ 0 ], 'detach' );
|
|
|
+ sinon.spy( ranges[ 1 ], 'detach' );
|
|
|
|
|
|
- sinon.spy( ranges[ 0 ], 'detach' );
|
|
|
- sinon.spy( ranges[ 1 ], 'detach' );
|
|
|
+ selection.destroy();
|
|
|
|
|
|
- selection.destroy();
|
|
|
+ expect( ranges[ 0 ].detach.called ).to.be.true;
|
|
|
+ expect( ranges[ 1 ].detach.called ).to.be.true;
|
|
|
|
|
|
- expect( ranges[ 0 ].detach.called ).to.be.true;
|
|
|
- expect( ranges[ 1 ].detach.called ).to.be.true;
|
|
|
+ ranges[ 0 ].detach.restore();
|
|
|
+ ranges[ 1 ].detach.restore();
|
|
|
+ } );
|
|
|
|
|
|
- ranges[ 0 ].detach.restore();
|
|
|
- ranges[ 1 ].detach.restore();
|
|
|
- } );
|
|
|
+ it( 'should throw an error if added range intersects with already stored range', () => {
|
|
|
+ selection.addRange( liveRange );
|
|
|
|
|
|
- it( 'should throw an error if added range intersects with already stored range', () => {
|
|
|
- selection.addRange( liveRange );
|
|
|
-
|
|
|
- expect( () => {
|
|
|
- selection.addRange(
|
|
|
- new Range(
|
|
|
- new Position( root, [ 0, 4 ] ),
|
|
|
- new Position( root, [ 1, 2 ] )
|
|
|
- )
|
|
|
- );
|
|
|
- } ).to.throw( CKEditorError, /selection-range-intersects/ );
|
|
|
+ expect( () => {
|
|
|
+ selection.addRange(
|
|
|
+ new Range(
|
|
|
+ new Position( root, [ 0, 4 ] ),
|
|
|
+ new Position( root, [ 1, 2 ] )
|
|
|
+ )
|
|
|
+ );
|
|
|
+ } ).to.throw( CKEditorError, /selection-range-intersects/ );
|
|
|
+ } );
|
|
|
} );
|
|
|
|
|
|
describe( 'removeAllRanges', () => {
|