diff --git a/atlassian/assets.py b/atlassian/assets.py index 506fb8160..33ea1dcc3 100644 --- a/atlassian/assets.py +++ b/atlassian/assets.py @@ -538,9 +538,16 @@ def get_object_type_attributes( order_by_required (bool, optional): Order by required fields, defaults to None (Use API default) """ - kwargs = list(locals().items()) - params = dict() - params.update({k: v for k, v in kwargs if v is not None and k not in ["self", "type_id"]}) + params = { + "onlyValueEditable": only_value_editable, + "orderByName": order_by_name, + "query": query, + "includeValuesExist": include_values_exist, + "excludeParentAttributes": exclude_parent_attributes, + "includeChildren": include_children, + "orderByRequired": order_by_required, + } + params = {k: v for k, v in params.items() if v is not None} return self.get( f"{self.api_root}/objecttype/{type_id}/attributes", diff --git a/tests/test_assets_object_type_attributes.py b/tests/test_assets_object_type_attributes.py new file mode 100644 index 000000000..959eea146 --- /dev/null +++ b/tests/test_assets_object_type_attributes.py @@ -0,0 +1,52 @@ +from unittest import TestCase +from unittest.mock import patch + +from atlassian import AssetsCloud + + +class TestAssetsObjectTypeAttributes(TestCase): + def test_query_params_use_the_documented_api_names(self): + assets = AssetsCloud("https://example.atlassian.net") + + with patch.object(assets, "get", return_value={}) as get: + assets.get_object_type_attributes( + "1", + only_value_editable=True, + order_by_name=True, + query="name", + include_values_exist=True, + exclude_parent_attributes=True, + include_children=True, + order_by_required=True, + ) + + params = get.call_args.kwargs["params"] + self.assertEqual( + params, + { + "onlyValueEditable": True, + "orderByName": True, + "query": "name", + "includeValuesExist": True, + "excludeParentAttributes": True, + "includeChildren": True, + "orderByRequired": True, + }, + ) + + def test_unset_params_are_still_omitted(self): + assets = AssetsCloud("https://example.atlassian.net") + + with patch.object(assets, "get", return_value={}) as get: + assets.get_object_type_attributes("1", include_children=True) + + self.assertEqual(get.call_args.kwargs["params"], {"includeChildren": True}) + + def test_type_id_is_not_sent_as_a_query_param(self): + assets = AssetsCloud("https://example.atlassian.net") + + with patch.object(assets, "get", return_value={}) as get: + assets.get_object_type_attributes("1") + + self.assertEqual(get.call_args.kwargs["params"], {}) + self.assertIn("objecttype/1/attributes", get.call_args.args[0])