| Current File : /home/jvzmxxx/wiki/extensions/Flow/tests/qunit/flow/dm/test_mw.flow.dm.Post.js |
QUnit.module( 'ext.flow.dm mw.flow.dm.Post' );
/* Tests */
QUnit.test( 'Hierarchical post structure', function ( assert ) {
var topic, posts, replies, subreplies, subsubreplies, topicRevisionData,
truncatedApiData = {
type: 'topic',
roots: [
'slmursrfvx65co7d'
],
posts: {
slmursrfvx65co7d: [ 'slmursrhg1lsoux5' ],
slmursxodnri3jbd: [ 'slmursxodnri3jbd' ],
slmusa0v7mr51rih: [ 'slmusa0v7mr51rih' ],
slmusuwtamg314zt: [ 'slmusuwtamg314zt' ],
slmut77ka2k80hvt: [ 'slmut77ka2k80hvt' ],
slmuthyr3gzloi2x: [ 'slmuthyr3gzloi2x' ],
slmutvg78doyfszt: [ 'slmutvg78doyfszt' ],
slmuufr0j99j851l: [ 'slmuufr0j99j851l' ]
},
revisions: {
slmursrhg1lsoux5: {
workflowId: 'slmursrfvx65co7d',
articleTitle: 'Topic:Slmursrfvx65co7d',
revisionId: 'slmursrhg1lsoux5',
timestamp: '20150723160332',
changeType: 'new-post',
dateFormats: [],
properties: {
'topic-of-post': {
plaintext: 'Topic with hierarchical posts'
}
},
isOriginalContent: true,
isModerated: false,
author: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
lastEditUser: {
name: null,
wiki: null,
gender: 'unknown',
links: [],
id: null
},
lastEditId: null,
previousRevisionId: null,
isLocked: false,
isModeratedNotLocked: false,
content: {
content: 'Topic with hierarchical posts',
format: 'topic-title-wikitext'
},
isWatched: true,
watchable: true,
replyToId: null,
postId: 'slmursrfvx65co7d',
isMaxThreadingDepth: false,
creator: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
replies: [
'slmursxodnri3jbd',
'slmusa0v7mr51rih'
],
reply_count: 7,
last_updated: 1437667491000
},
slmursxodnri3jbd: {
_BC_bools: [
'isOriginalContent',
'isModerated',
'isLocked',
'isModeratedNotLocked',
'isWatched',
'watchable',
'isMaxThreadingDepth'
],
workflowId: 'slmursrfvx65co7d',
articleTitle: 'Topic:Slmursrfvx65co7d',
revisionId: 'slmursxodnri3jbd',
timestamp: '20150723160332',
changeType: 'reply',
dateFormats: [],
properties: [],
isOriginalContent: true,
isModerated: false,
author: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
lastEditUser: {
name: null,
wiki: null,
gender: 'unknown',
links: [],
id: null
},
lastEditId: null,
previousRevisionId: null,
isLocked: false,
isModeratedNotLocked: false,
content: {
content: 'Post #1',
format: 'fixed-html'
},
isWatched: false,
watchable: true,
replyToId: 'slmursrfvx65co7d',
postId: 'slmursxodnri3jbd',
isMaxThreadingDepth: false,
creator: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
replies: [
'slmusuwtamg314zt',
'slmut77ka2k80hvt'
]
},
slmusa0v7mr51rih: {
_BC_bools: [
'isOriginalContent',
'isModerated',
'isLocked',
'isModeratedNotLocked',
'isWatched',
'watchable',
'isMaxThreadingDepth'
],
workflowId: 'slmursrfvx65co7d',
articleTitle: 'Topic:Slmursrfvx65co7d',
revisionId: 'slmusa0v7mr51rih',
timestamp: '20150723160346',
changeType: 'reply',
dateFormats: [],
properties: [],
isOriginalContent: true,
isModerated: false,
author: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
lastEditUser: {
name: null,
wiki: null,
gender: 'unknown',
links: [],
id: null
},
lastEditId: null,
previousRevisionId: null,
isLocked: false,
isModeratedNotLocked: false,
content: {
content: 'Post #2',
format: 'fixed-html'
},
isWatched: false,
watchable: true,
replyToId: 'slmursrfvx65co7d',
postId: 'slmusa0v7mr51rih',
isMaxThreadingDepth: false,
creator: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
replies: []
},
slmusuwtamg314zt: {
_BC_bools: [
'isOriginalContent',
'isModerated',
'isLocked',
'isModeratedNotLocked',
'isWatched',
'watchable',
'isMaxThreadingDepth'
],
workflowId: 'slmursrfvx65co7d',
articleTitle: 'Topic:Slmursrfvx65co7d',
revisionId: 'slmusuwtamg314zt',
timestamp: '20150723160404',
changeType: 'reply',
dateFormats: [],
properties: [],
isOriginalContent: true,
isModerated: false,
author: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
lastEditUser: {
name: null,
wiki: null,
gender: 'unknown',
links: [],
id: null
},
lastEditId: null,
previousRevisionId: null,
isLocked: false,
isModeratedNotLocked: false,
content: {
content: 'Reply #1',
format: 'fixed-html'
},
isWatched: false,
watchable: true,
replyToId: 'slmursxodnri3jbd',
postId: 'slmusuwtamg314zt',
isMaxThreadingDepth: false,
creator: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
replies: [
'slmuthyr3gzloi2x',
'slmutvg78doyfszt'
]
},
slmut77ka2k80hvt: {
_BC_bools: [
'isOriginalContent',
'isModerated',
'isLocked',
'isModeratedNotLocked',
'isWatched',
'watchable',
'isMaxThreadingDepth'
],
workflowId: 'slmursrfvx65co7d',
articleTitle: 'Topic:Slmursrfvx65co7d',
revisionId: 'slmut77ka2k80hvt',
timestamp: '20150723160414',
changeType: 'reply',
dateFormats: [],
properties: [],
isOriginalContent: true,
isModerated: false,
author: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
lastEditUser: {
name: null,
wiki: null,
gender: 'unknown',
links: [],
id: null
},
lastEditId: null,
previousRevisionId: null,
isLocked: false,
isModeratedNotLocked: false,
content: {
content: 'Reply #2',
format: 'fixed-html'
},
isWatched: false,
watchable: true,
replyToId: 'slmursxodnri3jbd',
postId: 'slmut77ka2k80hvt',
isMaxThreadingDepth: false,
creator: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
replies: []
},
slmuthyr3gzloi2x: {
_BC_bools: [
'isOriginalContent',
'isModerated',
'isLocked',
'isModeratedNotLocked',
'isWatched',
'watchable',
'isMaxThreadingDepth'
],
workflowId: 'slmursrfvx65co7d',
articleTitle: 'Topic:Slmursrfvx65co7d',
revisionId: 'slmuthyr3gzloi2x',
timestamp: '20150723160423',
changeType: 'reply',
dateFormats: [],
properties: [],
isOriginalContent: true,
isModerated: false,
author: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
lastEditUser: {
name: null,
wiki: null,
gender: 'unknown',
links: [],
id: null
},
lastEditId: null,
previousRevisionId: null,
isLocked: false,
isModeratedNotLocked: false,
content: {
content: 'Sub reply #1'
},
isWatched: false,
watchable: true,
replyToId: 'slmusuwtamg314zt',
postId: 'slmuthyr3gzloi2x',
isMaxThreadingDepth: false,
creator: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
replies: [
'slmuufr0j99j851l'
]
},
slmutvg78doyfszt: {
_BC_bools: [
'isOriginalContent',
'isModerated',
'isLocked',
'isModeratedNotLocked',
'isWatched',
'watchable',
'isMaxThreadingDepth'
],
workflowId: 'slmursrfvx65co7d',
articleTitle: 'Topic:Slmursrfvx65co7d',
revisionId: 'slmutvg78doyfszt',
timestamp: '20150723160434',
changeType: 'reply',
dateFormats: [],
properties: [],
isOriginalContent: true,
isModerated: false,
author: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
lastEditUser: {
name: null,
wiki: null,
gender: 'unknown',
links: [],
id: null
},
lastEditId: null,
previousRevisionId: null,
isLocked: false,
isModeratedNotLocked: false,
content: {
content: 'Sub reply #2',
format: 'fixed-html'
},
isWatched: false,
watchable: true,
replyToId: 'slmusuwtamg314zt',
postId: 'slmutvg78doyfszt',
isMaxThreadingDepth: false,
creator: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
replies: []
},
slmuufr0j99j851l: {
_BC_bools: [
'isOriginalContent',
'isModerated',
'isLocked',
'isModeratedNotLocked',
'isWatched',
'watchable',
'isMaxThreadingDepth'
],
workflowId: 'slmursrfvx65co7d',
articleTitle: 'Topic:Slmursrfvx65co7d',
revisionId: 'slmuufr0j99j851l',
timestamp: '20150723160451',
changeType: 'reply',
dateFormats: [],
properties: [],
isOriginalContent: true,
isModerated: false,
author: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
lastEditUser: {
name: null,
wiki: null,
gender: 'unknown',
links: [],
id: null
},
lastEditId: null,
previousRevisionId: null,
isLocked: false,
isModeratedNotLocked: false,
content: {
content: 'Sub sub reply #1',
format: 'fixed-html'
},
isWatched: false,
watchable: true,
replyToId: 'slmuthyr3gzloi2x',
postId: 'slmuufr0j99j851l',
isMaxThreadingDepth: false,
creator: {
name: 'Admin',
wiki: 'wiki',
gender: 'unknown',
id: 1
},
replies: []
}
},
workflowId: 'slmursrfvx65co7d',
links: [],
submitted: {
action: 'view'
},
errors: [],
title: 'Topic:Slmursrfvx65co7d',
'block-action-template': ''
};
/*!
* The structure of this test topic:
*
* Topic with hierarchical posts
* - Post #1
* - Reply #1
* - Sub reply #1
* - Sub sub reply #1
* - Sub reply #2
* - Reply #2
* - Post #2
*/
// Set the stage: Create a topic and add the posts to it
topicRevisionData = mw.flow.dm.Topic.static.getTopicRevisionFromApi( truncatedApiData, 'slmursrfvx65co7d' );
topic = new mw.flow.dm.Topic( 'slmursrfvx65co7d', topicRevisionData );
posts = mw.flow.dm.Post.static.createTopicReplyTree( truncatedApiData, topic.getReplyIds() );
topic.addItems( posts );
posts = topic.getItems();
replies = posts[ 0 ].getItems();
subreplies = replies[ 0 ].getItems();
subsubreplies = subreplies[ 0 ].getItems();
// Posts
assert.equal( posts.length, 2, 'Two base posts.' );
// Replies
assert.equal( replies.length, 2, 'Two replies.' );
assert.equal( replies[ 0 ].getContent(), 'Reply #1', 'Reply #1 has correct content' );
assert.equal( replies[ 1 ].getContent(), 'Reply #2', 'Reply #2 has correct content' );
// Sub replies
assert.equal( subreplies.length, 2, 'Two sub replies.' );
assert.equal( subreplies[ 0 ].getContent(), 'Sub reply #1', 'Sub reply #1 has correct content' );
assert.equal( subreplies[ 1 ].getContent(), 'Sub reply #2', 'Sub reply #2 has correct content' );
// Sub sub reply
assert.equal( subsubreplies.length, 1, 'One sub-sub replies.' );
assert.equal( subsubreplies[ 0 ].getContent(), 'Sub sub reply #1', 'Sub-sub reply #1 has correct content' );
// Workflow Ids
assert.equal( posts[ 0 ].getWorkflowId(), topic.getId(), 'Posts: WorkflowId is topic Id' );
assert.equal( replies[ 0 ].getWorkflowId(), topic.getId(), 'Replies: WorkflowId is topic Id' );
assert.equal( subreplies[ 0 ].getWorkflowId(), topic.getId(), 'Sub replies: WorkflowId is topic Id' );
QUnit.expect( 12 );
} );