From ed2b4c1faea4cc32fd9f6af169e6ccc4a1babeed Mon Sep 17 00:00:00 2001 From: Sven Geboers Date: Thu, 2 Apr 2026 21:19:23 +0200 Subject: [PATCH] test: add tests for 1D party position chart --- tests/test_explorer_chart.py | 60 ++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tests/test_explorer_chart.py b/tests/test_explorer_chart.py index 1236cd2..b016db8 100644 --- a/tests/test_explorer_chart.py +++ b/tests/test_explorer_chart.py @@ -278,3 +278,63 @@ def test_partial_party_traces(): # hovertemplate should include raw marker fields like 'x (raw)' if hasattr(tr, "hovertemplate") and tr.hovertemplate: assert "x (raw)" in tr.hovertemplate + + +def test_render_party_axis_chart_1d_renders(): + """Test that _render_party_axis_chart_1d creates a figure with proper structure.""" + from unittest.mock import MagicMock, patch + + from explorer import _render_party_axis_chart_1d + + party_coords = { + "VVD": (0.5,), + "SP": (-0.6,), + "PVV": (0.8,), + "DENK": (-0.4,), + } + + theme = { + "label": "Test Component", + "positive_pole": "Positive", + "negative_pole": "Negative", + "flip": False, + } + + # Mock st.plotly_chart to capture the figure being rendered + with patch("explorer.st.plotly_chart") as mock_plotly_chart: + _render_party_axis_chart_1d(party_coords, 3, theme) + + # Verify that plotly_chart was called + assert mock_plotly_chart.called, "plotly_chart should be called" + + # Get the figure passed to plotly_chart + fig = mock_plotly_chart.call_args[0][0] + assert fig is not None, "Figure should not be None" + # Check that figure has traces (the bar chart) + assert len(fig.data) > 0, "Figure should have traces" + + +def test_render_party_axis_chart_1d_empty_coords(): + """Test that _render_party_axis_chart_1d handles empty coords gracefully.""" + from unittest.mock import patch + + from explorer import _render_party_axis_chart_1d + + theme = { + "label": "Test Component", + "positive_pole": "Positive", + "negative_pole": "Negative", + "flip": False, + } + + # Empty coords should show caption, not plotly_chart + with patch("explorer.st.caption") as mock_caption: + with patch("explorer.st.plotly_chart") as mock_plotly_chart: + result = _render_party_axis_chart_1d({}, 3, theme) + + # Should show caption for empty data + assert mock_caption.called, "Should show caption for empty data" + # Should NOT call plotly_chart + assert not mock_plotly_chart.called, ( + "Should not call plotly_chart for empty data" + )