From cc6089828cb4ec6fbd27da273fd7487a683219c1 Mon Sep 17 00:00:00 2001 From: John Busby Date: Fri, 28 Mar 2025 12:10:29 -0700 Subject: [PATCH] remove bad params for expense cat endpoints --- extend/resources/expense_data.py | 19 +++-------- tests/test_client.py | 4 +-- tests/test_integration.py | 56 ++++++++++++++++++++++---------- 3 files changed, 44 insertions(+), 35 deletions(-) diff --git a/extend/resources/expense_data.py b/extend/resources/expense_data.py index dc65dc6..192a05e 100644 --- a/extend/resources/expense_data.py +++ b/extend/resources/expense_data.py @@ -113,8 +113,6 @@ async def create_expense_category( required: bool, active: Optional[bool] = None, free_text_allowed: Optional[bool] = None, - integrator_enabled: Optional[bool] = None, - integrator_field_number: Optional[int] = None, ) -> Dict: """Create an expense category. @@ -124,8 +122,6 @@ async def create_expense_category( required (bool): Whether this field is required for all users active (Optional[bool]): Whether this category is active and available for input free_text_allowed (Optional[bool]): Whether free text input is allowed - integrator_enabled (Optional[bool]): Whether this category is integrator enabled - integrator_field_number (Optional[int]): Field number used by the integrator Returns: Dict: A dictionary containing the newly created expense category @@ -140,12 +136,11 @@ async def create_expense_category( "required": required, "active": active, "freeTextAllowed": free_text_allowed, - "integratorEnabled": integrator_enabled, - "integratorFieldNumber": integrator_field_number, } return await self._request( method="post", + path='/categories', params=payload ) @@ -178,7 +173,7 @@ async def create_expense_category_label( return await self._request( method="post", - path=f"/{category_id}", + path=f"/categories/{category_id}/labels", params=payload ) @@ -189,8 +184,6 @@ async def update_expense_category( active: Optional[bool] = None, required: Optional[bool] = None, free_text_allowed: Optional[bool] = None, - integrator_enabled: Optional[bool] = None, - integrator_field_number: Optional[int] = None, ) -> Dict: """Update the an expense category. @@ -200,8 +193,6 @@ async def update_expense_category( active (Optional[bool]): Whether the category is active required (Optional[bool]): Whether this field is required for all users free_text_allowed (Optional[bool]): Whether free text input is allowed - integrator_enabled (Optional[bool]): Whether this category is integrator enabled - integrator_field_number (Optional[int]): Field number used by the integrator Returns: Dict: A dictionary containing the updated expense category details @@ -215,13 +206,11 @@ async def update_expense_category( "active": active, "required": required, "freeTextAllowed": free_text_allowed, - "integratorEnabled": integrator_enabled, - "integratorFieldNumber": integrator_field_number, } return await self._request( method="patch", - path=f"/{category_id}", + path=f"/categories/{category_id}", params=payload ) @@ -254,6 +243,6 @@ async def update_expense_category_label( return await self._request( method="patch", - path=f"/{category_id}/labels/{label_id}", + path=f"/categories/{category_id}/labels/{label_id}", params=payload ) diff --git a/tests/test_client.py b/tests/test_client.py index 440c078..a41175a 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -533,9 +533,7 @@ async def test_create_expense_category(extend, mocker): code="NEWCODE", required=True, active=True, - free_text_allowed=True, - integrator_enabled=True, - integrator_field_number=42 + free_text_allowed=False, ) assert response["id"] == "cat_new" diff --git a/tests/test_integration.py b/tests/test_integration.py index 9db1268..a8899c0 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -1,4 +1,5 @@ import os +import uuid from datetime import datetime, timedelta import pytest @@ -209,51 +210,72 @@ class TestExpenseData: @pytest.mark.asyncio async def test_create_update_category_and_label(self, extend): # Create a new expense category + u = uuid.uuid4() + name = f"Integration Test Category {u}" + code = f"INTEG-CAT-{u}" category_resp = await extend.expense_data.create_expense_category( - name="Integration Test Category", - code="INTEG-CAT", + name=name, + code=code, required=True, active=True, - free_text_allowed=True, - integrator_enabled=True, - integrator_field_number=999 + free_text_allowed=False, ) category_id = category_resp["id"] - assert category_resp["name"] == "Integration Test Category" - assert category_resp["code"] == "INTEG-CAT" + assert category_resp["name"] == name + assert category_resp["code"] == code + + # re-fetch newly created expense category + category = await extend.expense_data.get_expense_category(category_id) + assert category_resp["name"] == name + assert category_resp["code"] == code # Update the category + updated_name = f"Updated Integration Category {u}" updated_category = await extend.expense_data.update_expense_category( category_id=category_id, - name="Updated Integration Category", + name=updated_name, active=False ) - assert updated_category["name"] == "Updated Integration Category" + assert updated_category["name"] == updated_name assert updated_category["active"] is False # Create a label under the category - label_resp = await extend.expense_data.create_expense_category_label( + u1 = uuid.uuid4() + label_name_one = f"Integration Label {u1}" + label_code_one = f"INTEG-LABEL-{u1}" + u2 = uuid.uuid4() + label_name_two = f"Integration Label {u2}" + label_code_two = f"INTEG-LABEL-{u2}" + + label_resp_one = await extend.expense_data.create_expense_category_label( + category_id=category_id, + name=label_name_one, + code=label_code_one, + active=True + ) + + label_resp_two = await extend.expense_data.create_expense_category_label( category_id=category_id, - name="Integration Label", - code="INTEG-LABEL", + name=label_name_two, + code=label_code_two, active=True ) - label_id = label_resp["id"] - assert label_resp["name"] == "Integration Label" - assert label_resp["code"] == "INTEG-LABEL" + label_id = label_resp_one["id"] + assert label_resp_one["name"] == label_name_one + assert label_resp_one["code"] == label_code_one # Update the label updated_label = await extend.expense_data.update_expense_category_label( category_id=category_id, label_id=label_id, - name="Updated Label Name", + name=f"Updated Label Name {u1}", active=False ) - assert updated_label["name"] == "Updated Label Name" + assert updated_label["name"] == f"Updated Label Name {u1}" assert updated_label["active"] is False @pytest.mark.asyncio