import pytest from models import Ticket, Track, WorkerContext def test_ticket_instantiation(): """ Verifies that a Ticket can be instantiated with its required fields: id, description, status, assigned_to. """ ticket_id = "T1" description = "Implement surgical code changes" status = "todo" assigned_to = "tier3-worker" ticket = Ticket( id=ticket_id, description=description, status=status, assigned_to=assigned_to ) assert ticket.id == ticket_id assert ticket.description == description assert ticket.status == status assert ticket.assigned_to == assigned_to assert ticket.depends_on == [] def test_ticket_with_dependencies(): """ Verifies that a Ticket can store dependencies. """ ticket = Ticket( id="T2", description="Write code", status="todo", assigned_to="worker-1", depends_on=["T1"] ) assert ticket.depends_on == ["T1"] def test_track_instantiation(): """ Verifies that a Track can be instantiated with its required fields: id, description, and a list of Tickets. """ ticket1 = Ticket(id="T1", description="Task 1", status="todo", assigned_to="a") ticket2 = Ticket(id="T2", description="Task 2", status="todo", assigned_to="b") track_id = "TRACK-1" track_desc = "Implement MMA Models" tickets = [ticket1, ticket2] track = Track( id=track_id, description=track_desc, tickets=tickets ) assert track.id == track_id assert track.description == track_desc assert len(track.tickets) == 2 assert track.tickets[0].id == "T1" assert track.tickets[1].id == "T2" def test_track_can_handle_empty_tickets(): """ Verifies that a Track can be instantiated with an empty list of tickets. """ track = Track(id="TRACK-2", description="Empty Track", tickets=[]) assert track.tickets == [] def test_worker_context_instantiation(): """ Verifies that a WorkerContext can be instantiated with ticket_id, model_name, and messages. """ ticket_id = "T1" model_name = "gemini-2.0-flash-lite" messages = [ {"role": "user", "content": "Hello"}, {"role": "assistant", "content": "Hi there!"} ] context = WorkerContext( ticket_id=ticket_id, model_name=model_name, messages=messages ) assert context.ticket_id == ticket_id assert context.model_name == model_name assert context.messages == messages