mediawiki-extensions-Cite/modules/ve-cite/tests/ve.dm.MWReferencesListNode.test.js
thiemowmde d6a58cfa8d Add initial QUnit tests relevant for reference re-use in VE
Note these are more meant as regression test to better cover what's
done in other patches. Everybody should feel free to delete a test
when it gets in the way. I marked a few especially fragile places
with respective comments.

Bug: T358652
Change-Id: I7844907fe3ef4f3439717381b4ecdac9e2d0a825
2024-03-21 09:37:26 +01:00

48 lines
1.6 KiB
JavaScript

'use strict';
QUnit.module( 've.dm.MWReferencesListNode (Cite)', ve.test.utils.newMwEnvironment() );
QUnit.test( 'isEditable', function ( assert ) {
let model = new ve.dm.MWReferencesListNode();
assert.true( model.isEditable() );
model = new ve.dm.MWReferencesListNode( { attributes: { templateGenerated: true } } );
assert.false( model.isEditable() );
} );
QUnit.test( 'matchFunction', function ( assert ) {
const el = document.createElement( 'div' );
assert.false( ve.dm.MWReferencesListNode.static.matchFunction( el ) );
} );
QUnit.test( 'describeChange', function ( assert ) {
for ( const [ key, change, expected ] of [
[ 'refGroup', { to: 'b' }, 'cite-ve-changedesc-reflist-group-to,<ins>b</ins>' ],
[ 'refGroup', { from: 'a' }, 'cite-ve-changedesc-reflist-group-from,<del>a</del>' ],
[ 'refGroup', { from: 'a', to: 'b' }, 'cite-ve-changedesc-reflist-group-both,<del>a</del>,<ins>b</ins>' ],
[ 'isResponsive', { from: 'a' }, 'cite-ve-changedesc-reflist-responsive-unset' ],
[ 'isResponsive', {}, 'cite-ve-changedesc-reflist-responsive-set' ],
[ 'originalMw', {}, null ],
[ '', {}, null ]
] ) {
let msg = ve.dm.MWReferencesListNode.static.describeChange( key, change );
if ( Array.isArray( msg ) ) {
msg = $( '<span>' ).append( msg ).html();
}
assert.strictEqual( msg, expected );
}
} );
QUnit.test( 'getHashObject', function ( assert ) {
const dataElement = {
type: 'T',
attributes: {
refGroup: 'R',
listGroup: 'L',
isResponsive: true,
templateGenerated: true
}
};
assert.deepEqual( ve.dm.MWReferencesListNode.static.getHashObject( dataElement ), dataElement );
} );