@gooddata/react-components
Version:
GoodData.UI - A powerful JavaScript library for building analytical applications
261 lines (252 loc) • 11 kB
text/typescript
// (C) 2007-2019 GoodData Corporation
import { AFM } from "@gooddata/typings";
import * as fixtures from "../../../../../stories/test_data/fixtures";
import { createIntlMock } from "../../../visualizations/utils/intlUtils";
import { getRowHeaders, getFields } from "../agGridHeaders";
import { getRow, getRowTotals } from "../agGridData";
const intl = createIntlMock();
describe("getRowTotals", () => {
it("should return total rows", () => {
const fixture = fixtures.pivotTableWithColumnRowAttributesAndTotals;
const rowFields: string[] = getRowHeaders(
fixture.executionResponse.dimensions[0].headers,
{},
false,
).map(header => header.field);
const columnFields: string[] = getFields(fixture.executionResult.headerItems[1]);
expect(
getRowTotals(
fixture.executionResult.totals,
[...rowFields, ...columnFields],
fixture.executionResponse.dimensions[0].headers,
fixture.executionRequest.resultSpec,
fixture.executionRequest.afm.measures.map((measure: AFM.IMeasure) => measure.localIdentifier),
intl,
),
).toEqual([
{
"a_2009_1-a_2071_1-m_0": "1566006.57195",
"a_2009_1-a_2071_1-m_1": "150708.58845",
"a_2009_1-a_2071_2-m_0": "1555682.95305",
"a_2009_1-a_2071_2-m_1": "146457.68655",
"a_2009_1-a_2071_3-m_0": "1548771.3336",
"a_2009_1-a_2071_3-m_1": "143611.7256",
"a_2009_2-a_2071_4-m_0": "1563377.8356",
"a_2009_2-a_2071_4-m_1": "149626.1676",
"a_2009_2-a_2071_5-m_0": "1544490.2151",
"a_2009_2-a_2071_5-m_1": "141848.9121",
"a_2009_2-a_2071_6-m_0": "1562776.8822",
"a_2009_2-a_2071_6-m_1": "149378.7162",
"a_2009_3-a_2071_7-m_0": "1559076.77865",
"a_2009_3-a_2071_7-m_1": "147855.14415",
"a_2009_3-a_2071_8-m_0": "1526945.56485",
"a_2009_3-a_2071_8-m_1": "134624.64435",
"a_2009_3-a_2071_9-m_0": "1559730.40485",
"a_2009_3-a_2071_9-m_1": "148124.28435",
"a_2009_4-a_2071_10-m_0": "1554810.0141",
"a_2009_4-a_2071_10-m_1": "146098.2411",
"a_2009_4-a_2071_11-m_0": "1556026.614",
"a_2009_4-a_2071_11-m_1": "146599.194",
"a_2009_4-a_2071_12-m_0": "1476657.6039",
"a_2009_4-a_2071_12-m_1": "113917.8369",
a_2211: "Sum",
colSpan: {
count: 3,
headerKey: "a_2211",
},
rowTotalActiveMeasures: ["m_0", "m_1"],
type: "rowTotal",
},
{
"a_2009_1-a_2071_1-m_0": "52200.219065",
"a_2009_1-a_2071_1-m_1": null,
"a_2009_1-a_2071_2-m_0": "51856.098435",
"a_2009_1-a_2071_2-m_1": null,
"a_2009_1-a_2071_3-m_0": "51625.71112",
"a_2009_1-a_2071_3-m_1": null,
"a_2009_2-a_2071_4-m_0": "52112.59452",
"a_2009_2-a_2071_4-m_1": null,
"a_2009_2-a_2071_5-m_0": "51483.00717",
"a_2009_2-a_2071_5-m_1": null,
"a_2009_2-a_2071_6-m_0": "52092.56274",
"a_2009_2-a_2071_6-m_1": null,
"a_2009_3-a_2071_7-m_0": "51969.225955",
"a_2009_3-a_2071_7-m_1": null,
"a_2009_3-a_2071_8-m_0": "50898.185495",
"a_2009_3-a_2071_8-m_1": null,
"a_2009_3-a_2071_9-m_0": "51991.013495",
"a_2009_3-a_2071_9-m_1": null,
"a_2009_4-a_2071_10-m_0": "51827.00047",
"a_2009_4-a_2071_10-m_1": null,
"a_2009_4-a_2071_11-m_0": "51867.5538",
"a_2009_4-a_2071_11-m_1": null,
"a_2009_4-a_2071_12-m_0": "49221.92013",
"a_2009_4-a_2071_12-m_1": null,
a_2211: "Avg",
colSpan: {
count: 3,
headerKey: "a_2211",
},
rowTotalActiveMeasures: ["m_0"],
type: "rowTotal",
},
]);
});
it("should return null when no totals are defined", () => {
const fixture = fixtures.pivotTableWithColumnAndRowAttributes;
const rowFields: string[] = getRowHeaders(
fixture.executionResponse.dimensions[0].headers,
{},
false,
).map(header => header.field);
const columnFields: string[] = getFields(fixture.executionResult.headerItems[1]);
expect(
getRowTotals(
fixture.executionResult.totals,
[...rowFields, ...columnFields],
fixture.executionResponse.dimensions[0].headers,
fixture.executionRequest.resultSpec,
fixture.executionRequest.afm.measures.map((measure: AFM.IMeasure) => measure.localIdentifier),
intl,
),
).toBe(null);
});
});
describe("getRow", () => {
it("should return a grid row", () => {
const headerItems = fixtures.pivotTableWithColumnAndRowAttributes.executionResult.headerItems;
const rowHeaders = getRowHeaders(
fixtures.pivotTableWithColumnAndRowAttributes.executionResponse.dimensions[0].headers,
{},
false,
);
const columnFields: string[] = getFields(headerItems[1]);
expect(
getRow(
fixtures.pivotTableWithColumnAndRowAttributes.executionResult.data[0],
0,
columnFields,
rowHeaders,
headerItems[0],
[],
intl,
),
).toEqual({
"a_2009_1-a_2071_1-m_0": "160104.5665",
"a_2009_1-a_2071_1-m_1": "49454.8215",
"a_2009_1-a_2071_1-m_2": "40000",
"a_2009_1-a_2071_1-m_3": "70649.745",
"a_2009_1-a_2071_2-m_0": "156148.86625",
"a_2009_1-a_2071_2-m_1": "47826.00375",
"a_2009_1-a_2071_2-m_2": "40000",
"a_2009_1-a_2071_2-m_3": "68322.8625",
"a_2009_1-a_2071_3-m_0": "154299.8485",
"a_2009_1-a_2071_3-m_1": "47064.6435",
"a_2009_1-a_2071_3-m_2": "40000",
"a_2009_1-a_2071_3-m_3": "67235.205",
"a_2009_2-a_2071_4-m_0": "158572.501",
"a_2009_2-a_2071_4-m_1": "48823.971",
"a_2009_2-a_2071_4-m_2": "40000",
"a_2009_2-a_2071_4-m_3": "69748.53",
"a_2009_2-a_2071_5-m_0": "152789.662",
"a_2009_2-a_2071_5-m_1": "46442.802",
"a_2009_2-a_2071_5-m_2": "40000",
"a_2009_2-a_2071_5-m_3": "66346.86",
"a_2009_2-a_2071_6-m_0": "158587.036",
"a_2009_2-a_2071_6-m_1": "48829.956",
"a_2009_2-a_2071_6-m_2": "40000",
"a_2009_2-a_2071_6-m_3": "69757.08",
"a_2009_3-a_2071_7-m_0": "156553.19425",
"a_2009_3-a_2071_7-m_1": "47992.49175",
"a_2009_3-a_2071_7-m_2": "40000",
"a_2009_3-a_2071_7-m_3": "68560.7025",
"a_2009_3-a_2071_8-m_0": "147504.62125",
"a_2009_3-a_2071_8-m_1": "44266.60875",
"a_2009_3-a_2071_8-m_2": "40000",
"a_2009_3-a_2071_8-m_3": "63238.0125",
"a_2009_3-a_2071_9-m_0": "157944.04075",
"a_2009_3-a_2071_9-m_1": "48565.19325",
"a_2009_3-a_2071_9-m_2": "40000",
"a_2009_3-a_2071_9-m_3": "69378.8475",
"a_2009_4-a_2071_10-m_0": "156878.19175",
"a_2009_4-a_2071_10-m_1": "48126.31425",
"a_2009_4-a_2071_10-m_2": "40000",
"a_2009_4-a_2071_10-m_3": "68751.8775",
"a_2009_4-a_2071_11-m_0": "156446.52775",
"a_2009_4-a_2071_11-m_1": "47948.57025",
"a_2009_4-a_2071_11-m_2": "40000",
"a_2009_4-a_2071_11-m_3": "68497.9575",
"a_2009_4-a_2071_12-m_0": "130719.01675",
"a_2009_4-a_2071_12-m_1": "37354.88925",
"a_2009_4-a_2071_12-m_2": "40000",
"a_2009_4-a_2071_12-m_3": "53364.1275",
a_2205: "Montgomery",
a_2211: "Alabama",
headerItemMap: {
a_2205: {
attributeHeaderItem: {
name: "Montgomery",
uri: "/gdc/md/xms7ga4tf3g3nzucd8380o2bev8oeknp/obj/2204/elements?id=6340107",
},
},
a_2211: {
attributeHeaderItem: {
name: "Alabama",
uri: "/gdc/md/xms7ga4tf3g3nzucd8380o2bev8oeknp/obj/2210/elements?id=6340109",
},
},
},
});
});
it("should return subtotal row", () => {
const headerItems =
fixtures.pivotTableWithTwoMetricsFourAttributesSubtotals.executionResult.headerItems;
const rowHeaders = getRowHeaders(
fixtures.pivotTableWithTwoMetricsFourAttributesSubtotals.executionResponse.dimensions[0].headers,
{},
false,
);
const columnFields: string[] = getFields(headerItems[1]);
expect(
getRow(
fixtures.pivotTableWithTwoMetricsFourAttributesSubtotals.executionResult.data[0],
3,
columnFields,
rowHeaders,
headerItems[0],
[null, null, null, "even"],
intl,
),
).toEqual({
a_1024: "East Coast",
a_1027: "Direct Sales",
a_1094: "Rollup (Total)",
a_64727: "Exclude",
headerItemMap: {
a_1024: {
attributeHeaderItem: {
name: "East Coast",
uri: "/gdc/md/ux8xk21n3al4qr1akoz7j6xkl5dt1dqj/obj/1023/elements?id=1225",
},
},
a_1027: {
attributeHeaderItem: {
name: "Direct Sales",
uri: "/gdc/md/ux8xk21n3al4qr1akoz7j6xkl5dt1dqj/obj/1026/elements?id=1226",
},
},
a_1094: { totalHeaderItem: { name: "nat", type: "nat" } },
a_64727: {
attributeHeaderItem: {
name: "Exclude",
uri: "/gdc/md/ux8xk21n3al4qr1akoz7j6xkl5dt1dqj/obj/64726/elements?id=966650",
},
},
},
subtotalStyle: "even",
type: "rowSubtotal",
m_0: "40500",
m_1: "41142",
});
});
});