import Koa from 'koa'; import { Organization } from '../../models/Organization'; import { Location } from '../../models/Location'; import { Job } from '../../models/Job'; import { Group } from '../../models/Group'; import { Skill } from '../../models/Skill'; import { UserLocation } from '../../models/UserLocation'; import { UserGroup } from '../../models/UserGroup'; import { UserOrganization } from '../../models/UserOrganization'; import { User } from '../../models/User'; export interface IMockUser extends User { jwt: string; } export interface IMockOrganization extends Organization { owner: IMockUser[]; groupManager: IMockUser[]; } export interface IMockLocation extends Location { owner: IMockUser[]; teammate: IMockUser[]; guest: IMockUser[]; } export interface IMockSkill extends Skill { apiKey?: string; } interface ISandbox { organization: IMockOrganization; locations: IMockLocation[]; skill: IMockSkill; users: { users: User[]; userLocations: UserLocation[]; userOrganizations: UserOrganization[]; userGroups: UserGroup[]; }; } export default class SandboxMock { key: string; organization: IMockOrganization; locations: { [locationId: string]: IMockLocation; }; skill: IMockSkill; otherOrganization: IMockOrganization; otherLocations: { [locationId: string]: IMockLocation; }; otherSkill: IMockSkill; private ctx; constructor(app: Koa); setup(options: Record): Promise; createSkill(): Promise; createSandbox(options: { numLocations: number; numOwners: number; numTeammates: number; numGroupManagers: number; numManagers: number; numGuests: number; }): Promise; createOrganization(): Promise; createDefaultGroup(options: { organizationId: string; }): Promise; createDefaultJobs(organization: Organization): Promise; createLocations(options: { group: Group; numLocations: number; organizationId: string; }): Promise; createUsers(options: { locationId: string; organizationId: string; numOwners: number; numGroupManagers: number; numManagers: number; numTeammates: number; numGuests: number; }): Promise<{ users: User[]; userLocations: UserLocation[]; userOrganizations: UserOrganization[]; userGroups: UserGroup[]; }>; private parseUsers; private createUserData; private createPhone; } export {};