// (C) 2007-2019 GoodData Corporation import { ExtendedDateFilters } from "@gooddata/typings"; import { IMockProject, IOrganizedCatalog, IProjectGroup } from "../model/MockProject"; import { createAnalyticalDashboards } from "./builders/AnalyticalDashboardBuilder"; import { createElementsMap, ElementMap } from "./builders/ElementsBuilder"; import { createDateRangesMap, DateRangesMap } from "./builders/DateRangesBuilder"; import { createExecutions } from "./builders/ExecutionBuilder"; import { createFeatureFlags } from "./builders/FeatureFlagsBuilder"; import { createProjectConfigs } from "./builders/ProjectConfigsBuilder"; import { createUserConfigs } from "./builders/UserConfigsBuilder"; import { createFilterContexts } from "./builders/FilterContextBuilder"; import { createKpis } from "./builders/KpiBuilder"; import { createProject } from "./builders/ProjectBuilder"; import { createProjectPermissions } from "./builders/ProjectPermissionsBuilder"; import { createUsers } from "./builders/UserBuilder"; import { createVisualizationObjects } from "./builders/VisualizationObjectBuilder"; import { createVisualizationClasses } from "./builders/VisualizationClassBuilder"; import { createVisualizationWidgets } from "./builders/VisualizationWidgetBuilder"; import { createWidgets } from "./builders/WidgetBuilder"; import { createGroups } from "./builders/GroupBuilder"; import { createKpiAlerts } from "./builders/KpiAlertBuilder"; import { createStyleSettings, IStyleSettings } from "./builders/StyleSettingsBuilder"; import { ISchema } from "./model/Schema"; import { IMetadataObject } from "../model/MetadataObject"; import { IProjectPermissions } from "../model/ProjectPermissions"; import { IUser } from "../model/User"; import { IFeatureFlags } from "../model/FeatureFlags"; import { IConfigSettingItem } from "../model/ProjectConfigs"; import { IExecution } from "../model/Executions"; import { createAfmExecutions } from "./builders/AfmExecutionBuilder"; import { ISchemaAfmExecution } from "./model/SchemaAfmExecution"; import { IEndPoints } from "../model/endPoints/EndPoints"; import { createEndPoints } from "./builders/EndPointsBuilder"; import { createDateFilterConfig } from "./builders/DateFilterConfigBuilder"; import { createOrganizedCatalog } from "./builders/OrganizedCatalog"; type Builder = ( schema: ISchema, ) => | IFeatureFlags | IConfigSettingItem[] | IProjectGroup[] | IProjectPermissions | IUser[] | ElementMap | DateRangesMap | IExecution[] | ISchemaAfmExecution[] | IEndPoints | IMetadataObject | IMetadataObject[] | IStyleSettings | ExtendedDateFilters.IDateFilterConfig | IOrganizedCatalog; export function buildProject(schema: ISchema): IMockProject { const creators: { [namespace: string]: Builder } = { analyticalDashboards: createAnalyticalDashboards, elements: createElementsMap, dateRanges: createDateRangesMap, executions: createExecutions, afmExecutions: createAfmExecutions, endPoints: createEndPoints, featureFlags: createFeatureFlags, projectConfigs: createProjectConfigs, userConfigs: createUserConfigs, filterContexts: createFilterContexts, groups: createGroups, kpis: createKpis, project: createProject, projectPermissions: createProjectPermissions, users: createUsers, visualizationObjects: createVisualizationObjects, visualizationClasses: createVisualizationClasses, visualizationWidgets: createVisualizationWidgets, widgets: createWidgets, kpiAlerts: createKpiAlerts, styleSettings: createStyleSettings, dateFilterConfig: createDateFilterConfig, organizedCatalog: createOrganizedCatalog, }; return Object.keys(creators).reduce( (project, namespace: string) => ({ ...project, [namespace]: creators[namespace](schema) }), {}, ); }