mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/DiscussionTools
synced 2024-11-24 16:34:21 +00:00
a2431fe006
* Pass rootNode to the constructor * Rename getters to match CommentItem/HeadingItem/ThreadItem value classes. * Always build the thread tree so CommentItem's always have and ID and replies/parent. Change-Id: I508be9534de59016ff806e3d84edcbb1c76cb0c6
72 lines
1.9 KiB
JavaScript
72 lines
1.9 KiB
JavaScript
var
|
|
testUtils = require( './testUtils.js' ),
|
|
Parser = require( 'ext.discussionTools.init' ).Parser,
|
|
CommentItem = require( 'ext.discussionTools.init' ).CommentItem,
|
|
HeadingItem = require( 'ext.discussionTools.init' ).HeadingItem;
|
|
|
|
QUnit.module( 'mw.dt.ThreadItem', testUtils.newEnvironment() );
|
|
|
|
QUnit.test( '#getAuthorsBelow', function ( assert ) {
|
|
var cases = require( '../cases/authors.json' );
|
|
|
|
function newFromJSON( json ) {
|
|
var item;
|
|
if ( json.type === 'heading' ) {
|
|
item = new HeadingItem();
|
|
} else {
|
|
item = new CommentItem();
|
|
item.author = json.author;
|
|
}
|
|
item.replies = json.replies.map( newFromJSON );
|
|
return item;
|
|
}
|
|
|
|
cases.forEach( function ( caseItem ) {
|
|
var threadItem = newFromJSON( caseItem.thread ),
|
|
authors = threadItem.getAuthorsBelow();
|
|
|
|
assert.deepEqual(
|
|
authors,
|
|
caseItem.expected
|
|
);
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( '#getTranscludedFrom', function ( assert ) {
|
|
var fixture,
|
|
cases = require( '../cases/transcluded.json' );
|
|
|
|
fixture = document.getElementById( 'qunit-fixture' );
|
|
|
|
cases.forEach( function ( caseItem ) {
|
|
var comments, transcludedFrom, parser,
|
|
$dom = mw.template.get( 'test.DiscussionTools', caseItem.dom ).render(),
|
|
expected = require( caseItem.expected ),
|
|
config = require( caseItem.config ),
|
|
data = require( caseItem.data );
|
|
|
|
$( fixture ).empty().append( $dom );
|
|
mw.libs.ve.unwrapParsoidSections( fixture );
|
|
|
|
testUtils.overrideMwConfig( config );
|
|
testUtils.overrideParserData( data );
|
|
|
|
parser = new Parser( fixture );
|
|
comments = parser.getCommentItems();
|
|
|
|
transcludedFrom = {};
|
|
comments.forEach( function ( comment ) {
|
|
transcludedFrom[ comment.id ] = comment.getTranscludedFrom();
|
|
} );
|
|
|
|
assert.deepEqual(
|
|
transcludedFrom,
|
|
expected,
|
|
caseItem.name
|
|
);
|
|
|
|
// Uncomment this to get updated content for the JSON files, for copy/paste:
|
|
// console.log( JSON.stringify( transcludedFrom, null, 2 ) );
|
|
} );
|
|
} );
|