| Current File : /home/jvzmxxx/wiki/extensions/Flow/tests/qunit/flow/dm/test_mw.flow.dm.System.js |
QUnit.module( 'ext.flow.dm mw.flow.dm.System' );
/* Tests */
QUnit.test( 'Initialize flow system', function ( assert ) {
var i, len, j, jlen, system, op, result, ops,
executeOperation = function ( obj, operation, params ) {
return obj[ operation ].apply( obj, params );
},
expectCounter = 0,
truncatedApiData = {
submitted: {
'offset-dir': 'fwd',
sortby: 'user',
'offset-id': null,
offset: '0',
limit: 10
},
errors: [],
sortby: 'newest',
workflowId: 'sfykaxy3moyu18iz',
roots: [
'sfykaxy9v6pfdze3'
],
posts: {
sfykaxy9v6pfdze3: [
'sfykaxybfb52q63v'
],
sfykaxybfd43u82z: [
'sfykaxybfd43u82z'
],
sfykbdkszd4qpcvf: [
'sfykbdkszd4qpcvf'
]
},
revisions: {
sfykaxybfb52q63v: {
workflowId: 'sfykaxy9v6pfdze3',
articleTitle: 'Topic:Sfykaxy9v6pfdze3',
revisionId: 'sfykaxybfb52q63v',
timestamp: '20150422230352',
changeType: 'new-post',
dateFormats: [],
properties: {
'topic-of-post': {
plaintext: 'This is a test content in topic-title-wikitext.'
}
},
isOriginalContent: true,
isModerated: false,
author: {
name: 'Tester',
wiki: 'mediawiki',
gender: 'female',
links: {
contribs: {
url: '/wiki/index.php/Special:Contributions/Tester',
title: 'Contributions/Tester',
exists: true
},
userpage: {
url: '/wiki/index.php/User:Tester',
title: 'Tester',
exists: false
},
talk: {
url: '/wiki/index.php/User_talk:Tester',
title: 'User talk:Tester',
exists: true
}
},
id: 3
},
lastEditUser: {
name: null,
wiki: null,
gender: 'unknown',
links: [],
id: null
},
lastEditId: null,
previousRevisionId: null,
content: {
content: 'This is a test content in topic-title-wikitext.',
format: 'topic-title-wikitext'
},
watchable: false,
replyToId: null,
postId: 'sfykaxy9v6pfdze3',
isMaxThreadingDepth: false,
creator: {
name: 'Tester',
wiki: 'mediawiki',
gender: 'female',
links: {
contribs: {
url: '/wiki/index.php/Special:Contributions/Tester',
title: 'Contributions/Tester',
exists: true
},
userpage: {
url: '/wiki/index.php/User:Tester',
title: 'Tester',
exists: false
},
talk: {
url: '/wiki/index.php/User_talk:Tester',
title: 'User talk:Tester',
exists: true
}
},
id: 3
},
replies: [
'sfykaxybfd43u82z'
],
reply_count: 2,
last_updated_readable: '16:54, 6 May 2015',
last_updated: 1430956497000
},
sfykaxybfd43u82z: {
workflowId: 'sfykaxy9v6pfdze3',
articleTitle: 'Topic:Sfykaxy9v6pfdze3',
revisionId: 'sfykaxybfd43u82z',
timestamp: '20150422230352',
changeType: 'reply',
dateFormats: [],
properties: [],
isOriginalContent: true,
isModerated: false,
size: {
old: '0',
'new': '12'
},
author: {
name: 'Tester',
wiki: 'mediawiki',
gender: 'female',
links: {
contribs: {
url: '/wiki/index.php/Special:Contributions/Tester',
title: 'Contributions/Tester',
exists: true
},
userpage: {
url: '/wiki/index.php/User:Tester',
title: 'Tester',
exists: false
},
talk: {
url: '/wiki/index.php/User_talk:Tester',
title: 'User talk:Tester',
exists: true
}
},
id: 3
},
lastEditUser: {
name: null,
wiki: null,
gender: 'unknown',
links: [],
id: null
},
lastEditId: null,
previousRevisionId: null,
content: {
content: '<p data-parsoid=\'{"dsr":[0,12,0,0]}\'>Testing a post</p>',
format: 'fixed-html'
},
watchable: false,
replyToId: 'sfykaxy9v6pfdze3',
postId: 'sfykaxybfd43u82z',
isMaxThreadingDepth: false,
creator: {
name: 'Tester',
wiki: 'mediawiki',
gender: 'female',
links: {
contribs: {
url: '/wiki/index.php/Special:Contributions/Tester',
title: 'Contributions/Tester',
exists: true
},
userpage: {
url: '/wiki/index.php/User:Tester',
title: 'Tester',
exists: false
},
talk: {
url: '/wiki/index.php/User_talk:Tester',
title: 'User talk:Tester',
exists: true
}
},
id: 3
},
replies: [
'sfykbdkszd4qpcvf'
]
},
sfykbdkszd4qpcvf: {
workflowId: 'sfykaxy9v6pfdze3',
articleTitle: 'Topic:Sfykaxy9v6pfdze3',
revisionId: 'sfykbdkszd4qpcvf',
timestamp: '20150422230404',
changeType: 'reply',
dateFormats: [],
properties: [],
isOriginalContent: true,
isModerated: false,
size: {
old: '0',
'new': '29'
},
author: {
name: 'Tester',
wiki: 'mediawiki',
gender: 'female',
links: {
contribs: {
url: '/wiki/index.php/Special:Contributions/Tester',
title: 'Contributions/Tester',
exists: true
},
userpage: {
url: '/wiki/index.php/User:Tester',
title: 'Tester',
exists: false
},
talk: {
url: '/wiki/index.php/User_talk:Tester',
title: 'User talk:Tester',
exists: true
}
},
id: 3
},
lastEditUser: {
name: null,
wiki: null,
gender: 'unknown',
links: [],
id: null
},
lastEditId: null,
previousRevisionId: null,
content: {
content: '<p data-parsoid=\'{"dsr":[0,29,0,0]}\'>asdf asdf sdf asd sd fds fsdf</p>',
format: 'fixed-html'
},
watchable: false,
replyToId: 'sfykaxybfd43u82z',
postId: 'sfykbdkszd4qpcvf',
isMaxThreadingDepth: false,
creator: {
name: 'Tester',
wiki: 'mediawiki',
gender: 'female',
links: {
contribs: {
url: '/wiki/index.php/Special:Contributions/Tester',
title: 'Contributions/Tester',
exists: true
},
userpage: {
url: '/wiki/index.php/User:Tester',
title: 'Tester',
exists: false
},
talk: {
url: '/wiki/index.php/User_talk:Tester',
title: 'User talk:Tester',
exists: true
}
},
id: 3
},
replies: []
}
},
title: 'User talk:Tester',
type: 'topiclist'
},
cases = [
{
method: 'getPageTitle',
expected: mw.Title.newFromText( 'Main_Page' ),
msg: 'Get page title'
},
{
method: 'getToCPostsLimit',
expected: 20,
msg: 'ToC post limit'
},
{
method: 'getBoard.getId',
expected: 'sfykaxy3moyu18iz',
msg: 'Check board id'
},
{
method: 'populateBoardTopicsFromJson',
args: [ truncatedApiData ],
skipTest: true
},
{
method: 'getBoard.getItemCount',
expected: 1,
msg: 'Check topic count in board'
}
];
system = new mw.flow.dm.System( {
pageTitle: mw.Title.newFromText( 'Main_Page' ),
tocPostsLimit: 20,
boardId: 'sfykaxy3moyu18iz'
} );
for ( i = 0, len = cases.length; i < len; i++ ) {
op = cases[ i ];
if ( op.method.indexOf( '.' ) > -1 ) {
// Nested operations
ops = op.method.split( '.' );
result = system;
for ( j = 0, jlen = ops.length; j < jlen; j++ ) {
result = executeOperation( result, ops[ j ], [] );
}
} else {
// Regular operations
result = executeOperation( system, op.method, op.args || [] );
}
if ( op.skipTest ) {
continue;
}
// Types of comparisons
if ( op.operation === 'instanceof' ) {
assert.ok( result instanceof op.expected, op.msg );
} else {
assert.deepEqual( result, op.expected, op.msg );
}
expectCounter++;
}
QUnit.expect( expectCounter );
} );