UNPKG

@gooddata/react-components

Version:

GoodData.UI - A powerful JavaScript library for building analytical applications

113 lines (102 loc) 3.95 kB
// (C) 2019 GoodData Corporation import { VisualizationInput } from "@gooddata/typings"; import { convertBucketsToAFM } from "../conversion"; const PositiveTextFilter: VisualizationInput.IFilter = { positiveAttributeFilter: { displayForm: { identifier: "foo" }, in: ["val1", "val2"], textFilter: true, }, }; const NegativeTextFilter: VisualizationInput.IFilter = { negativeAttributeFilter: { displayForm: { identifier: "foo" }, notIn: ["val1", "val2"], textFilter: true, }, }; const SelectAllFilter: VisualizationInput.IFilter = { negativeAttributeFilter: { displayForm: { identifier: "foo" }, notIn: [], textFilter: true, }, }; /** * Tests here solidify the contract of text filters: * * - text filter indicator is optional property added on top of existing visualization object structures accepted * by convertBucketsToAFM * - if present, the textFilter property MUST be returned in the resulting AFM structures * - the textFilter property MAY occur in positive or negative attribute filters included in global filters or * in simple measure definition */ describe("convertBucketsToAFM", () => { it("should retain textFilter indicator for positive filter in global filters", () => { expect(convertBucketsToAFM([], [PositiveTextFilter])).toEqual({ filters: [PositiveTextFilter] }); }); it("should retain textFilter indicator for negative filter in global filters", () => { expect(convertBucketsToAFM([], [NegativeTextFilter])).toEqual({ filters: [NegativeTextFilter] }); }); it("should retain textFilter indicator for positive filter in simple measure filters", () => { const simpleMeasure: VisualizationInput.IMeasure = { measure: { localIdentifier: "m1", definition: { measureDefinition: { item: { identifier: "m1Id" }, aggregation: "sum", filters: [PositiveTextFilter], }, }, }, }; expect(convertBucketsToAFM([{ localIdentifier: "bucket", items: [simpleMeasure] }])).toEqual({ measures: [ { localIdentifier: "m1", definition: { measure: { item: { identifier: "m1Id" }, aggregation: "sum", filters: [PositiveTextFilter], }, }, }, ], }); }); it("should retain textFilter indicator for negative filter in simple measure filters", () => { const simpleMeasure: VisualizationInput.IMeasure = { measure: { localIdentifier: "m1", definition: { measureDefinition: { item: { identifier: "m1Id" }, aggregation: "sum", filters: [NegativeTextFilter], }, }, }, }; expect(convertBucketsToAFM([{ localIdentifier: "bucket", items: [simpleMeasure] }])).toEqual({ measures: [ { localIdentifier: "m1", definition: { measure: { item: { identifier: "m1Id" }, aggregation: "sum", filters: [NegativeTextFilter], }, }, }, ], }); }); it("should ignore (remove) negative filter with empty selection (Select All)", () => { expect(convertBucketsToAFM([], [SelectAllFilter, PositiveTextFilter])).toEqual({ filters: [PositiveTextFilter], }); }); });