]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - tests/qunit/suites/resources/mediawiki/mediawiki.errorLogger.test.js
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / tests / qunit / suites / resources / mediawiki / mediawiki.errorLogger.test.js
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.errorLogger.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.errorLogger.test.js
new file mode 100644 (file)
index 0000000..46d7837
--- /dev/null
@@ -0,0 +1,42 @@
+( function ( $, mw ) {
+       QUnit.module( 'mediawiki.errorLogger', QUnit.newMwEnvironment() );
+
+       QUnit.test( 'installGlobalHandler', function ( assert ) {
+               var w = {},
+                       errorMessage = 'Foo',
+                       errorUrl = 'http://example.com',
+                       errorLine = '123',
+                       errorColumn = '45',
+                       errorObject = new Error( 'Foo' ),
+                       oldHandler = this.sandbox.stub();
+
+               this.sandbox.stub( mw, 'track' );
+
+               mw.errorLogger.installGlobalHandler( w );
+
+               assert.ok( w.onerror, 'Global handler has been installed' );
+               assert.strictEqual( w.onerror( errorMessage, errorUrl, errorLine ), false,
+                       'Global handler returns false when there is no previous handler' );
+               sinon.assert.calledWithExactly( mw.track, 'global.error',
+                       sinon.match( { errorMessage: errorMessage, url: errorUrl, lineNumber: errorLine } ) );
+
+               mw.track.reset();
+               w.onerror( errorMessage, errorUrl, errorLine, errorColumn, errorObject );
+               sinon.assert.calledWithExactly( mw.track, 'global.error',
+                       sinon.match( { errorMessage: errorMessage, url: errorUrl, lineNumber: errorLine,
+                               columnNumber: errorColumn, errorObject: errorObject } ) );
+
+               w = { onerror: oldHandler };
+
+               mw.errorLogger.installGlobalHandler( w );
+               w.onerror( errorMessage, errorUrl, errorLine );
+               sinon.assert.calledWithExactly( oldHandler, errorMessage, errorUrl, errorLine );
+
+               oldHandler.returns( false );
+               assert.strictEqual( w.onerror( errorMessage, errorUrl, errorLine ), false,
+                       'Global handler preserves false return from previous handler' );
+               oldHandler.returns( true );
+               assert.strictEqual( w.onerror( errorMessage, errorUrl, errorLine ), true,
+                       'Global handler preserves true return from previous handler' );
+       } );
+}( jQuery, mediaWiki ) );