Skip to main content
Glama
by zachegner
test_rcra.py4.22 kB
"""Unit tests for RCRA client.""" import pytest from unittest.mock import AsyncMock from src.client.rcra import RCRAClient, EPAAPIError from src.models.common import BoundingBox from src.models.facility import FacilityInfo, FacilityType class TestRCRAClient: """Test cases for RCRAClient.""" @pytest.fixture def client(self): """Create RCRAClient instance for testing.""" return RCRAClient() @pytest.fixture def sample_bbox(self): """Sample bounding box for testing.""" return BoundingBox( min_latitude=40.0, max_latitude=41.0, min_longitude=-74.0, max_longitude=-73.0 ) @pytest.mark.asyncio async def test_get_rcra_sites_in_bbox_success(self, client, sample_bbox, rcra_api_response): """Test successful RCRA sites query.""" client.query_table = AsyncMock(return_value=rcra_api_response) result = await client.get_rcra_sites_in_bbox(sample_bbox, limit=10) assert len(result) == 1 assert isinstance(result[0], FacilityInfo) assert result[0].registry_id == "NYD123456789" assert result[0].name == "Test Hazardous Waste Facility" assert FacilityType.RCRA in result[0].programs # Verify query parameters call_args = client.query_table.call_args assert call_args[1]["table"] == "rcra.rcra_handler" assert call_args[1]["limit"] == 10 @pytest.mark.asyncio async def test_get_rcra_site_by_id_success(self, client, rcra_api_response): """Test successful RCRA site lookup by ID.""" client.query_table = AsyncMock(return_value=rcra_api_response) result = await client.get_rcra_site_by_id("NYD123456789") assert result is not None assert isinstance(result, FacilityInfo) assert result.registry_id == "NYD123456789" # Verify query parameters call_args = client.query_table.call_args assert call_args[1]["table"] == "rcra.rcra_handler" assert call_args[1]["filters"]["handler_id"]["equals"] == "NYD123456789" assert call_args[1]["limit"] == 1 @pytest.mark.asyncio async def test_get_rcra_site_by_id_not_found(self, client): """Test RCRA site lookup with no results.""" client.query_table = AsyncMock(return_value=[]) result = await client.get_rcra_site_by_id("nonexistent") assert result is None def test_parse_rcra_record_success(self, client, sample_rcra_site): """Test successful RCRA record parsing.""" result = client._parse_rcra_record(sample_rcra_site) assert result is not None assert isinstance(result, FacilityInfo) assert result.registry_id == "NYD123456789" assert result.name == "Test Hazardous Waste Facility" assert result.address == "456 Waste Way, New York, NY 10001" assert result.city == "New York" assert result.state == "NY" assert result.zip_code == "10001" assert result.coordinates is not None assert result.coordinates.latitude == 40.7128 assert result.coordinates.longitude == -74.0060 assert FacilityType.RCRA in result.programs assert result.naics_code == "562211" assert result.status == "RCRA TSD" def test_parse_rcra_record_missing_data(self, client): """Test RCRA record parsing with missing data.""" record = { "handler_id": "NYD123456789", "handler_name": "Test Site" } result = client._parse_rcra_record(record) assert result is not None assert result.registry_id == "NYD123456789" assert result.name == "Test Site" assert result.address is None assert result.coordinates is None assert result.status == "RCRA None" def test_parse_rcra_record_invalid_data(self, client): """Test RCRA record parsing with invalid data.""" record = {"invalid": "data"} result = client._parse_rcra_record(record) assert result is None

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zachegner/envirofacts-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server