Merge "Use interwiki cache directly to resolve transwiki import sources"
[lhc/web/wiklou.git] / tests / qunit / suites / resources / mediawiki.api / mediawiki.api.test.js
index de79198..56a346f 100644 (file)
@@ -1,4 +1,4 @@
-( function ( mw ) {
+( function ( mw, $ ) {
        QUnit.module( 'mediawiki.api', QUnit.newMwEnvironment( {
                setup: function () {
                        this.server = this.sandbox.useFakeServer();
@@ -14,7 +14,7 @@
        function sequence( responses ) {
                var i = 0;
                return function ( request ) {
-                       var response = responses[i];
+                       var response = responses[ i ];
                        if ( response ) {
                                i++;
                                request.respond.apply( request, response );
@@ -24,7 +24,7 @@
 
        function sequenceBodies( status, headers, bodies ) {
                jQuery.each( bodies, function ( i, body ) {
-                       bodies[i] = [ status, headers, body ];
+                       bodies[ i ] = [ status, headers, body ];
                } );
                return sequence( bodies );
        }
                api.get( { test: [ 'foo', 'bar', 'baz' ] } );
        } );
 
+       QUnit.test( 'Omitting false booleans', function ( assert ) {
+               QUnit.expect( 2 );
+               var api = new mw.Api();
+
+               this.server.respond( function ( request ) {
+                       assert.ok( !request.url.match( /foo/ ), 'foo query parameter is not present' );
+                       assert.ok( request.url.match( /bar=true/ ), 'bar query parameter is present with value true' );
+                       request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
+               } );
+
+               api.get( { foo: false, bar: true } );
+       } );
+
        QUnit.test( 'getToken() - cached', function ( assert ) {
                QUnit.expect( 2 );
                var api = new mw.Api();
                } );
 
                assert.equal( this.server.requests.length, 2, 'Request made' );
-               assert.equal( this.server.requests[0].requestHeaders['X-Foo'], 'Bar', 'Header sent' );
+               assert.equal( this.server.requests[ 0 ].requestHeaders[ 'X-Foo' ], 'Bar', 'Header sent' );
        } );
 
        QUnit.test( 'postWithToken() - badtoken', function ( assert ) {
                                assert.deepEqual( data, { example: { value: 'B' } } );
                        } );
        } );
-}( mediaWiki ) );
+
+       QUnit.module( 'mediawiki.api (2)', {
+               setup: function () {
+                       var self = this,
+                               requests = this.requests = [];
+                       this.api = new mw.Api();
+                       this.sandbox.stub( jQuery, 'ajax', function () {
+                               var request = $.extend( {
+                                       abort: self.sandbox.spy()
+                               }, $.Deferred() );
+                               requests.push( request );
+                               return request;
+                       } );
+               }
+       } );
+
+       QUnit.test( '#abort', 3, function ( assert ) {
+               this.api.get( {
+                       a: 1
+               } );
+               this.api.post( {
+                       b: 2
+               } );
+               this.api.abort();
+               assert.ok( this.requests.length === 2, 'Check both requests triggered' );
+               $.each( this.requests, function ( i, request ) {
+                       assert.ok( request.abort.calledOnce, 'abort request number ' + i );
+               } );
+       } );
+}( mediaWiki, jQuery ) );