diff --git a/tests/manager.py b/tests/manager.py index a9bd2de1..8b6839ea 100644 --- a/tests/manager.py +++ b/tests/manager.py @@ -249,6 +249,23 @@ def test_filter(self): self.assertEqual(params, {"where": 'AmountPaid=="0.0"'}) + def test_filter_ids(self): + """The filter function should correctly handle various arguments""" + credentials = Mock(base_url="") + manager = Manager("contacts", credentials) + + uri, params, method, body, headers, singleobject = manager._filter( + IDs=["1", "2", "3", "4", "5"] + ) + + self.assertEqual(method, "get") + self.assertFalse(singleobject) + + expected_params = { + "IDs": "1,2,3,4,5" + } + self.assertEqual(params, expected_params) + def test_rawfilter(self): """The filter function should correctly handle various arguments""" credentials = Mock(base_url="") diff --git a/xero/basemanager.py b/xero/basemanager.py index fbe4843e..91118baa 100644 --- a/xero/basemanager.py +++ b/xero/basemanager.py @@ -374,6 +374,11 @@ def _filter(self, **kwargs): headers = self.prepare_filtering_date(val) del kwargs["since"] + # Accept IDs parameter for Invoices and Contacts endpoints + if "IDs" in kwargs: + params["IDs"] = ",".join(kwargs["IDs"]) + del kwargs["IDs"] + def get_filter_params(key, value): last_key = key.split("_")[-1] if last_key.endswith("ID"):