mediawiki-extensions-Cite/tests/qunit/ve-cite/ve.ui.MWWikitextStringTransferHandler.test.js

96 lines
2.7 KiB
JavaScript
Raw Normal View History

'use strict';
/*!
* VisualEditor UserInterface MWWikitextStringTransferHandler tests.
*
* @copyright 2011-2018 VisualEditor Team's Cite sub-team and others; see AUTHORS.txt
* @license MIT
*/
QUnit.module( 've.ui.MWWikitextStringTransferHandler (Cite)', ve.test.utils.newMwEnvironment( {
beforeEach: function () {
// Mock XHR for mw.Api()
this.server = this.sandbox.useFakeServer();
}
} ) );
/* Tests */
QUnit.test( 'convert', function ( assert ) {
const cases = [
{
msg: 'Simple reference',
pasteString: '<ref>Foo</ref>',
pasteType: 'text/plain',
parsoidResponse: ve.dm.example.singleLine`
<p>
<span about="#mwt2" class="mw-ref reference" id="cite_ref-1"
rel="dc:references" typeof="mw:Extension/ref" data-mw=\'{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}\'>[1]</span>
</p>
<ol class="mw-references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{},"autoGenerated":true}'>
<li about="#cite_note-1" id="cite_note-1"> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">Foo</span></li>
</ol>
`,
annotations: [],
expectedData: [
{ type: 'paragraph' },
{
type: 'mwReference',
attributes: {
listGroup: 'mwReference/',
listIndex: 0,
listKey: 'auto/0',
refGroup: '',
refListItemId: 'mw-reference-text-cite_note-1'
}
},
{ type: '/mwReference' },
{ type: '/paragraph' },
{ type: 'internalList' },
{ type: 'internalItem' },
{ type: 'paragraph', internal: { generated: 'wrapper' } },
'F', 'o', 'o',
{ type: '/paragraph' },
{ type: '/internalItem' },
{ type: '/internalList' }
]
},
{
msg: 'Reference template with autoGenerated content',
pasteString: '{{reference}}',
pasteType: 'text/plain',
parsoidResponse: ve.dm.example.singleLine`
<p><span typeof="mw:Transclusion">[1]</span></p>
<ol class="mw-references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{},"autoGenerated":true}'>
<li>Reference list</li>
</ol>
`,
annotations: [],
expectedData: [
{ type: 'paragraph' },
{
type: 'mwTransclusionInline',
attributes: {
mw: {}
}
},
{
type: '/mwTransclusionInline'
},
{ type: '/paragraph' },
{ type: 'internalList' },
{ type: '/internalList' }
]
}
];
const server = this.server;
cases.forEach( function ( caseItem ) {
ve.test.utils.runWikitextStringHandlerTest(
assert, server, caseItem.pasteString, caseItem.pasteType,
caseItem.parsoidResponse, caseItem.expectedData, caseItem.annotations,
caseItem.assertDom, caseItem.msg
);
} );
} );