154 lines
3 KiB
Text
154 lines
3 KiB
Text
# Task Update API Tests
|
|
|
|
# Setup: Create a task to update
|
|
POST {{host}}/api/tasks
|
|
Content-Type: application/json
|
|
{
|
|
"title": "Original Task",
|
|
"description": "Original description"
|
|
}
|
|
|
|
HTTP 201
|
|
[Captures]
|
|
task_id: jsonpath "$.id"
|
|
created_at: jsonpath "$.created_at"
|
|
|
|
# Test: Update task title only
|
|
PUT {{host}}/api/tasks/{{task_id}}
|
|
Content-Type: application/json
|
|
{
|
|
"title": "Updated Task Title"
|
|
}
|
|
|
|
HTTP 200
|
|
[Asserts]
|
|
jsonpath "$.id" == "{{task_id}}"
|
|
jsonpath "$.title" == "Updated Task Title"
|
|
jsonpath "$.description" == "Original description"
|
|
jsonpath "$.status" == "todo"
|
|
jsonpath "$.updated_at" != "{{created_at}}"
|
|
|
|
# Test: Update description only
|
|
PUT {{host}}/api/tasks/{{task_id}}
|
|
Content-Type: application/json
|
|
{
|
|
"description": "Updated description"
|
|
}
|
|
|
|
HTTP 200
|
|
[Asserts]
|
|
jsonpath "$.id" == "{{task_id}}"
|
|
jsonpath "$.title" == "Updated Task Title"
|
|
jsonpath "$.description" == "Updated description"
|
|
jsonpath "$.status" == "todo"
|
|
|
|
# Test: Update status to done
|
|
PUT {{host}}/api/tasks/{{task_id}}
|
|
Content-Type: application/json
|
|
{
|
|
"status": "done"
|
|
}
|
|
|
|
HTTP 200
|
|
[Asserts]
|
|
jsonpath "$.id" == "{{task_id}}"
|
|
jsonpath "$.status" == "done"
|
|
jsonpath "$.completed_at" exists
|
|
|
|
# Test: Update status to backlog
|
|
PUT {{host}}/api/tasks/{{task_id}}
|
|
Content-Type: application/json
|
|
{
|
|
"status": "backlog"
|
|
}
|
|
|
|
HTTP 200
|
|
[Asserts]
|
|
jsonpath "$.id" == "{{task_id}}"
|
|
jsonpath "$.status" == "backlog"
|
|
jsonpath "$.completed_at" == null
|
|
|
|
# Test: Update multiple fields together
|
|
PUT {{host}}/api/tasks/{{task_id}}
|
|
Content-Type: application/json
|
|
{
|
|
"title": "Completely Updated Task",
|
|
"description": "Completely updated description",
|
|
"status": "done"
|
|
}
|
|
|
|
HTTP 200
|
|
[Asserts]
|
|
jsonpath "$.id" == "{{task_id}}"
|
|
jsonpath "$.title" == "Completely Updated Task"
|
|
jsonpath "$.description" == "Completely updated description"
|
|
jsonpath "$.status" == "done"
|
|
jsonpath "$.completed_at" exists
|
|
|
|
# Test: Clear description (set to null)
|
|
PUT {{host}}/api/tasks/{{task_id}}
|
|
Content-Type: application/json
|
|
{
|
|
"description": ""
|
|
}
|
|
|
|
HTTP 200
|
|
[Asserts]
|
|
jsonpath "$.id" == "{{task_id}}"
|
|
jsonpath "$.description" == ""
|
|
|
|
# Setup: Create another task for error tests
|
|
POST {{host}}/api/tasks
|
|
Content-Type: application/json
|
|
{
|
|
"title": "Task for Error Tests"
|
|
}
|
|
|
|
HTTP 201
|
|
[Captures]
|
|
error_test_task_id: jsonpath "$.id"
|
|
|
|
# Test: Update non-existent task
|
|
PUT {{host}}/api/tasks/00000000-0000-0000-0000-000000000000
|
|
Content-Type: application/json
|
|
{
|
|
"title": "This should fail"
|
|
}
|
|
|
|
HTTP 404
|
|
[Asserts]
|
|
jsonpath "$.error" exists
|
|
|
|
# Test: Update with invalid UUID format
|
|
PUT {{host}}/api/tasks/invalid-uuid-format
|
|
Content-Type: application/json
|
|
{
|
|
"title": "This should also fail"
|
|
}
|
|
|
|
HTTP 400
|
|
[Asserts]
|
|
jsonpath "$.error" exists
|
|
|
|
# Test: Update with empty title
|
|
PUT {{host}}/api/tasks/{{error_test_task_id}}
|
|
Content-Type: application/json
|
|
{
|
|
"title": ""
|
|
}
|
|
|
|
HTTP 422
|
|
[Asserts]
|
|
jsonpath "$.error" exists
|
|
|
|
# Test: Update with invalid status
|
|
PUT {{host}}/api/tasks/{{error_test_task_id}}
|
|
Content-Type: application/json
|
|
{
|
|
"status": "invalid_status"
|
|
}
|
|
|
|
HTTP 422
|
|
[Asserts]
|
|
jsonpath "$.error" exists
|
|
|