Page MenuHomeWickedGov Phorge

jest.setup.js
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

jest.setup.js

// Adapted from CommunityRequests (https://w.wiki/Ewtf)
const vueConfig = require( '@vue/test-utils' ).config;
global.mw = require( '@wikimedia/mw-node-qunit/src/mockMediaWiki.js' )();
jest.mock( 'mediawiki.api', () => {
mw.Api = class {
get( params ) {
if (
params.action === 'query' &&
params.meta === 'siteinfo' &&
params.siprop === 'namespaces'
) {
return Promise.resolve( require( '../assets/namespaces.json' ) );
}
if (
params.action === 'query' &&
params.list === 'allusers'
) {
if ( params.auprefix === 'Timeout' ) {
return Promise.reject( {
error: {
code: 'maxlag',
info: 'Waiting for test.wiki: 0 seconds lagged',
host: 'test.wiki',
lag: 0,
'*': 'See https://www.mediawiki.org/w/api.php for API usage'
}
} );
}
let users = require( '../assets/allusers.json' ).query.allusers;
if ( params.auprefix ) {
users = users.filter( ( v ) => v.name.startsWith( params.auprefix ) );
}
if ( params.aulimit ) {
users = users.slice( 0, params.aulimit + 1 );
}
return Promise.resolve( {
query: {
allusers: users
}
} );
}
}
};
}, { virtual: true } );
jest.mock( 'mediawiki.util', () => {
mw.util = mw.util || {};
/**
* Don't actually do any debouncing. This can make tests flaky.
*
* @param {Function} func
* @return {Function} func
*/
mw.util.debounce = ( func ) => func;
}, { virtual: true } );
/**
* Mock for the calls to Core's $i18n plugin which returns a mw.Message object.
*
* @param {string} key The key of the message to parse.
* @param {...*} args Arbitrary number of arguments to be parsed.
* @return {Object} mw.Message-like object with .text() and .parse() methods.
*/
function $i18nMock( key, ...args ) {
function serializeArgs() {
return args.length ? `${ key }:[${ args.join( ',' ) }]` : key;
}
return {
text: () => serializeArgs(),
parse: () => serializeArgs()
};
}
// Mock Vue plugins in test suites.
vueConfig.global.provide = {
i18n: $i18nMock
};
vueConfig.global.mocks = {
$i18n: $i18nMock
};
vueConfig.global.directives = {
'i18n-html': ( el, binding ) => {
el.innerHTML = `${ binding.arg } (${ binding.value })`;
}
};

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 4, 00:31 (2 w, 6 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
44/52/45c133c9dfa6a9903ee9816bd16d
Default Alt Text
jest.setup.js (2 KB)

Event Timeline