diff --git a/barte/client.py b/barte/client.py index dbc7700..0ef53aa 100644 --- a/barte/client.py +++ b/barte/client.py @@ -135,9 +135,9 @@ def cancel_charge(self, charge_id: str) -> None: """Cancel a specific charge""" self._request("DELETE", f"/v2/charges/{charge_id}") - def create_buyer(self, buyer_data: Dict[str, Any]) -> Buyer: + def create_buyer(self, buyer_data: Dict[str, Any], version: str = "v2") -> Buyer: """Create a buyer""" - json_response = self._request("POST", "/v2/buyers", json=buyer_data) + json_response = self._request("POST", f"/{version}/buyers", json=buyer_data) return from_dict(data_class=Buyer, data=json_response, config=DACITE_CONFIG) def get_buyer(self, filters: Dict[str, Any]) -> BuyerList: diff --git a/tests/test_client.py b/tests/test_client.py index 5695a5a..1ec863a 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -683,3 +683,24 @@ def test_get_refund_detail(self, mock_request, barte_client): params=None, json=None, ) + + @patch("barte.client.requests.Session.request") + def test_create_buyer_with_api_version( + self, mock_request, barte_client, mock_buyer + ): + """Test create a buyer with api version""" + + mock_response_obj = Mock() + mock_response_obj.json.return_value = mock_buyer + mock_response_obj.raise_for_status = Mock() + mock_request.return_value = mock_response_obj + + barte_client.create_buyer({}) + barte_client.create_buyer({}, version="v1") + + urls = [args[0][1] for args in mock_request.call_args_list] + + assert urls == [ + f"{barte_client.base_url}/v2/buyers", + f"{barte_client.base_url}/v1/buyers", + ]