summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Cite/modules/ve-cite/tests/ve.ui.MWWikitextStringTransferHandler.test.js
blob: 210dd49cecf3f34e5832cf5221aed3e6b1558057 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*!
 * VisualEditor UserInterface MWWikitextStringTransferHandler tests.
 *
 * @copyright 2011-2018 VisualEditor Team's Cite sub-team and others; see AUTHORS.txt
 * @license MIT
 */

window.MWWIKITEXT_MOCK_API = true;

QUnit.module( 've.ui.MWWikitextStringTransferHandler (Cite)', QUnit.newMwEnvironment( {
	beforeEach: function () {
		// Mock XHR for mw.Api()
		this.server = window.MWWIKITEXT_MOCK_API ? this.sandbox.useFakeServer() : null;
		ve.test.utils.mwEnvironment.setup.call( this );
	},
	afterEach: ve.test.utils.mwEnvironment.teardown
} ) );

/* Tests */

QUnit.test( 'convert', function ( assert ) {
	var i,
		cases = [
			{
				msg: 'Simple reference',
				pasteString: '<ref>Foo</ref>',
				pasteType: 'text/plain',
				parsoidResponse: '<p><span about="#mwt2" class="mw-ref" 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: 'mwReference',
						attributes: {
							mw: {
								attrs: {},
								body: {
									id: 'mw-reference-text-cite_note-1'
								},
								name: 'ref'
							},
							contentsUsed: true,
							listGroup: 'mwReference/',
							listIndex: 0,
							listKey: 'auto/0',
							originalMw: '{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}',
							refGroup: '',
							refListItemId: 'mw-reference-text-cite_note-1'
						}
					},
					{ type: '/mwReference' },
					{ 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: '<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: 'mwTransclusionInline',
						attributes: {
							mw: {},
							originalMw: null
						}
					},
					{
						type: '/mwTransclusionInline'
					},
					{ type: 'internalList' },
					{ type: '/internalList' }
				]
			}
		];

	for ( i = 0; i < cases.length; i++ ) {
		ve.test.utils.runWikitextStringHandlerTest(
			assert, this.server, cases[ i ].pasteString, cases[ i ].pasteType, cases[ i ].parsoidResponse,
			cases[ i ].expectedData, cases[ i ].annotations, cases[ i ].assertDom, cases[ i ].msg
		);
	}
} );