mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue
synced 2024-11-17 11:13:34 +00:00
f67c410859
Uses `mw.trackSubscribe` to create an intermediary data handler named `wikimedia.PageIssuesAB` which extends event-logging data before passing it to the eventLogging through `wikimedia.event.PageIssues`. Event hooks are placed where appropriate and the `CleanupOverlay` class is extended to capture events from within the page issues modal. Additional changes: * Merge two identical on click event handlers for .edit-page, .edit-link elements * change pageIssueParser.maxSeverity to accept an array of severity levels instead of an array of pageIssues objects Depends-On: Ic84e4a3286220407863167e0f57cef1b13a72964 Bug: T191532 Change-Id: I67fb6e448f6ecc97c89c1187e491ee05f7a312ef
123 lines
3.8 KiB
JavaScript
123 lines
3.8 KiB
JavaScript
( function ( M ) {
|
|
var pageIssueParser = M.require( 'skins.minerva.scripts/pageIssueParser' );
|
|
|
|
QUnit.module( 'Minerva pageIssueParser' );
|
|
|
|
/**
|
|
* @param {string} className
|
|
* @return {Element}
|
|
*/
|
|
function newBox( className ) {
|
|
var box = document.createElement( 'div' );
|
|
box.className = className;
|
|
return box;
|
|
}
|
|
|
|
QUnit.test( 'parseSeverity', function ( assert ) {
|
|
var tests = [
|
|
[ '', 'DEFAULT', 'empty' ],
|
|
[ 'foo', 'DEFAULT', 'unknown' ],
|
|
[ 'ambox-style', 'LOW', 'style' ],
|
|
[ 'ambox-content', 'MEDIUM', 'content' ],
|
|
[ 'ambox-speedy', 'HIGH', 'speedy' ],
|
|
[ 'ambox-delete', 'HIGH', 'delete' ],
|
|
// Move has an "unknown" severity and falls into DEFAULT.
|
|
[ 'ambox-move', 'DEFAULT', 'move' ],
|
|
// Point of view uses ambox-content to identify correct severity.
|
|
[ 'ambox-content ambox-POV', 'MEDIUM', 'point of view' ]
|
|
// Mixed severities such as 'ambox-style ambox-content' are not prioritized.
|
|
];
|
|
tests.forEach( function ( params, i ) {
|
|
var
|
|
className = params[0],
|
|
expect = params[1],
|
|
test = params[2],
|
|
box = newBox( className );
|
|
assert.strictEqual(
|
|
pageIssueParser.test.parseSeverity( box ),
|
|
expect,
|
|
'Result should be the correct severity; case ' + i + ': ' + test + '.'
|
|
);
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'parseType', function ( assert ) {
|
|
var tests = [
|
|
[ '', 'DEFAULT', 'issue-generic', 'empty' ],
|
|
[ 'foo', 'DEFAULT', 'issue-generic', 'unknown' ],
|
|
[ 'ambox-move', 'DEFAULT', 'issue-type-move', 'move' ],
|
|
[ 'ambox-POV', 'MEDIUM', 'issue-type-point-of-view', 'point of view' ],
|
|
[ '', 'DEFAULT', 'issue-generic', 'Default severity' ],
|
|
[ '', 'LOW', 'issue-severity-low', 'Low severity' ],
|
|
[ '', 'MEDIUM', 'issue-severity-medium', 'Medium severity' ],
|
|
[ '', 'HIGH', 'issue-generic', 'HIGH severity' ]
|
|
];
|
|
tests.forEach( function ( params, i ) {
|
|
var
|
|
className = params[0],
|
|
severity = params[1],
|
|
expect = {
|
|
name: params[2],
|
|
severity: severity
|
|
},
|
|
test = params[3],
|
|
box = newBox( className );
|
|
assert.propEqual(
|
|
pageIssueParser.test.parseType( box, severity ),
|
|
expect,
|
|
'Result should be the correct icon type; case ' + i + ': ' + test + '.'
|
|
);
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'iconName', function ( assert ) {
|
|
var tests = [
|
|
[ '', 'DEFAULT', 'issue-generic-defaultColor' ],
|
|
[ '', 'LOW', 'issue-severity-low-lowColor' ],
|
|
[ '', 'MEDIUM', 'issue-severity-medium-mediumColor' ],
|
|
[ '', 'HIGH', 'issue-generic-highColor' ],
|
|
[ 'ambox-move', 'DEFAULT', 'issue-type-move-defaultColor' ],
|
|
[ 'ambox-POV', 'MEDIUM', 'issue-type-point-of-view-mediumColor' ],
|
|
// ResourceLoader only supplies color variants for the generic type. Ensure impossible
|
|
// combinations are forbidden.
|
|
[ 'ambox-style ambox-POV', 'LOW', 'issue-type-point-of-view-mediumColor' ],
|
|
[ 'ambox-content ambox-move', 'MEDIUM', 'issue-type-move-defaultColor' ]
|
|
];
|
|
tests.forEach( function ( params, i ) {
|
|
var
|
|
className = params[0],
|
|
severity = params[1],
|
|
expect = params[2],
|
|
box = newBox( className );
|
|
assert.strictEqual(
|
|
pageIssueParser.iconName( box, severity ),
|
|
expect,
|
|
'Result should be the correct ResourceLoader icon name; case ' + i + ': ' + severity + '.'
|
|
);
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'maxSeverity', function ( assert ) {
|
|
var tests = [
|
|
[ [], 'DEFAULT' ],
|
|
[ [ 'DEFAULT' ], 'DEFAULT' ],
|
|
[ [ 'DEFAULT', 'LOW' ], 'LOW' ],
|
|
[ [ 'DEFAULT', 'LOW', 'MEDIUM' ], 'MEDIUM' ],
|
|
[ [ 'DEFAULT', 'LOW', 'MEDIUM', 'HIGH' ], 'HIGH' ],
|
|
[ [ 'HIGH', 'DEFAULT', 'LOW', 'MEDIUM' ], 'HIGH' ],
|
|
[ [ 'DEFAULT', 'HIGH', 'LOW', 'MEDIUM' ], 'HIGH' ]
|
|
];
|
|
tests.forEach( function ( params, i ) {
|
|
var severities = params[0],
|
|
expect = params[1];
|
|
|
|
assert.strictEqual(
|
|
pageIssueParser.maxSeverity( severities ),
|
|
expect,
|
|
'Result should be the highest severity in the array; case ' + i + '.'
|
|
);
|
|
} );
|
|
} );
|
|
|
|
}( mw.mobileFrontend ) );
|