jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/395099 )
Change subject: Hygiene: remove adjustMemberKeys and fillInMemberKeys from mobile-util ...................................................................... Hygiene: remove adjustMemberKeys and fillInMemberKeys from mobile-util Standard Array functions can and should be used to perform these operations. Change-Id: Iefabb9e8e56a5be9bb2c80979b605c8398cecc23 --- M lib/feed/most-read.js M lib/mobile-util.js M test/lib/mobile-util/mobile-util-test.js 3 files changed, 8 insertions(+), 70 deletions(-) Approvals: BearND: Looks good to me, approved jenkins-bot: Verified diff --git a/lib/feed/most-read.js b/lib/feed/most-read.js index 862e1b0..6ea5333 100644 --- a/lib/feed/most-read.js +++ b/lib/feed/most-read.js @@ -22,17 +22,6 @@ } } -/** - * Construct a list of title strings from the array of good article objects. - */ -function constructQueryListFrom(goodTitles) { - const result = []; - for (let i = 0, n = goodTitles.length; i < n; i++) { - result.push(goodTitles[i].article); - } - return result; -} - function getTopPageviews(app, req, domain, date) { const apiDomain = 'wikimedia.org'; const restReq = { @@ -94,11 +83,13 @@ const desktopItems = desktopResults && desktopResults.items; const firstDesktopItems = desktopItems && desktopResults.items[0]; const combinedArticles = firstCombinedItems && firstCombinedItems.articles; - const combinedArticlesSlice = combinedArticles && combinedArticles.slice(0, QUERY_TITLES); + const combinedSlice = combinedArticles && combinedArticles.slice(0, QUERY_TITLES); const desktopArticles = firstDesktopItems && firstDesktopItems.articles; - const desktopArticlesSlice = desktopArticles && desktopArticles.slice(0, DESKTOP_TITLES); + const desktopSlice = desktopArticles && desktopArticles.slice(0, DESKTOP_TITLES); - goodTitles = filter.filterBotTraffic(combinedArticlesSlice, desktopArticlesSlice); + goodTitles = filter.filterBotTraffic(combinedSlice, desktopSlice) + .map(i => Object.assign({ title: i.article }, i)); + if (mUtil.isEmpty(goodTitles)) { mUtil.throw404('No results found.'); } @@ -107,7 +98,7 @@ const month = firstCombinedItems.month; const day = firstCombinedItems.day; resultsDate = `${year}-${month}-${day}Z`; - return mwapi.getMostReadMetadata(app, req, constructQueryListFrom(goodTitles).join('|')); + return mwapi.getMostReadMetadata(app, req, goodTitles.map(i => i.article).join('|')); }).then((response) => { const query = response.body && response.body.query; const normalizations = query && query.normalized; @@ -119,11 +110,10 @@ } if (normalizations) { - mUtil.adjustMemberKeys(normalizations, ['article', 'from'], ['title', 'to']); - mUtil.mergeByProp(goodTitles, normalizations, 'article'); + const adjusted = normalizations.map(norm => ({ article: norm.from, title: norm.to })); + mUtil.mergeByProp(goodTitles, adjusted, 'article'); } - mUtil.fillInMemberKeys(goodTitles, ['title', 'article']); mUtil.mergeByProp(goodTitles, pages, 'title', true); goodTitles = filter.filterSpecialPages(goodTitles, mainPageTitle); diff --git a/lib/mobile-util.js b/lib/mobile-util.js index ee461ad..ee28266 100644 --- a/lib/mobile-util.js +++ b/lib/mobile-util.js @@ -166,41 +166,6 @@ }); }; -/** - * Takes an array of objects and makes the specified changes to the keys of each - * member object. E.g., adjustMemberKeys(arr, ['to', 'from'], ['to', 'from'], ...) - * @param {!Array} arr an array of objects that will receive the change pairs passed in as - * additional params - */ -mUtil.adjustMemberKeys = function(arr) { - for (let i = 0, n = arr.length; i < n; i++) { - for (let j = 1, m = arguments.length; j < m; j++) { - if (arr[i][arguments[j][1]]) { - arr[i][arguments[j][0]] = arr[i][arguments[j][1]]; - delete arr[i][arguments[j][1]]; - } - } - } -}; - -/** - * Takes an array of objects and, for each object, creates the specified key (if - * not already present) with the same value as the specified source key for each - * change pair passed in as an additional parameter. - * E.g., fillInMemberKeys(arr, ['to', 'from'], ['to', 'from'], ...) - * @param {!Array} arr an array of objects that will receive the change pairs passed in as - * additional params - */ -mUtil.fillInMemberKeys = function(arr) { - for (let i = 0, n = arr.length; i < n; i++) { - for (let j = 1, m = arguments.length; j < m; j++) { - if (!arr[i][arguments[j][0]]) { - arr[i][arguments[j][0]] = arr[i][arguments[j][1]]; - } - } - } -}; - mUtil.getRbPageSummaryUrl = function(restbaseTpl, domain, title) { const request = restbaseTpl.expand({ request: { diff --git a/test/lib/mobile-util/mobile-util-test.js b/test/lib/mobile-util/mobile-util-test.js index cdbdf23..cd210d5 100644 --- a/test/lib/mobile-util/mobile-util-test.js +++ b/test/lib/mobile-util/mobile-util-test.js @@ -5,19 +5,14 @@ const domino = require('domino'); const obj1 = { hello: true, world: true }; -const obj2 = { goodbye: true, sea: true, again: false }; const obj3 = { hello: true, world: true, again: false }; const obj4 = { goodbye: true, sea: true }; -const obj5 = { goodbye: true, sea: true, world: true, again: true }; const obj6 = { goodbye: true, sea: true, again: true }; const arr1 = [ obj1, obj3 ]; const arr2 = [ obj4, obj6 ]; -const arr3 = [ obj4, obj5 ]; -const arr4 = [ obj5, obj5 ]; const arr5 = [ obj1, obj3, obj6 ]; const arr6 = [ obj1, obj3 ]; -const arr7 = [ obj4, obj2 ]; const ordered = [ { order: 1, join: 'foo' }, @@ -77,16 +72,4 @@ assert.deepEqual(arr1, arr5); }); - it('adjustMemberKeys should make the specified adjustments', () => { - mUtil.adjustMemberKeys(arr6, ['goodbye', 'hello'], ['sea', 'world']); - assert.deepEqual(arr6, arr7); - - mUtil.adjustMemberKeys(arr3, ['goodbye', 'hello'], ['sea', 'world']); - assert.deepEqual(arr3, arr2); - }); - - it('fillInMemberKeys should make the specified adjustments', () => { - mUtil.fillInMemberKeys(arr3, ['world', 'goodbye'], ['again', 'sea']); - assert.deepEqual(arr3, arr4); - }); }); -- To view, visit https://gerrit.wikimedia.org/r/395099 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iefabb9e8e56a5be9bb2c80979b605c8398cecc23 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/services/mobileapps Gerrit-Branch: master Gerrit-Owner: Mholloway <mhollo...@wikimedia.org> Gerrit-Reviewer: BearND <bsitzm...@wikimedia.org> Gerrit-Reviewer: Fjalapeno <cfl...@wikimedia.org> Gerrit-Reviewer: Jdlrobson <jrob...@wikimedia.org> Gerrit-Reviewer: Mhurd <mh...@wikimedia.org> Gerrit-Reviewer: Ppchelko <ppche...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits