From 615efe3e60bf3a638319ddb90dc02ae9cbef1f29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atakan=20Arg=C4=B1n?= Date: Fri, 8 May 2026 12:42:07 +0300 Subject: [PATCH 1/3] feat(sdk): add system endpoints and dynamic test references --- tapsilat_py/client.py | 32 ++++++++++++++ tests/integration/integration_test.py | 6 ++- tests/unit/test_system_endpoints.py | 64 +++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 tests/unit/test_system_endpoints.py diff --git a/tapsilat_py/client.py b/tapsilat_py/client.py index ee4561c..7d02c83 100644 --- a/tapsilat_py/client.py +++ b/tapsilat_py/client.py @@ -141,6 +141,38 @@ def get_system_order_statuses(self) -> dict: endpoint = "/system/order-statuses" return self._make_request("GET", endpoint) + def get_system_basket_item_types(self) -> dict: + endpoint = "/system/basket-item-types" + return self._make_request("GET", endpoint) + + def get_system_error_codes(self) -> dict: + endpoint = "/system/error-codes" + return self._make_request("GET", endpoint) + + def get_system_payment_term_statuses(self) -> dict: + endpoint = "/system/payment-term-statuses" + return self._make_request("GET", endpoint) + + def get_system_product_types(self) -> dict: + endpoint = "/system/product-types" + return self._make_request("GET", endpoint) + + def get_system_shortcut_types(self) -> dict: + endpoint = "/system/shortcut-types" + return self._make_request("GET", endpoint) + + def get_system_transaction_payment_types(self) -> dict: + endpoint = "/system/transaction-payment-types" + return self._make_request("GET", endpoint) + + def get_system_transaction_purposes(self) -> dict: + endpoint = "/system/transaction-purposes" + return self._make_request("GET", endpoint) + + def get_system_transaction_statuses(self) -> dict: + endpoint = "/system/transaction-statuses" + return self._make_request("GET", endpoint) + def get_order(self, reference_id: str) -> OrderResponse: endpoint = f"/order/{reference_id}" response = self._make_request("GET", endpoint) diff --git a/tests/integration/integration_test.py b/tests/integration/integration_test.py index 0b8f2e1..97abf64 100644 --- a/tests/integration/integration_test.py +++ b/tests/integration/integration_test.py @@ -262,7 +262,11 @@ def test_scenario_11_order_management_operations(api_client): except APIException: pass - dummy_ref = "dummy_ref_123" + buyer = BuyerDTO(name="John", surname="Doe", email="test@example.com") + order = api_client.create_order( + OrderCreateDTO(amount=100.0, currency="TRY", locale="tr", buyer=buyer) + ) + dummy_ref = order.reference_id # get_order_by_conversation_id try: diff --git a/tests/unit/test_system_endpoints.py b/tests/unit/test_system_endpoints.py new file mode 100644 index 0000000..36a51b0 --- /dev/null +++ b/tests/unit/test_system_endpoints.py @@ -0,0 +1,64 @@ +import unittest +from unittest.mock import MagicMock, patch +from tapsilat_py.client import TapsilatAPI + +class TestSystemEndpoints(unittest.TestCase): + def setUp(self): + self.api = TapsilatAPI(api_key="test_key") + self.api._make_request = MagicMock() + + def test_get_system_basket_item_types(self): + expected_response = {"data": []} + self.api._make_request.return_value = expected_response + response = self.api.get_system_basket_item_types() + self.api._make_request.assert_called_once_with("GET", "/system/basket-item-types") + self.assertEqual(response, expected_response) + + def test_get_system_error_codes(self): + expected_response = {"data": []} + self.api._make_request.return_value = expected_response + response = self.api.get_system_error_codes() + self.api._make_request.assert_called_once_with("GET", "/system/error-codes") + self.assertEqual(response, expected_response) + + def test_get_system_payment_term_statuses(self): + expected_response = {"data": []} + self.api._make_request.return_value = expected_response + response = self.api.get_system_payment_term_statuses() + self.api._make_request.assert_called_once_with("GET", "/system/payment-term-statuses") + self.assertEqual(response, expected_response) + + def test_get_system_product_types(self): + expected_response = {"data": []} + self.api._make_request.return_value = expected_response + response = self.api.get_system_product_types() + self.api._make_request.assert_called_once_with("GET", "/system/product-types") + self.assertEqual(response, expected_response) + + def test_get_system_shortcut_types(self): + expected_response = {"data": []} + self.api._make_request.return_value = expected_response + response = self.api.get_system_shortcut_types() + self.api._make_request.assert_called_once_with("GET", "/system/shortcut-types") + self.assertEqual(response, expected_response) + + def test_get_system_transaction_payment_types(self): + expected_response = {"data": []} + self.api._make_request.return_value = expected_response + response = self.api.get_system_transaction_payment_types() + self.api._make_request.assert_called_once_with("GET", "/system/transaction-payment-types") + self.assertEqual(response, expected_response) + + def test_get_system_transaction_purposes(self): + expected_response = {"data": []} + self.api._make_request.return_value = expected_response + response = self.api.get_system_transaction_purposes() + self.api._make_request.assert_called_once_with("GET", "/system/transaction-purposes") + self.assertEqual(response, expected_response) + + def test_get_system_transaction_statuses(self): + expected_response = {"data": []} + self.api._make_request.return_value = expected_response + response = self.api.get_system_transaction_statuses() + self.api._make_request.assert_called_once_with("GET", "/system/transaction-statuses") + self.assertEqual(response, expected_response) From 393f87f9b0648b134b2e638cbceec7de95d7b2c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atakan=20Arg=C4=B1n?= Date: Fri, 8 May 2026 12:44:27 +0300 Subject: [PATCH 2/3] docs: update for system definitions and status methods --- README.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 938d5c5..3e2700c 100644 --- a/README.md +++ b/README.md @@ -304,9 +304,17 @@ is_valid = client.verify_webhook( ) ``` -### Get System Order Status -```python -status = client.get_system_order_status() +### Get System Definitions and Statuses +```python +order_statuses = client.get_system_order_statuses() +basket_item_types = client.get_system_basket_item_types() +error_codes = client.get_system_error_codes() +payment_term_statuses = client.get_system_payment_term_statuses() +product_types = client.get_system_product_types() +shortcut_types = client.get_system_shortcut_types() +transaction_payment_types = client.get_system_transaction_payment_types() +transaction_purposes = client.get_system_transaction_purposes() +transaction_statuses = client.get_system_transaction_statuses() ``` ## Subscription Management From 7e46153bd9b38a8bb180c1d94ece2544d0e6e4db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atakan=20Arg=C4=B1n?= Date: Fri, 8 May 2026 12:49:54 +0300 Subject: [PATCH 3/3] chore: bump version to 2026.5.8.1 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 2e74f56..b4e3e97 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ setup( name="tapsilat-py", - version="2026.3.31.1", + version="2026.5.8.1", description="Client SDK for Tapsilat API", long_description=long_description, long_description_content_type="text/markdown",