mediawiki-extensions-Discus.../tests/qunit/ThreadItem.test.js
Ed Sanders a4636d39fc Move #getTranscludedFrom from parser to ThreadItem
Also requires moving getTitleFromUrl to CommentUtils

Change-Id: I9cb83a3fdd456eba66899433b866ce7a7f00eeb5
2020-07-20 15:56:48 +01:00

74 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,
$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 );
comments = parser.getComments( fixture );
parser.groupThreads( comments );
transcludedFrom = {};
comments.forEach( function ( comment ) {
if ( comment.id ) {
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 ) );
} );
} );