@gooddata/gooddata-js
Version:
GoodData JavaScript SDK
114 lines (99 loc) • 3 kB
text/typescript
// (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 {};
}
}