Changed Client to no longer be a singleton and added TestHelper

This commit is contained in:
Harrison Healey 2016-10-11 11:47:34 -04:00
parent d8285fb0b4
commit 748f08a847
6 changed files with 90 additions and 63 deletions

View file

@ -1,7 +1,7 @@
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import Client from './client.js';
import Client from 'client/client_instance.js';
import {bindClientFunc} from './helpers.js';
export const PING_REQUEST = 'PING_REQUEST';

View file

@ -7,7 +7,7 @@ const HEADER_AUTH = 'Authorization';
const HEADER_BEARER = 'BEARER';
const HEADER_REQUESTED_WITH = 'X-Requested-With';
export class Client {
export default class Client {
constructor() {
this.teamId = '';
this.serverVersion = ''; // ??
@ -222,6 +222,8 @@ export class Client {
return onSuccess(data, response);
}).catch((err) => {
// TODO errors that return non-json data get sent here
if (this.logToConsole) {
console.log(err); // eslint-disable-line no-console
}
@ -231,6 +233,4 @@ export class Client {
);
};
}
}
export default new Client();
}

View file

@ -0,0 +1,6 @@
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import Client from './client.js';
export default new Client();

View file

@ -3,7 +3,7 @@
import React, {Component} from 'react';
import Client from 'actions/client.js';
import Client from 'client/client_instance.js';
import {connect} from 'react-redux';
import {getPing} from 'actions/general.js';

View file

@ -3,57 +3,58 @@
import assert from 'assert';
import Client from 'actions/client.js';
import * as TestHelper from './test_helper.js';
import TestHelper from './test_helper.js';
describe('Client.General', () => {
beforeEach(() => {
Client.setUrl('http://localhost:8065');
});
it('General.getClientConfig', (done) => {
const {onRequest, onSuccess, onFailure} = TestHelper.assertOnRequestHappensFirst(
(data) => {
assert.ok(data.Version);
assert.ok(data.BuildNumber);
assert.ok(data.BuildDate);
assert.ok(data.BuildHash);
TestHelper.initBasic(({client}) => {
const {onRequest, onSuccess, onFailure} = TestHelper.assertOnRequestHappensFirst(
(data) => {
assert.ok(data.Version);
assert.ok(data.BuildNumber);
assert.ok(data.BuildDate);
assert.ok(data.BuildHash);
done();
},
(err) => {
done(new Error(err));
}
);
done();
},
(err) => {
done(new Error(err));
}
);
Client.getClientConfig(onRequest, onSuccess, onFailure)();
client.getClientConfig(onRequest, onSuccess, onFailure)();
});
});
it('General.getPing', (done) => {
const {onRequest, onSuccess, onFailure} = TestHelper.assertOnRequestHappensFirst(
() => {
done();
},
(err) => {
done(new Error(err));
}
);
TestHelper.initBasic(({client}) => {
const {onRequest, onSuccess, onFailure} = TestHelper.assertOnRequestHappensFirst(
() => {
done();
},
(err) => {
done(new Error(err));
}
);
Client.getPing(onRequest, onSuccess, onFailure)();
client.getPing(onRequest, onSuccess, onFailure)();
});
});
it('General.getPing - Invalid URL', (done) => {
const {onRequest, onSuccess, onFailure} = TestHelper.assertOnRequestHappensFirst(
() => {
done(new Error('ping should\'ve failed'));
},
() => {
done();
}
);
TestHelper.initBasic(({client}) => {
const {onRequest, onSuccess, onFailure} = TestHelper.assertOnRequestHappensFirst(
() => {
done(new Error('ping should\'ve failed'));
},
() => {
done();
}
);
Client.setUrl('https://example.com/fake/url');
Client.getPing(onRequest, onSuccess, onFailure)();
client.setUrl('https://example.com/fake/url');
client.getPing(onRequest, onSuccess, onFailure)();
});
});
// it('General.logClientError', function(done) {

View file

@ -3,27 +3,47 @@
import assert from 'assert';
export function assertOnRequestHappensFirst(onSuccess, onFailure) {
let hasReceivedOnRequest = false;
import Client from 'client/client.js';
return {
onRequest: () => {
hasReceivedOnRequest = true;
},
onSuccess: (response, data) => {
assert(hasReceivedOnRequest);
class TestHelper {
assertOnRequestHappensFirst(onSuccess, onFailure) {
let hasReceivedOnRequest = false;
onSuccess(response, data);
},
onFailure: (err) => {
assert(hasReceivedOnRequest);
return {
onRequest: () => {
hasReceivedOnRequest = true;
},
onSuccess: (response, data) => {
assert(hasReceivedOnRequest);
onFailure(err);
}
};
onSuccess(response, data);
},
onFailure: (err) => {
assert(hasReceivedOnRequest);
onFailure(err);
}
};
}
assertStatusOkay(data) {
assert(data);
assert(data.status === 'OK');
}
createClient() {
const client = new Client();
client.setUrl('http://localhost:8065');
return client;
}
initBasic(callback) {
const client = this.createClient();
callback({client});
}
}
export function assertStatusOkay(data) {
assert(data);
assert(data.status === 'OK');
}
export default new TestHelper();