mirror of
https://github.com/apache/superset.git
synced 2026-04-23 01:55:09 +00:00
fix(mcp): default XY chart x-axis to dataset primary datetime column (#39421)
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
This commit is contained in:
@@ -826,6 +826,62 @@ class TestMapConfigToFormData:
|
||||
with pytest.raises(ValueError, match="Unsupported config type"):
|
||||
map_config_to_form_data("invalid_config") # type: ignore
|
||||
|
||||
@patch(
|
||||
"superset.mcp_service.chart.chart_utils.is_column_truly_temporal",
|
||||
return_value=True,
|
||||
)
|
||||
@patch("superset.daos.dataset.DatasetDAO.find_by_id")
|
||||
def test_map_xy_config_x_none_defaults_to_main_dttm_col(
|
||||
self, mock_find_by_id: Any, mock_is_temporal: Any
|
||||
) -> None:
|
||||
"""When x is None, map_xy_config resolves it from dataset.main_dttm_col."""
|
||||
mock_dataset = MagicMock()
|
||||
mock_dataset.main_dttm_col = "order_date"
|
||||
mock_find_by_id.return_value = mock_dataset
|
||||
|
||||
config = XYChartConfig(
|
||||
chart_type="xy",
|
||||
x=None,
|
||||
y=[ColumnRef(name="revenue", aggregate="SUM")],
|
||||
kind="bar",
|
||||
)
|
||||
|
||||
result = map_xy_config(config, dataset_id=42)
|
||||
|
||||
assert result["x_axis"] == "order_date"
|
||||
mock_find_by_id.assert_called_once_with(42)
|
||||
|
||||
def test_map_xy_config_x_none_no_dataset_id_raises(self) -> None:
|
||||
"""When x is None and no dataset_id, raise ValueError."""
|
||||
config = XYChartConfig(
|
||||
chart_type="xy",
|
||||
x=None,
|
||||
y=[ColumnRef(name="revenue", aggregate="SUM")],
|
||||
kind="line",
|
||||
)
|
||||
|
||||
with pytest.raises(ValueError, match="x-axis column is required"):
|
||||
map_xy_config(config, dataset_id=None)
|
||||
|
||||
@patch("superset.daos.dataset.DatasetDAO.find_by_id")
|
||||
def test_map_xy_config_x_none_no_main_dttm_col_raises(
|
||||
self, mock_find_by_id: Any
|
||||
) -> None:
|
||||
"""When x is None and dataset has no main_dttm_col, raise ValueError."""
|
||||
mock_dataset = MagicMock()
|
||||
mock_dataset.main_dttm_col = None
|
||||
mock_find_by_id.return_value = mock_dataset
|
||||
|
||||
config = XYChartConfig(
|
||||
chart_type="xy",
|
||||
x=None,
|
||||
y=[ColumnRef(name="revenue", aggregate="SUM")],
|
||||
kind="line",
|
||||
)
|
||||
|
||||
with pytest.raises(ValueError, match="no primary datetime column"):
|
||||
map_xy_config(config, dataset_id=42)
|
||||
|
||||
|
||||
class TestGenerateChartName:
|
||||
"""Test generate_chart_name function"""
|
||||
|
||||
Reference in New Issue
Block a user