Merge "Add tests for WikiMap and WikiReference"
[lhc/web/wiklou.git] / tests / qunit / suites / resources / mediawiki / mediawiki.errorLogger.test.js
1 ( function ( $, mw ) {
2 QUnit.module( 'mediawiki.errorLogger', QUnit.newMwEnvironment() );
3
4 QUnit.test( 'installGlobalHandler', 7, function ( assert ) {
5 var w = {},
6 errorMessage = 'Foo',
7 errorUrl = 'http://example.com',
8 errorLine = '123',
9 errorColumn = '45',
10 errorObject = new Error( 'Foo' ),
11 oldHandler = this.sandbox.stub();
12
13 this.sandbox.stub( mw, 'track' );
14
15 mw.errorLogger.installGlobalHandler( w );
16
17 assert.ok( w.onerror, 'Global handler has been installed' );
18 assert.strictEqual( w.onerror( errorMessage, errorUrl, errorLine ), false,
19 'Global handler returns false when there is no previous handler' );
20 sinon.assert.calledWithExactly( mw.track, 'global.error',
21 sinon.match( { errorMessage: errorMessage, url: errorUrl, lineNumber: errorLine } ) );
22
23 mw.track.reset();
24 w.onerror( errorMessage, errorUrl, errorLine, errorColumn, errorObject );
25 sinon.assert.calledWithExactly( mw.track, 'global.error',
26 sinon.match( { errorMessage: errorMessage, url: errorUrl, lineNumber: errorLine,
27 columnNumber: errorColumn, errorObject: errorObject } ) );
28
29 w = { onerror: oldHandler };
30
31 mw.errorLogger.installGlobalHandler( w );
32 w.onerror( errorMessage, errorUrl, errorLine );
33 sinon.assert.calledWithExactly( oldHandler, errorMessage, errorUrl, errorLine );
34
35 oldHandler.returns( false );
36 assert.strictEqual( w.onerror( errorMessage, errorUrl, errorLine ), false,
37 'Global handler preserves false return from previous handler' );
38 oldHandler.returns( true );
39 assert.strictEqual( w.onerror( errorMessage, errorUrl, errorLine ), true,
40 'Global handler preserves true return from previous handler' );
41 } );
42 }( jQuery, mediaWiki ) );