@atlaskit/profilecard
Version:
A React component to display a card with user information.
76 lines • 2.54 kB
JavaScript
import TeamCentralCardClient from '../client/TeamCentralCardClient';
import UserProfileCardClient from '../client/UserProfileCardClient';
import profiles from './profile-data';
import { reportingLinesData } from './reporting-lines-data';
import { getTimeString, getWeekday, random } from './util';
export default function getMockProfileClient(BaseProfileClient, modifyResponse) {
class MockUserClient extends UserProfileCardClient {
makeRequest(cloudId, userId) {
const timeout = random(1500) + 500;
const matchError = userId.match(/^error:([0-9a-zA-Z\-]+)$/);
const error = matchError && matchError[1];
return new Promise((resolve, reject) => {
setTimeout(() => {
if (error) {
return reject({
reason: error
});
}
const userIdAsIndex = parseInt(userId, 10);
const profile = profiles[userIdAsIndex] || profiles[0];
if (!profile) {
return reject({
reason: 'default'
});
}
const weekday = getWeekday();
const data = {
...profile
};
data.remoteTimeString = getTimeString();
data.remoteWeekdayIndex = weekday.index;
data.remoteWeekdayString = weekday.string;
return resolve(modifyResponse(data));
}, timeout);
});
}
}
class MockTeamCentralClient extends TeamCentralCardClient {
preloadOrgId() {
return Promise.resolve('mock-org-id');
}
preloadWorkspaceExistsWithType() {
return Promise.resolve('mock-workspace-exists-with-type');
}
createOrgContainsAnyWorkspacePromise(config) {
return Promise.resolve(true);
}
makeRequest(userId) {
const timeout = random(1500) + 500;
const matchError = userId.match(/^error:([0-9a-zA-Z\-]+)$/);
const error = matchError && matchError[1];
return new Promise((resolve, reject) => {
setTimeout(() => {
if (error) {
return reject({
reason: error
});
}
return resolve(reportingLinesData);
}, timeout);
});
}
}
return class MockProfileClient extends BaseProfileClient {
constructor(options, clients = {}) {
super(options, {
userClient: new MockUserClient(options),
teamCentralClient: new MockTeamCentralClient({
...options,
gatewayGraphqlUrl: 'defaultGatewayGraphqlUrl'
}),
...clients
});
}
};
}