fix(mcp): point get_dataset_info url to explore view instead of legacy tablemodelview edit (#39838)

This commit is contained in:
Amin Ghadersohi
2026-05-04 13:39:05 -04:00
committed by GitHub
parent 41a22d7918
commit 673634f7af
2 changed files with 23 additions and 15 deletions

View File

@@ -84,7 +84,7 @@ def create_mock_dataset(
dataset.is_virtual = False
dataset.database_id = 1
dataset.schema_perm = f"[{database_name}].[{schema}]"
dataset.url = f"/tablemodelview/edit/{dataset_id}"
dataset.url = f"/explore/?datasource_type=table&datasource_id={dataset_id}"
dataset.database = MagicMock()
dataset.database.database_name = database_name
dataset.sql = None
@@ -228,7 +228,7 @@ async def test_list_datasets_basic(mock_list, mcp_server):
dataset.is_virtual = False
dataset.database_id = 1
dataset.schema_perm = "[examples].[main]"
dataset.url = "/tablemodelview/edit/1"
dataset.url = "/explore/?datasource_type=table&datasource_id=1"
dataset.database = MagicMock()
dataset.database.database_name = "examples"
dataset.sql = None
@@ -336,7 +336,7 @@ async def test_list_datasets_custom_uuid_columns(mock_list, mcp_server):
dataset.is_virtual = False
dataset.database_id = 1
dataset.schema_perm = "[examples].[public]"
dataset.url = "/tablemodelview/edit/1"
dataset.url = "/explore/?datasource_type=table&datasource_id=1"
dataset.database = MagicMock()
dataset.database.database_name = "test_db"
dataset.sql = None
@@ -416,7 +416,7 @@ async def test_list_datasets_with_filters(mock_list, mcp_server):
dataset.is_virtual = False
dataset.database_id = 1
dataset.schema_perm = "[examples].[main]"
dataset.url = "/tablemodelview/edit/2"
dataset.url = "/explore/?datasource_type=table&datasource_id=2"
dataset.database = MagicMock()
dataset.database.database_name = "examples"
dataset.sql = None
@@ -519,7 +519,7 @@ async def test_list_datasets_with_string_filters(mock_list, mcp_server):
dataset.is_virtual = False
dataset.database_id = 1
dataset.schema_perm = "[examples].[main]"
dataset.url = "/tablemodelview/edit/3"
dataset.url = "/explore/?datasource_type=table&datasource_id=3"
dataset.database = MagicMock()
dataset.database.database_name = "examples"
dataset.sql = None
@@ -782,7 +782,7 @@ async def test_list_datasets_simple_basic(mock_list, mcp_server):
dataset.is_virtual = False
dataset.database_id = 1
dataset.schema_perm = "[examples].[main]"
dataset.url = "/tablemodelview/edit/1"
dataset.url = "/explore/?datasource_type=table&datasource_id=1"
dataset.database = MagicMock()
dataset.database.database_name = "examples"
dataset.sql = None
@@ -879,7 +879,7 @@ async def test_list_datasets_simple_with_filters(mock_list, mcp_server):
dataset.is_virtual = False
dataset.database_id = 1
dataset.schema_perm = "[examples].[main]"
dataset.url = "/tablemodelview/edit/2"
dataset.url = "/explore/?datasource_type=table&datasource_id=2"
dataset.database = MagicMock()
dataset.database.database_name = "examples"
dataset.sql = None
@@ -970,9 +970,13 @@ async def test_list_datasets_simple_api_error(mock_list, mcp_server):
assert "API request failed" in str(excinfo.value)
@patch(
"superset.mcp_service.utils.url_utils.get_superset_base_url",
return_value="http://test-superset",
)
@patch("superset.daos.dataset.DatasetDAO.find_by_id")
@pytest.mark.asyncio
async def test_get_dataset_info_success(mock_info, mcp_server):
async def test_get_dataset_info_success(mock_info, mock_base_url, mcp_server):
dataset = MagicMock()
dataset.id = 1
dataset.table_name = "Test DatasetInfo"
@@ -991,7 +995,7 @@ async def test_get_dataset_info_success(mock_info, mcp_server):
dataset.is_virtual = False
dataset.database_id = 1
dataset.schema_perm = "[examples].[main]"
dataset.url = "/tablemodelview/edit/1"
dataset.url = "/explore/?datasource_type=table&datasource_id=1"
dataset.database = MagicMock()
dataset.database.database_name = "examples"
dataset.sql = None
@@ -1030,6 +1034,10 @@ async def test_get_dataset_info_success(mock_info, mcp_server):
assert data["id"] == 1
assert data["table_name"] == "Test DatasetInfo"
assert data["database_name"] == "examples"
assert (
data["url"]
== "http://test-superset/explore/?datasource_type=table&datasource_id=1"
)
# Check that columns and metrics are included
assert len(data["columns"]) == 1
assert len(data["metrics"]) == 1
@@ -1130,7 +1138,7 @@ async def test_get_dataset_info_includes_columns_and_metrics(mock_info, mcp_serv
dataset.is_virtual = False
dataset.database_id = 1
dataset.schema_perm = "[examples].[main]"
dataset.url = "/tablemodelview/edit/10"
dataset.url = "/explore/?datasource_type=table&datasource_id=10"
dataset.sql = None
dataset.main_dttm_col = None
dataset.offset = 0
@@ -1222,7 +1230,7 @@ async def test_list_datasets_includes_columns_and_metrics(mock_list, mcp_server)
dataset.is_virtual = False
dataset.database_id = 1
dataset.schema_perm = "[examples].[main]"
dataset.url = "/tablemodelview/edit/11"
dataset.url = "/explore/?datasource_type=table&datasource_id=11"
dataset.sql = None
dataset.main_dttm_col = None
dataset.offset = 0
@@ -1298,7 +1306,7 @@ async def test_get_dataset_info_by_uuid(mock_find_object, mcp_server):
dataset.is_virtual = False
dataset.database_id = 1
dataset.schema_perm = "[examples].[main]"
dataset.url = "/tablemodelview/edit/1"
dataset.url = "/explore/?datasource_type=table&datasource_id=1"
dataset.database = MagicMock()
dataset.database.database_name = "examples"
dataset.sql = None