Consistent sectionNumbers and issuesSeverity for page-issues.

The value of `sectionNumbers` should be the section number of each issue
Not the number of the sections that have issues.

Bug: T203050
Change-Id: I6fd55c35b9e2ce35894259f36d1a50fb5dca5e43
This commit is contained in:
Jan Drewniak 2018-08-29 11:45:04 +02:00 committed by jdlrobson
parent 4cc3bfa6ae
commit 2cbd57c2f3
2 changed files with 63 additions and 8 deletions

View File

@ -180,7 +180,7 @@
.map( function ( issue ) { return issue.severity; } )
)
],
sectionNumbers: getAllIssuesSections()
sectionNumbers: getAllIssuesSections( allIssues )
} );
} );
if ( $metadata.length ) {
@ -215,13 +215,19 @@
}
/**
* Returns an array of all the page sections that have issues.
* Returns an array containing the section of each page issue.
* @param {Object} allIssues mapping section {Number} to {IssueSummary}
* @return {array}
*/
function getAllIssuesSections() {
return Object.keys( allIssues ).filter( function ( section ) {
return allIssues[ section ].length;
} );
function getAllIssuesSections( allIssues ) {
return Object.keys( allIssues ).reduce( function ( acc, section ) {
if ( allIssues[ section ].length ) {
allIssues[ section ].forEach( function () {
acc.push( section );
} );
}
return acc;
}, [] );
}
/**
@ -277,7 +283,7 @@
newTreatmentEnabled,
CURRENT_NS,
getIssues( KEYWORD_ALL_SECTIONS ).map( formatPageIssuesSeverity ),
getAllIssuesSections()
getAllIssuesSections( allIssues )
)
);
@ -300,6 +306,7 @@
// the subscription call in cleanuptemplates.
log: pageIssuesLogger.log,
test: {
getAllIssuesSections: getAllIssuesSections,
createBanner: createBanner
}
} );

View File

@ -1,5 +1,22 @@
( function ( M ) {
var createBanner = M.require( 'skins.minerva.scripts/pageIssues' ).test.createBanner,
var pageIssues = M.require( 'skins.minerva.scripts/pageIssues' ),
createBanner = pageIssues.test.createBanner,
MEDIUM_ISSUE = {
severity: 'MEDIUM',
icon: 'i',
text: 't'
},
LOW_ISSUE = {
severity: 'LOW',
icon: 'i',
text: 't'
},
HIGH_ISSUE = {
severity: 'HIGH',
icon: 'i',
text: 't'
},
getAllIssuesSections = pageIssues.test.getAllIssuesSections,
OverlayManager = M.require( 'mobile.startup/OverlayManager' ),
Page = M.require( 'mobile.startup/Page' ),
overlayManager = new OverlayManager( require( 'mediawiki.router' ) ),
@ -43,4 +60,35 @@
assert.equal( JSON.toString( mockAction ), JSON.toString( data ) );
} );
} );
QUnit.test( 'getAllIssuesSections', function ( assert ) {
var allIssuesOldTreatment, allIssuesNewTreatment;
allIssuesOldTreatment = {
0: [
MEDIUM_ISSUE,
LOW_ISSUE,
MEDIUM_ISSUE
]
};
allIssuesNewTreatment = {
0: [
HIGH_ISSUE,
LOW_ISSUE,
MEDIUM_ISSUE
],
1: [
MEDIUM_ISSUE
]
};
assert.deepEqual(
getAllIssuesSections( allIssuesOldTreatment ),
[ '0', '0', '0' ],
'section numbers correctly extracted from old treatment'
);
assert.deepEqual(
getAllIssuesSections( allIssuesNewTreatment ),
[ '0', '0', '0', '1' ],
'section numbers correctly extracted from new treatment'
);
} );
}( mw.mobileFrontend ) );