wiki.techinc.nl/tests/qunit/suites/resources/mediawiki/mediawiki.errorLogger.test.js
Ed Sanders e2c4f1ef0d test: Always use strict equalities
Replace assert.(not)ok/(not)equal with strict equality checks:
assert.true/false/(not)strictEqual.

Will be enforced in upcoming eslint-config-wikimedia release.

Change-Id: I4a9523b72834524a4b4e4339d5b175a8346a646c
2021-11-08 21:41:01 +00:00

72 lines
2 KiB
JavaScript

( function () {
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.strictEqual( typeof w.onerror, 'function', 'Global handler has been installed' );
assert.strictEqual(
w.onerror(
errorMessage,
errorUrl,
errorLine,
errorColumn,
errorObject
),
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,
columnNumber: errorColumn,
stackTrace: errorObject.stack,
errorObject: errorObject
} ) );
sinon.assert.calledWithExactly( mw.track, 'error.uncaught', sinon.match( errorObject ) );
// ---
mw.track.reset();
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' );
} );
QUnit.test( 'logError', function () {
var errorObject = new Error( 'Foo' );
this.sandbox.stub( mw, 'track' );
mw.errorLogger.logError( errorObject );
sinon.assert.calledWithExactly( mw.track, 'error.caught', sinon.match( errorObject ) );
// ---
mw.errorLogger.logError( errorObject, 'error.vue' );
mw.errorLogger.logError( errorObject, 'error.vue', sinon.match( errorObject ) );
} );
}() );