Changed Client to no longer be a singleton and added TestHelper
This commit is contained in:
parent
d8285fb0b4
commit
748f08a847
6 changed files with 90 additions and 63 deletions
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
6
src/client/client_instance.js
Normal file
6
src/client/client_instance.js
Normal 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();
|
||||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
Loading…
Reference in a new issue