/*! * VisualEditor Cite-specific ContentEditable ClipboardHandler tests. * * @copyright See AUTHORS.txt * @license The MIT License (MIT); see LICENSE.txt */ QUnit.module( 've.ce.ClipboardHandler (Cite)', ve.test.utils.newMwEnvironment() ); /* Tests */ QUnit.test( 'beforePaste/afterPaste', ( assert ) => { const cases = [ { documentHtml: '

', rangeOrSelection: new ve.Range( 1 ), pasteHtml: 'a[1]b', expectedRangeOrSelection: new ve.Range( 3 ), expectedHtml: '

ab

', msg: 'Leagcy parser read mode references stripped' }, { documentHtml: '

', rangeOrSelection: new ve.Range( 1 ), pasteHtml: ve.dm.example.singleLine` a [1] b `, expectedRangeOrSelection: new ve.Range( 3 ), expectedHtml: '

ab

', msg: 'Parsoid read mode references stripped' }, { documentHtml: '

', rangeOrSelection: new ve.Range( 1 ), pasteHtml: ve.dm.example.singleLine` a [1] b `, expectedRangeOrSelection: new ve.Range( 5 ), expectedHtml: ve.dm.example.singleLine`

a [1] b

`, msg: 'VE references not stripped' }, { documentHtml: ve.dm.example.singleLine`

a [1]

`, rangeOrSelection: new ve.Range( 4 ), pasteHtml: ve.dm.example.singleLine` b [1] `, expectedRangeOrSelection: new ve.Range( 7 ), expectedHtml: ve.dm.example.singleLine`

a [1] b [2]

`, msg: 'VE external reference with conflicting name disambiguated' }, { documentHtml: ve.dm.example.singleLine`

a [1]

`, internalSourceRangeOrSelection: new ve.Range( 0, 6 ), rangeOrSelection: new ve.Range( 6 ), expectedRangeOrSelection: new ve.Range( 10 ), expectedHtml: ve.dm.example.singleLine`

a [1]

a [1]

`, msg: 'VE internal reference with same name deduplicated' } ]; const done = assert.async(); ( async function () { for ( const caseItem of cases ) { await ve.test.utils.runSurfacePasteTest( assert, caseItem ); } done(); }() ); } );