From c39676553fe9156c387b7f67f709f082acfe6401 Mon Sep 17 00:00:00 2001 From: Dan Homola Date: Tue, 8 Apr 2025 17:09:12 +0200 Subject: [PATCH] fix: fix ranking filter conversion There was an incorrect key used for the dimensionality prop. JIRA: CQ-1267 risk: low --- .../compute/compute_to_sdk_converter.py | 4 +-- .../compute/test_compute_to_sdk_converter.py | 27 +++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/gooddata-sdk/gooddata_sdk/compute/compute_to_sdk_converter.py b/gooddata-sdk/gooddata_sdk/compute/compute_to_sdk_converter.py index fb91c03bf..d08fc17ea 100644 --- a/gooddata-sdk/gooddata_sdk/compute/compute_to_sdk_converter.py +++ b/gooddata-sdk/gooddata_sdk/compute/compute_to_sdk_converter.py @@ -109,8 +109,8 @@ def convert_filter(filter_dict: dict[str, Any]) -> Filter: # mypy is unable to automatically convert Union[str, ObjId] to Union[str, ObjId, Attribute, Metric] # so use explicit cast here dimensionality = ( - [cast(Union[str, ObjId, Attribute, Metric], ref_extract(a)) for a in f["attributes"]] - if "attributes" in f + [cast(Union[str, ObjId, Attribute, Metric], ref_extract(a)) for a in f["dimensionality"]] + if "dimensionality" in f else None ) diff --git a/gooddata-sdk/tests/compute/test_compute_to_sdk_converter.py b/gooddata-sdk/tests/compute/test_compute_to_sdk_converter.py index 107b20a4e..e342b0e7e 100644 --- a/gooddata-sdk/tests/compute/test_compute_to_sdk_converter.py +++ b/gooddata-sdk/tests/compute/test_compute_to_sdk_converter.py @@ -202,6 +202,33 @@ def test_ranking_filter_conversion(): assert result.value == 5 +def test_ranking_filter_with_dimensionality_conversion(): + filter_dict = json.loads( + """ + { + "rankingFilter": { + "measures": [{ + "localIdentifier": "measure1.localId" + }], + "dimensionality": [{ + "localIdentifier": "attribute1.localId" + }], + "operator": "TOP", + "value": 5 + } + } + """ + ) + + result = ComputeToSdkConverter.convert_filter(filter_dict) + + assert isinstance(result, RankingFilter) + assert result.metrics[0] == "measure1.localId" + assert result.dimensionality[0] == "attribute1.localId" + assert result.operator == "TOP" + assert result.value == 5 + + def test_simple_metric_conversion(): metric_dict = json.loads( """