wiki.techinc.nl/tests/api-testing/action/UserContribs.js
Ed Sanders 8b720e9bd6 eslint: Update to eslint-config-wikimedia 0.16.0
* valid-jsdoc replaced with jsdoc plugin
* New /selenium config

Change-Id: I471eebac0312cb25c539c3f6a3ecfc7cfd4ed8d6
2020-06-02 21:32:56 +01:00

112 lines
3.2 KiB
JavaScript

'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'The usercontribs list query', function testUserContribsListQuery() {
const titleX = utils.title( 'Contribs_' );
const titleY = utils.title( 'Talk:Contribs_' );
const fiona = action.getAnon();
const franky = action.getAnon();
const edits = {};
const assertContribs = ( expected, contribs ) => {
assert.equal( contribs.length, expected.length, 'number of revisions' );
// Establish chronological order
contribs.sort( ( a, b ) => (
( a.timestamp > b.timestamp ) ? 1 :
( a.timestamp < b.timestamp ) ? -1 :
a.revid - b.revid ) );
for ( let i = 0; i < expected.length; i++ ) {
assert.equal( contribs[ i ].comment, expected[ i ].param_summary, 'summary' );
assert.equal( contribs[ i ].revid, expected[ i ].newrevid, 'revid' );
assert.equal( contribs[ i ].user, expected[ i ].param_user, 'user' );
}
};
before( async () => {
await Promise.all( [
fiona.account( 'Fiona_' ),
franky.account( 'Franky_' )
] );
// Fiona edits X, second edit is minor, first edit is creation
edits.fiona1 = await fiona.edit( titleX, { text: 'Fiona X ONE', summary: 'fiona x one' } );
edits.fiona2 = await fiona.edit( titleX, { text: 'Fiona X TWO', summary: 'fiona x two', minor: true } );
// Franky edits Y, second edit is minor, first edit is creation
edits.franky1 = await franky.edit( titleY, { text: 'Franky Y ONE', summary: 'franky y one' } );
edits.franky2 = await franky.edit( titleY, { text: 'Franky Y TWO', summary: 'franky y two', minor: true } );
// Fiona edits Y, Franky edits X
edits.fiona3 = await fiona.edit( titleY, { text: 'Fiona Y TREE', summary: 'fiona y three' } );
edits.franky3 = await fiona.edit( titleX, { text: 'Franky X TREE', summary: 'franky x three' } );
} );
it( 'can lists all contributions for a given set of users', async () => {
const contribs = await fiona.list( 'usercontribs', {
ucuser: `${fiona.username}|${franky.username}`,
ucprop: 'ids|user|comment|timestamp'
} );
const expected = [
edits.fiona1,
edits.fiona2,
edits.franky1,
edits.franky2,
edits.fiona3,
edits.franky3
];
assertContribs( expected, contribs );
} );
it( 'can filter by namespace', async () => {
const contribs = await fiona.list( 'usercontribs', {
ucuser: `${fiona.username}|${franky.username}`,
ucprop: 'ids|user|comment|timestamp',
ucnamespace: 1 // NS_TALK = 1
} );
const expected = [
edits.franky1,
edits.franky2,
edits.fiona3
];
assertContribs( expected, contribs );
} );
it( 'can list top only', async () => {
const contribs = await fiona.list( 'usercontribs', {
ucuser: `${fiona.username}|${franky.username}`,
ucprop: 'ids|user|comment|timestamp',
uctoponly: true
} );
const expected = [
edits.fiona3,
edits.franky3
];
assertContribs( expected, contribs );
} );
it( 'can list creation only', async () => {
const contribs = await fiona.list( 'usercontribs', {
ucuser: `${fiona.username}|${franky.username}`,
ucprop: 'ids|user|comment|timestamp',
ucshow: 'new'
} );
const expected = [
edits.fiona1,
edits.franky1
];
assertContribs( expected, contribs );
} );
} );