import pytest from apps.tickets.services import TicketStatusError, validate_status_transition def test_pending_ticket_can_move_to_in_progress(): validate_status_transition("pending", "in_progress") def test_in_progress_ticket_must_not_close_directly(): with pytest.raises(TicketStatusError, match="in_progress -> closed"): validate_status_transition("in_progress", "closed") def test_in_progress_ticket_must_not_resolve_directly(): with pytest.raises(TicketStatusError, match="in_progress -> resolved"): validate_status_transition("in_progress", "resolved") def test_resolved_ticket_cannot_move_back_to_in_progress(): with pytest.raises(TicketStatusError, match="resolved -> in_progress"): validate_status_transition("resolved", "in_progress") def test_business_ticket_can_resolve_directly_from_pending(): validate_status_transition("pending", "resolved", "business_issue") def test_technical_ticket_cannot_resolve_directly_from_pending(): with pytest.raises(TicketStatusError, match="pending -> resolved"): validate_status_transition("pending", "resolved", "technical_issue") def test_data_ticket_can_resolve_from_in_progress(): validate_status_transition("in_progress", "resolved", "data_issue")