'use strict';
const addSpecialGlobalContributionsLink = require( '../../../modules/ext.checkUser.ipInfo.hooks/infobox.js' );
QUnit.module( 'ext.checkUser.ipInfo.hooks', QUnit.newMwEnvironment( {
beforeEach: function () {
// simulate setting wgAutoCreateTempUser to { enabled: true, matchPattern: '~$1' }
// (setting it in mw.config has no effect, so we need to
// overwrite mw.util.isTemporaryUser())
this.realIsTemporaryUser = mw.util.isTemporaryUser;
mw.util.isTemporaryUser = function ( username ) {
return username.startsWith( '~' );
};
},
afterEach: function () {
mw.util.isTemporaryUser = this.realIsTemporaryUser;
}
} ) );
function setUpDocumentForTest() {
// Stub out the attribute container from IPInfo box for the function under test to act on
const $el = $( '
' ).append( $( '
' ).attr( 'data-property', 'edits' ) );
return $el;
}
/**
* Pass-through function to mimic IPInfo's generatePropertyMarkup function that's passed to
* CheckUser normally in order to generate standard markup for an IPInfo property
*
* @param {string} _$title
* @param {Object} $content
* @return {Object}
*/
function generateMarkup( _$title, $content ) {
return $content;
}
/**
* Stub out mock data returned from IPInfoHandler with results modified via CheckUser
*
* @return {Object}
*/
function returnData() {
return {
data: {
'ipinfo-source-checkuser': {
globalContributionsCount: 1
}
}
};
}
QUnit.test( 'Special:GC link not added if conditions not met when hook is fired', ( assert ) => {
let $body = setUpDocumentForTest();
addSpecialGlobalContributionsLink( $body, returnData(), generateMarkup, 'Registered User', 'Contributions' );
assert.strictEqual(
$body.find( '.ext-ipinfo-global-contribution-link' ).length,
0,
'No Special:GC link added to page with invalid conditions'
);
$body = setUpDocumentForTest();
addSpecialGlobalContributionsLink( $body, returnData(), generateMarkup, '1.2.3.4', 'Contributions' );
assert.strictEqual(
$body.find( '.ext-ipinfo-global-contribution-link' ).length,
0,
'No Special:GC link added to page with invalid conditions'
);
} );
QUnit.test( 'Test Special:GC link added on ext.ipinfo.infobox.widget hook', ( assert ) => {
let $body = setUpDocumentForTest( '~1', 'Contributions' );
addSpecialGlobalContributionsLink( $body, returnData(), generateMarkup, '~1', 'Contributions' );
assert.strictEqual(
$body.find( '.ext-ipinfo-global-contribution-link' ).length,
1,
'Special:GC link added to temporary account\'s contributions page'
);
$body = setUpDocumentForTest( '~1', 'DeletedContributions' );
addSpecialGlobalContributionsLink( $body, returnData(), generateMarkup, '~1', 'Contributions' );
assert.strictEqual(
$body.find( '.ext-ipinfo-global-contribution-link' ).length,
1,
'Special:GC link added to temporary account\'s deleted contributions page'
);
$body = setUpDocumentForTest( '1.2.3.4', 'IPContributions' );
addSpecialGlobalContributionsLink( $body, returnData(), generateMarkup, '1.2.3.4', 'IPContributions' );
assert.strictEqual(
$body.find( '.ext-ipinfo-global-contribution-link' ).length,
1,
'Special:GC link added to IP\'s contributions page'
);
} );