Skip to main content
Glama
test_main.pyโ€ข4 kB
""" Tests for NCBI Gene MCP Client. """ import pytest from unittest.mock import Mock, patch from ncbi_gene_mcp_client.main import NCBIGeneMCPClientBridge from ncbi_gene_mcp_client.bridge import NCBIBridge, Config from ncbi_gene_mcp_client.models import GeneInfo, SearchResult class TestNCBIGeneMCPClientBridge: """Test the main bridge class.""" def test_init_default(self): """Test initialization with default parameters.""" bridge = NCBIGeneMCPClientBridge() assert bridge.bridge is not None assert isinstance(bridge.bridge, NCBIBridge) def test_init_with_params(self): """Test initialization with email and API key.""" bridge = NCBIGeneMCPClientBridge( email="test@example.com", api_key="test_key" ) assert bridge.bridge.config.email == "test@example.com" assert bridge.bridge.config.api_key == "test_key" @patch('ncbi_gene_mcp_client.bridge.NCBIBridge.search_genes') def test_search_genes(self, mock_search): """Test gene search functionality.""" # Mock the return value mock_result = SearchResult( count=5, ids=["672", "675", "676"], query_translation="BRCA1[gene]" ) mock_search.return_value = mock_result bridge = NCBIGeneMCPClientBridge() result = bridge.search_genes("BRCA1", max_results=10) mock_search.assert_called_once_with("BRCA1", 10) assert result.count == 5 assert "672" in result.ids @patch('ncbi_gene_mcp_client.bridge.NCBIBridge.fetch_gene_info') def test_fetch_gene_info(self, mock_fetch): """Test gene info fetching.""" # Mock the return value mock_gene = GeneInfo( gene_id="672", name="BRCA1", description="BRCA1 DNA repair associated", organism="Homo sapiens", chromosome="17" ) mock_fetch.return_value = mock_gene bridge = NCBIGeneMCPClientBridge() result = bridge.fetch_gene_info("672") mock_fetch.assert_called_once_with("672") assert result.gene_id == "672" assert result.name == "BRCA1" class TestConfig: """Test the configuration class.""" def test_default_config(self): """Test default configuration values.""" config = Config() assert config.base_url == "https://eutils.ncbi.nlm.nih.gov/entrez/eutils" assert config.email is None assert config.api_key is None assert config.timeout == 30.0 assert config.request_delay == 0.34 def test_custom_config(self): """Test custom configuration values.""" config = Config( email="test@example.com", api_key="test_key", timeout=60.0, request_delay=1.0 ) assert config.email == "test@example.com" assert config.api_key == "test_key" assert config.timeout == 60.0 assert config.request_delay == 1.0 @pytest.mark.integration class TestNCBIBridgeIntegration: """Integration tests for NCBI Bridge (requires internet connection).""" def test_search_brca1_real(self): """Test real search for BRCA1 gene.""" bridge = NCBIBridge() result = bridge.search_genes("BRCA1[gene] AND human[organism]", max_results=5) assert result.count > 0 assert len(result.ids) > 0 assert "672" in result.ids # BRCA1 gene ID def test_fetch_brca1_info_real(self): """Test real gene info fetch for BRCA1.""" bridge = NCBIBridge() gene_info = bridge.fetch_gene_info("672") # BRCA1 gene ID assert gene_info.gene_id == "672" assert "BRCA1" in gene_info.name assert "Homo sapiens" in gene_info.organism assert gene_info.chromosome == "17" if __name__ == "__main__": pytest.main([__file__])

Latest Blog Posts

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/mohammadnajeeb/ncbi_gene_mcp_client'

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