"""
Contract Tests: Coverage Check API

Endpoint: /mascotas/api/v1/coverage/check/
App: mascotas

Used to check if a location has veterinary coverage before proceeding with turnero.
"""

from ..base import ContractTestCase
from ..endpoints import Endpoints


class TestCoverageCheck(ContractTestCase):
    """GET /mascotas/api/v1/coverage/check/"""

    def test_with_coordinates_returns_200(self):
        """Coverage check should accept lat/lng parameters"""
        response = self.get(Endpoints.COVERAGE_CHECK, params={
            "lat": -34.6037,
            "lng": -58.3816,
        })

        self.assert_status(response, 200)

    def test_returns_coverage_boolean(self):
        """Coverage check should return coverage boolean"""
        response = self.get(Endpoints.COVERAGE_CHECK, params={
            "lat": -34.6037,
            "lng": -58.3816,
        })

        self.assert_status(response, 200)
        self.assert_has_fields(response.data, "coverage")
        self.assertIsInstance(response.data["coverage"], bool)

    def test_returns_vet_count(self):
        """Coverage check should return number of available vets"""
        response = self.get(Endpoints.COVERAGE_CHECK, params={
            "lat": -34.6037,
            "lng": -58.3816,
        })

        self.assert_status(response, 200)
        self.assert_has_fields(response.data, "vet_count")
        self.assertIsInstance(response.data["vet_count"], int)

    def test_without_coordinates_fails(self):
        """Coverage check without coordinates should fail"""
        response = self.get(Endpoints.COVERAGE_CHECK)

        # Should return 400 or similar error
        self.assertIn(response.status_code, [400, 422])
