diff --git a/plane/models/work_items.py b/plane/models/work_items.py index 9e93080..98e7d67 100644 --- a/plane/models/work_items.py +++ b/plane/models/work_items.py @@ -368,6 +368,7 @@ class CreateWorkItemLink(BaseModel): model_config = ConfigDict(extra="ignore", populate_by_name=True) url: str + title: str | None = None class UpdateWorkItemLink(BaseModel): @@ -376,6 +377,7 @@ class UpdateWorkItemLink(BaseModel): model_config = ConfigDict(extra="ignore", populate_by_name=True) url: str | None = None + title: str | None = None class WorkItemAttachment(BaseModel): diff --git a/tests/unit/test_work_items.py b/tests/unit/test_work_items.py index b19098f..265e097 100644 --- a/tests/unit/test_work_items.py +++ b/tests/unit/test_work_items.py @@ -5,7 +5,7 @@ from plane.client import PlaneClient from plane.models.projects import Project from plane.models.query_params import PaginatedQueryParams, WorkItemQueryParams -from plane.models.work_items import AdvancedSearchWorkItem, CreateWorkItem, UpdateWorkItem +from plane.models.work_items import AdvancedSearchWorkItem, CreateWorkItem, CreateWorkItemLink, UpdateWorkItem, UpdateWorkItemLink class TestWorkItemsAPI: @@ -236,6 +236,49 @@ def test_list_links( assert hasattr(response, "count") assert isinstance(response.results, list) + def test_create_link_with_title( + self, client: PlaneClient, workspace_slug: str, project: Project, work_item + ) -> None: + """Test creating a work item link with title.""" + link = None + try: + link = client.work_items.links.create( + workspace_slug, + project.id, + work_item.id, + CreateWorkItemLink(url="https://example.com", title="Example"), + ) + assert link is not None + assert link.url == "https://example.com" + assert link.title == "Example" + finally: + if link is not None: + client.work_items.links.delete(workspace_slug, project.id, work_item.id, link.id) + + def test_update_link_title( + self, client: PlaneClient, workspace_slug: str, project: Project, work_item + ) -> None: + """Test updating a work item link title.""" + link = None + try: + link = client.work_items.links.create( + workspace_slug, + project.id, + work_item.id, + CreateWorkItemLink(url="https://example.com", title="Original"), + ) + updated = client.work_items.links.update( + workspace_slug, + project.id, + work_item.id, + link.id, + UpdateWorkItemLink(title="Updated"), + ) + assert updated.title == "Updated" + finally: + if link is not None: + client.work_items.links.delete(workspace_slug, project.id, work_item.id, link.id) + def test_list_activities( self, client: PlaneClient, workspace_slug: str, project: Project, work_item ) -> None: