Skip to main content
Glama
test_manifest.py2.85 kB
""" Tests for ManifestLoader helper methods (get_resource_node). """ from typing import TYPE_CHECKING import pytest if TYPE_CHECKING: from dbt_core_mcp.server import DbtCoreMcpServer # Resource Discovery Tests def test_get_resource_node_model(jaffle_shop_server: "DbtCoreMcpServer") -> None: """Test get_resource_node with a model resource type filter.""" assert jaffle_shop_server.manifest is not None result = jaffle_shop_server.manifest.get_resource_node("customers", "model") assert result["resource_type"] == "model" assert result["unique_id"] == "model.jaffle_shop.customers" assert result["name"] == "customers" def test_get_resource_node_source(jaffle_shop_server: "DbtCoreMcpServer") -> None: """Test get_resource_node with a source resource type filter.""" assert jaffle_shop_server.manifest is not None result = jaffle_shop_server.manifest.get_resource_node("customers", "source") assert result["resource_type"] == "source" assert result["source_name"] == "jaffle_shop" assert result["name"] == "customers" def test_get_resource_node_source_dot_notation(jaffle_shop_server: "DbtCoreMcpServer") -> None: """Test get_resource_node with source_name.table_name notation.""" assert jaffle_shop_server.manifest is not None result = jaffle_shop_server.manifest.get_resource_node("jaffle_shop.customers") assert result["resource_type"] == "source" assert result["unique_id"] == "source.jaffle_shop.jaffle_shop.customers" assert result["source_name"] == "jaffle_shop" def test_get_resource_node_multiple_matches(jaffle_shop_server: "DbtCoreMcpServer") -> None: """Test get_resource_node returns all matches when ambiguous.""" assert jaffle_shop_server.manifest is not None result = jaffle_shop_server.manifest.get_resource_node("customers") assert result["multiple_matches"] is True assert result["match_count"] == 2 assert result["name"] == "customers" assert len(result["matches"]) == 2 types = {m["resource_type"] for m in result["matches"]} assert types == {"model", "source"} def test_get_resource_node_not_found(jaffle_shop_server: "DbtCoreMcpServer") -> None: """Test get_resource_node raises ValueError when resource not found.""" assert jaffle_shop_server.manifest is not None with pytest.raises(ValueError, match="Resource 'nonexistent' not found"): jaffle_shop_server.manifest.get_resource_node("nonexistent") def test_get_resource_node_invalid_type(jaffle_shop_server: "DbtCoreMcpServer") -> None: """Test get_resource_node raises ValueError for invalid resource_type.""" assert jaffle_shop_server.manifest is not None with pytest.raises(ValueError, match="Invalid resource_type"): jaffle_shop_server.manifest.get_resource_node("customers", "invalid_type")

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/NiclasOlofsson/dbt-core-mcp'

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