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( """