UNPKG

@atlaskit/profilecard

Version:

A React component to display a card with user information.

76 lines 2.54 kB
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 }); } }; }