Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions plane/models/work_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand All @@ -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):
Expand Down
45 changes: 44 additions & 1 deletion tests/unit/test_work_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand Down