wiki.techinc.nl/tests/api-testing/action/ExternalLinks.js
Ed Sanders 4b9ccab9b9 ESLint: Enforce prefer-arrow-callback and autofix
Change-Id: Iddfa574e42e569ac5e2a2b098ad2f11ca80c5955
2024-06-11 19:03:54 +01:00

64 lines
2 KiB
JavaScript

'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'ExternalLinks', () => {
const page = utils.title( 'ExternalLinkTest_' );
const links = [
'http://example.org/search-me',
'http://www.example.org/some-page',
'ssh://example.org/'
];
let alice;
before( async () => {
alice = await action.alice();
const text = links.reduce( ( currText, url ) => `${ currText } [${ url }]`, '' );
await alice.edit( page, { text } );
} );
it( 'can be listed', async () => {
const result = await alice.prop( 'extlinks', page );
const fetchedLinks = result[ page ].extlinks.map( ( p ) => p[ '*' ] );
assert.sameMembers( fetchedLinks, links );
} );
it( 'can be limited', async () => {
const result = await alice.prop( 'extlinks', page, { ellimit: 1 } );
const fetchedLinks = result[ page ].extlinks.map( ( p ) => p[ '*' ] );
assert.equal( fetchedLinks.length, 1 );
} );
it( 'can be filtered by protocol', async () => {
const result = await alice.prop( 'extlinks', page, { elprotocol: 'ssh' } );
const fetchedLinks = result[ page ].extlinks.map( ( p ) => p[ '*' ] );
assert.sameMembers( fetchedLinks, [ 'ssh://example.org/' ] );
} );
it( 'throws an error on invalid protocol', async () => {
const result = await alice.actionError(
'query',
{
prop: 'extlinks',
titles: page,
elprotocol: 'uwu'
}
);
assert.deepNestedInclude( result, { code: 'badvalue' } );
} );
it( 'can be filtered by search string', async () => {
const result = await alice.prop( 'extlinks', page, { elquery: 'example.org/search-me' } );
const fetchedLinks = result[ page ].extlinks.map( ( p ) => p[ '*' ] );
assert.sameMembers( fetchedLinks, [ 'http://example.org/search-me' ] );
} );
it( 'does not expand external urls', async () => {
const result = await alice.prop( 'extlinks', page, { elexpandurl: true } );
const fetchedLinks = result[ page ].extlinks.map( ( p ) => p[ '*' ] );
assert.sameMembers( fetchedLinks, links );
} );
} );