// (C) 2007-2019 GoodData Corporation import { getSizeFromHeaders } from "../getDataSize"; describe("getSizeFromHeaders", () => { it("should return correct size for empty headers", () => { const simpleMetricDataResult: any[][] = [[], []]; expect(getSizeFromHeaders(simpleMetricDataResult)).toEqual([1]); }); it("should return correct size for empty", () => { const simpleMetricDataResult: any[][] = []; expect(getSizeFromHeaders(simpleMetricDataResult)).toEqual([1]); }); it("should compute basic data size for one measure execution", () => { const simpleMetricDataResult = [[["quasiHeaderItem"]], []]; expect(getSizeFromHeaders(simpleMetricDataResult)).toEqual([1]); }); it("should compute data size for 2d execution", () => { const dataResult = [ [["rowHeader1", "rowHeader2", "rowHeader3", "rowHeader4", "rowHeader5"]], [["colHeader1", "colHeader1", "colHeader1"]], ]; const expectedSizeArray = [5, 3]; expect(getSizeFromHeaders(dataResult)).toEqual(expectedSizeArray); }); it("should assume all header groups in dimension are the same length", () => { /* * Contractually, AFM execution result has same number of headers in all header groups per dimension. * It cannot happen that for say row dimension sliced by two attributes contains, the resulting sheet * would have different number of header items in the two header groups that represent the respective * attribute elements. * * Cartesian is done on the attribute elements. */ const dataResult = [ [ ["rowHeader1", "rowHeader2", "rowHeader3", "rowHeader4", "rowHeader5"], ["rowHeader1", "rowHeader2", "rowHeader3"], ], [["colHeader1", "colHeader1", "colHeader1"]], ]; const expectedSizeArray = [5, 3]; expect(getSizeFromHeaders(dataResult)).toEqual(expectedSizeArray); }); });