UNPKG

@gooddata/gooddata-js

Version:
114 lines (99 loc) 3 kB
// (C) 2007-2020 GoodData Corporation import { AFM, Execution } from "@gooddata/typings"; import { IDataSource } from "../interfaces/DataSource"; function getExecutionResponse(numOfDimensions: number = 2): Execution.IExecutionResponse { const dimension = { headers: [] }; return { dimensions: Array(numOfDimensions).fill(dimension), links: { executionResult: `/gdc/app/projects/myFakeProjectId/executionResults/123?limit=overridden&dimensions=${numOfDimensions}`, // tslint:disable-line:max-line-length }, }; } function getExecutionResult(): Execution.IExecutionResult { return { data: [ [11, 12], [51, 52], ], paging: { count: [2, 2], offset: [0, 0], total: [2, 2], }, headerItems: [ [ [ { attributeHeaderItem: { name: "A1", uri: "/gdc/md/obj/attr1", }, }, { attributeHeaderItem: { name: "A2", uri: "/gdc/md/obj/attr2", }, }, ], ], [ [ { measureHeaderItem: { name: "M1", order: 0, }, }, { measureHeaderItem: { name: "M2", order: 0, }, }, ], ], ], }; } export class DummyDataSource<T> implements IDataSource<T> { private data: T; private resolve: boolean; private resultSpec: AFM.IResultSpec; constructor(data: T, resolve: boolean = true) { this.data = data; this.resolve = resolve; this.resultSpec = {}; } public getData(resultSpec: AFM.IResultSpec): Promise<T> { this.resultSpec = resultSpec; if (this.resolve) { return Promise.resolve(this.data); } return Promise.reject("DummyDataSource reject"); } public getPage( resultSpec: AFM.IResultSpec, _limit: number[], _offset: number[], ): Promise<Execution.IExecutionResponses> { this.resultSpec = resultSpec; if (this.resolve) { return Promise.resolve({ executionResponse: getExecutionResponse(2), executionResult: getExecutionResult(), }); } return Promise.reject("DummyDataSource reject"); } public getFingerprint() { return ""; } public getResultSpec() { return this.resultSpec; } public getAfm() { return {}; } }