mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
"""TaskCreate (POST /tasks request schema) enforces TASK_AT_CREATE."""
|
|||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from uuid import uuid4
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
from pydantic import ValidationError
|
||
|
|
from roboco.models.task import TaskCreate
|
||
|
|
|
||
|
|
|
||
|
|
def _ok_payload() -> dict:
|
||
|
|
return {
|
||
|
|
"title": "Add user lookup endpoint",
|
||
|
|
"description": (
|
||
|
|
"Add GET /v1/users/{id} returning user JSON for the dashboard."
|
||
|
|
),
|
||
|
|
"task_type": "code",
|
||
|
|
"nature": "technical",
|
||
|
|
"estimated_complexity": "medium",
|
||
|
|
"team": "backend",
|
||
|
|
"project_id": uuid4(),
|
||
|
|
"acceptance_criteria": ["returns 404 for unknown user"],
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
def test_task_create_accepts_complete_payload() -> None:
|
||
|
|
TaskCreate(**_ok_payload())
|
||
|
|
|
||
|
|
|
||
|
|
def test_task_create_rejects_empty_acceptance_criteria() -> None:
|
||
|
|
payload = _ok_payload()
|
||
|
|
payload["acceptance_criteria"] = []
|
||
|
|
with pytest.raises(ValidationError):
|
||
|
|
TaskCreate(**payload)
|
||
|
|
|
||
|
|
|
||
|
|
def test_task_create_rejects_missing_nature() -> None:
|
||
|
|
payload = _ok_payload()
|
||
|
|
del payload["nature"]
|
||
|
|
with pytest.raises(ValidationError):
|
||
|
|
TaskCreate(**payload)
|
||
|
|
|
||
|
|
|
||
|
|
def test_task_create_rejects_missing_task_type() -> None:
|
||
|
|
payload = _ok_payload()
|
||
|
|
del payload["task_type"]
|
||
|
|
with pytest.raises(ValidationError):
|
||
|
|
TaskCreate(**payload)
|
||
|
|
|
||
|
|
|
||
|
|
def test_task_create_rejects_short_description() -> None:
|
||
|
|
payload = _ok_payload()
|
||
|
|
payload["description"] = "x"
|
||
|
|
with pytest.raises(ValidationError):
|
||
|
|
TaskCreate(**payload)
|