From: jenkins-bot Date: Thu, 30 Oct 2014 21:09:23 +0000 (+0000) Subject: Merge "mediawiki.api: Transform arrays with join('|') in query parameters" X-Git-Tag: 1.31.0-rc.0~13435 X-Git-Url: http://git.cyclocoop.org/%22%20.%20%20%20%24self2%20.%20%20%20%22&var_mode_affiche=boucle?a=commitdiff_plain;h=c931f6bca33b544ca6af73acaf241309b4b5a0fa;hp=cc3b1d1e2c26fe9997863ff1b95e550e58070666;p=lhc%2Fweb%2Fwiklou.git Merge "mediawiki.api: Transform arrays with join('|') in query parameters" --- diff --git a/resources/src/mediawiki.api/mediawiki.api.js b/resources/src/mediawiki.api/mediawiki.api.js index fb6982ce34..3a19e021b0 100644 --- a/resources/src/mediawiki.api/mediawiki.api.js +++ b/resources/src/mediawiki.api/mediawiki.api.js @@ -49,6 +49,16 @@ * console.log( data ); * } ); * + * Multiple values for a parameter can be specified using an array (since MW 1.25): + * + * var api = new mw.Api(); + * api.get( { + * action: 'query', + * meta: [ 'userinfo', 'siteinfo' ] // same effect as 'userinfo|siteinfo' + * } ).done ( function ( data ) { + * console.log( data ); + * } ); + * * @class * * @constructor @@ -124,6 +134,12 @@ delete parameters.token; } + for ( key in parameters ) { + if ( $.isArray( parameters[key] ) ) { + parameters[key] = parameters[key].join( '|' ); + } + } + // If multipart/form-data has been requested and emulation is possible, emulate it if ( ajaxOptions.type === 'POST' && diff --git a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js index 1d5656e971..b89526fb84 100644 --- a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js +++ b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js @@ -51,16 +51,28 @@ this.server.respond( function ( request ) { if ( window.FormData ) { - assert.ok( !request.url.match( /action=/), 'Request has no query string' ); + assert.ok( !request.url.match( /action=/ ), 'Request has no query string' ); assert.ok( request.requestBody instanceof FormData, 'Request uses FormData body' ); } else { - assert.ok( !request.url.match( /action=test/), 'Request has no query string' ); + assert.ok( !request.url.match( /action=test/ ), 'Request has no query string' ); assert.equal( request.requestBody, 'action=test&format=json', 'Request uses query string body' ); } request.respond( 200, { 'Content-Type': 'application/json' }, '[]' ); } ); } ); + QUnit.test( 'Converting arrays to pipe-separated', function ( assert ) { + QUnit.expect( 1 ); + + var api = new mw.Api(); + api.get( { test: [ 'foo', 'bar', 'baz' ] } ); + + this.server.respond( function ( request ) { + assert.ok( request.url.match( /test=foo%7Cbar%7Cbaz/ ), 'Pipe-separated value was submitted' ); + request.respond( 200, { 'Content-Type': 'application/json' }, '[]' ); + } ); + } ); + QUnit.test( 'getToken( pre-populated )', function ( assert ) { QUnit.expect( 2 );