"""
Tests for queue endpoints.
"""

from fastapi.testclient import TestClient


class TestQueueEndpoints:
    """Test the queue endpoints."""

    def test_get_queue_status_success(self, client: TestClient):
        """Test successfully getting queue status."""
        response = client.get("/api/v1/queue/status")
        assert response.status_code == 200
        data = response.json()
        assert "total_jobs" in data
        assert "pending_jobs" in data
        assert "processing_jobs" in data
        assert "completed_jobs" in data
        assert "failed_jobs" in data

    def test_process_queue_success(self, client: TestClient):
        """Test successfully starting queue processing."""
        response = client.post("/api/v1/queue/process")
        assert response.status_code == 200
        data = response.json()
        assert "message" in data

    def test_timeout_check_success(self, client: TestClient):
        """Test successfully checking timeout jobs."""
        response = client.post("/api/v1/queue/timeout-check")
        assert response.status_code == 200
        data = response.json()
        assert "message" in data
        assert "result" in data


class TestQueueSchemas:
    """Test the queue schemas."""

    def test_job_create_valid(self):
        """Test valid job creation schema."""
        from app.schemas.queue import JobCreate

        data = {
            "video_name": "test-video.mp4",
            "user_id": 123,
            "interview_id": 456,
            "question_id": 789,
            "interview_type": "1",
        }

        job = JobCreate(**data)
        assert job.video_name == "test-video.mp4"
        assert job.user_id == 123
        assert job.interview_id == 456
        assert job.question_id == 789
        assert job.interview_type == "1"

    def test_job_update_valid(self):
        """Test valid job update schema."""
        from app.schemas.queue import JobUpdate

        data = {"status": "1"}
        job_update = JobUpdate(**data)
        assert job_update.status == "1"

    def test_job_response_structure(self):
        """Test job response schema structure."""
        from datetime import datetime

        from app.schemas.queue import JobResponse

        data = {
            "id": "test-job-id",
            "video_name": "test-video.mp4",
            "user_id": 123,
            "interview_id": 456,
            "question_id": 789,
            "interview_type": "1",
            "status": "0",
            "tries": 0,
            "created_at": datetime.now(),
            "data_process": "1",
        }

        job = JobResponse(**data)
        assert job.id == "test-job-id"
        assert job.video_name == "test-video.mp4"
        assert job.user_id == 123
        assert job.status == "0"
