From 4ffb4cf0b04d496c3b2b4624f223f5caab689cfe Mon Sep 17 00:00:00 2001 From: rillke Date: Sat, 3 May 2014 21:34:23 +0200 Subject: [PATCH] mediawiki.api: Don't apply file extension stripping to category names `mw.Title#getNameText()` strips anything following a dot (.), assuming it's a file name (which doesn't make sense for category names). C.f. https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.Title-method-getMainText This causes some trouble in UploadWizard's category-suggestion system. This bug has been there since the very first version (cb0cf72eba9ff) which, ironically, was specifically written for UploadWizard. Bug: 64764 Change-Id: I2925e1050215272cdf03c8c6b1de6ba79348f6a5 --- .../mediawiki.api/mediawiki.api.category.js | 2 +- tests/qunit/QUnitTestResources.php | 2 ++ .../mediawiki.api.category.test.js | 30 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 tests/qunit/suites/resources/mediawiki.api/mediawiki.api.category.test.js diff --git a/resources/src/mediawiki.api/mediawiki.api.category.js b/resources/src/mediawiki.api/mediawiki.api.category.js index a90617d8ad..7dd9730f77 100644 --- a/resources/src/mediawiki.api/mediawiki.api.category.js +++ b/resources/src/mediawiki.api/mediawiki.api.category.js @@ -73,7 +73,7 @@ var texts = []; if ( data.query && data.query.allpages ) { $.each( data.query.allpages, function ( i, category ) { - texts.push( new mw.Title( category.title ).getNameText() ); + texts.push( new mw.Title( category.title ).getMainText() ); } ); } return texts; diff --git a/tests/qunit/QUnitTestResources.php b/tests/qunit/QUnitTestResources.php index e861967e11..5cfd18f758 100644 --- a/tests/qunit/QUnitTestResources.php +++ b/tests/qunit/QUnitTestResources.php @@ -71,6 +71,7 @@ return array( 'tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js', 'tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js', 'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js', + 'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.category.test.js', 'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js', 'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.watch.test.js', 'tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.test.js', @@ -96,6 +97,7 @@ return array( 'jquery.tablesorter', 'jquery.textSelection', 'mediawiki.api', + 'mediawiki.api.category', 'mediawiki.api.parse', 'mediawiki.api.watch', 'mediawiki.jqueryMsg', diff --git a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.category.test.js b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.category.test.js new file mode 100644 index 0000000000..a0c7daf1a0 --- /dev/null +++ b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.category.test.js @@ -0,0 +1,30 @@ +( function ( mw ) { + QUnit.module( 'mediawiki.api.category', QUnit.newMwEnvironment( { + setup: function () { + this.server = this.sandbox.useFakeServer(); + } + } ) ); + + QUnit.test( '.getCategoriesByPrefix()', function ( assert ) { + QUnit.expect( 1 ); + + var api = new mw.Api(); + + api.getCategoriesByPrefix( 'Foo' ).done( function ( matches ) { + assert.deepEqual( + matches, + [ 'Food', 'Fool Supermarine S.6', 'Fools' ] + ); + } ); + + this.server.respond( function ( req ) { + req.respond( 200, { 'Content-Type': 'application/json' }, + '{ "query": { "allpages": [ ' + + '{ "title": "Category:Food" },' + + '{ "title": "Category:Fool Supermarine S.6" },' + + '{ "title": "Category:Fools" }' + + '] } }' + ); + } ); + } ); +}( mediaWiki ) ); -- 2.20.1