Correctly restore MatrixClientPeg after each test case

pull/21833/head
Richard van der Hoff 2016-04-07 16:47:17 +01:00
parent b64604964d
commit a2168efcda
3 changed files with 30 additions and 7 deletions

View File

@ -3,16 +3,21 @@ var TestUtils = require('react-addons-test-utils');
var expect = require('expect'); var expect = require('expect');
var sdk = require('matrix-react-sdk'); var sdk = require('matrix-react-sdk');
var MatrixChat = sdk.getComponent('structures.MatrixChat');
var peg = require('../../../src/MatrixClientPeg');
var test_utils = require('../../test-utils'); var test_utils = require('../../test-utils');
var peg = require('../../../src/MatrixClientPeg.js');
var q = require('q'); var q = require('q');
describe('MatrixChat', function () { describe('MatrixChat', function () {
var MatrixChat; var sandbox;
before(function() {
test_utils.stubClient(); beforeEach(function() {
MatrixChat = sdk.getComponent('structures.MatrixChat'); sandbox = test_utils.stubClient();
});
afterEach(function() {
sandbox.restore();
}); });
it('gives a login panel by default', function () { it('gives a login panel by default', function () {

View File

@ -27,12 +27,19 @@ var test_utils = require('test-utils');
var mockclock = require('mock-clock'); var mockclock = require('mock-clock');
describe('MessagePanel', function () { describe('MessagePanel', function () {
var sandbox;
var clock = mockclock.clock(); var clock = mockclock.clock();
var realSetTimeout = window.setTimeout; var realSetTimeout = window.setTimeout;
var events = mkEvents(); var events = mkEvents();
beforeEach(function() {
test_utils.beforeEach(this);
sandbox = test_utils.stubClient(sandbox);
});
afterEach(function () { afterEach(function () {
clock.uninstall(); clock.uninstall();
sandbox.restore();
}); });
function mkEvents() { function mkEvents() {

View File

@ -21,12 +21,23 @@ module.exports.beforeEach = function(context) {
/** /**
* Stub out the MatrixClient, and configure the MatrixClientPeg object to * Stub out the MatrixClient, and configure the MatrixClientPeg object to
* return it when get() is called. * return it when get() is called.
*
* @returns {sinon.Sandbox}; remember to call sandbox.restore afterwards.
*/ */
module.exports.stubClient = function() { module.exports.stubClient = function() {
var pegstub = sinon.stub(peg); var sandbox = sinon.sandbox.create();
// 'sandbox.restore()' doesn't work correctly on inherited methods,
// so we do this for each method
var methods = ['get', 'unset', 'replaceUsingUrls',
'replaceUsingAccessToken'];
for (var i = 0; i < methods.length; i++) {
sandbox.stub(peg, methods[i]);
}
var matrixClientStub = sinon.createStubInstance(jssdk.MatrixClient); var matrixClientStub = sinon.createStubInstance(jssdk.MatrixClient);
pegstub.get.returns(matrixClientStub); peg.get.returns(matrixClientStub);
return sandbox;
} }