Skip to content

Commit

Permalink
feat: add tasks set name (#64)
Browse files Browse the repository at this point in the history
  • Loading branch information
MartinHjelmare committed Jan 5, 2023
1 parent 3698ebf commit 43bf55e
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 1 deletion.
14 changes: 14 additions & 0 deletions src/aiortm/model/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,3 +151,17 @@ async def get_list(
"rtm.tasks.getList", list_id=list_id, last_sync=last_sync_string
)
return TasksResponse(**result)

async def set_name(
self, timeline: int, list_id: int, taskseries_id: int, task_id: int, name: str
) -> TaskModifiedResponse:
"""Rename a task."""
result = await self.api.call_api_auth(
"rtm.tasks.setName",
timeline=timeline,
list_id=list_id,
taskseries_id=taskseries_id,
task_id=task_id,
name=name,
)
return TaskModifiedResponse(**result)
36 changes: 36 additions & 0 deletions tests/fixtures/tasks/set_name.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"rsp": {
"stat": "ok",
"transaction": { "id": "12476388930", "undoable": "1" },
"list": {
"id": "48730705",
"taskseries": [
{
"id": "493427774",
"created": "2023-01-05T01:39:14Z",
"modified": "2023-01-05T01:42:01Z",
"name": "Renamed task",
"source": "api:test-api-key",
"url": "",
"location_id": "",
"tags": [],
"participants": [],
"notes": [],
"task": [
{
"id": "925539907",
"due": "",
"has_due_time": "0",
"added": "2023-01-05T01:39:14Z",
"completed": "",
"deleted": "",
"priority": "N",
"postponed": "0",
"estimate": ""
}
]
}
]
}
}
}
67 changes: 66 additions & 1 deletion tests/model/test_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,16 @@

@pytest.fixture(name="tasks_add", scope="session")
def tasks_add_fixture() -> str:
"""Return a response for rtm.tasks.getList."""
"""Return a response for rtm.tasks.add."""
return load_fixture("tasks/add.json")


@pytest.fixture(name="tasks_set_name", scope="session")
def tasks_set_name_fixture() -> str:
"""Return a response for rtm.tasks.setName."""
return load_fixture("tasks/set_name.json")


@pytest.fixture(name="response")
def response_fixture(request: pytest.FixtureRequest) -> str:
"""Return a response for the rtm api."""
Expand Down Expand Up @@ -211,3 +217,62 @@ async def test_tasks_get_list(
assert result.tasks.task_list[0].taskseries[0].task[
0
].added == datetime.fromisoformat("2023-01-02T01:55:25+00:00")


async def test_tasks_set_name(
client: AioRTMClient,
mock_response: aioresponses,
timelines_create: str,
generate_url: Callable[..., str],
tasks_set_name: str,
) -> None:
"""Test tasks set name."""
mock_response.get(
generate_url(
api_key="test-api-key",
auth_token="test-token",
method="rtm.timelines.create",
),
body=timelines_create,
)
mock_response.get(
generate_url(
api_key="test-api-key",
auth_token="test-token",
method="rtm.tasks.setName",
timeline=1234567890,
list_id=48730705,
taskseries_id=493427774,
task_id=925539907,
name="Renamed task",
),
body=tasks_set_name,
)

timeline_response = await client.rtm.timelines.create()
timeline = timeline_response.timeline
result = await client.rtm.tasks.set_name(
timeline=timeline,
list_id=48730705,
taskseries_id=493427774,
task_id=925539907,
name="Renamed task",
)

assert result.stat == "ok"
assert result.transaction.id == 12476388930
assert result.transaction.undoable == 1
assert result.task_list.id == 48730705
assert result.task_list.taskseries[0].id == 493427774
assert result.task_list.taskseries[0].created == datetime.fromisoformat(
"2023-01-05T01:39:14+00:00"
)
assert result.task_list.taskseries[0].modified == datetime.fromisoformat(
"2023-01-05T01:42:01+00:00"
)
assert result.task_list.taskseries[0].name == "Renamed task"
assert result.task_list.taskseries[0].source == "api:test-api-key"
assert result.task_list.taskseries[0].task[0].id == 925539907
assert result.task_list.taskseries[0].task[0].added == datetime.fromisoformat(
"2023-01-05T01:39:14+00:00"
)

0 comments on commit 43bf55e

Please sign in to comment.