"""Pre-split regression tests for /api/segments/* routes."""
from __future__ import annotations

from fastapi.testclient import TestClient


class TestSegments:
    def test_list_unauthenticated_returns_401(self, client: TestClient):
        assert client.get("/api/segments").status_code == 401

    def test_create_unauthenticated_returns_401(self, client: TestClient):
        # Pydantic validates required fields before auth; send a valid body
        r = client.post("/api/segments", json={
            "name": "Test", "polyline": [[0, 0], [1, 1]], "distance_m": 600.0,
        })
        assert r.status_code == 401

    def test_delete_unauthenticated_returns_401(self, client: TestClient):
        assert client.delete("/api/segments/some-id").status_code == 401

    def test_get_efforts_unauthenticated_returns_401(self, client: TestClient):
        assert client.get("/api/segments/some-id/efforts").status_code == 401

    def test_authenticated_list_returns_list(self, user_client: TestClient):
        r = user_client.get("/api/segments")
        assert r.status_code == 200
        assert isinstance(r.json(), list)

    def test_create_short_segment_returns_400(self, user_client: TestClient):
        r = user_client.post("/api/segments", json={
            "name": "Too short",
            "polyline": [[45.0, 7.0], [45.001, 7.001]],
            "distance_m": 100.0,
        })
        assert r.status_code == 400

    def test_missing_segment_returns_404(self, user_client: TestClient):
        assert user_client.get("/api/segments/no-such-segment").status_code == 404
