from __future__ import annotations import re import sys import types import unittest from pathlib import Path from unittest.mock import patch import app.app as dashboard_app class _Context: def __enter__(self) -> "_Context": return self def __exit__(self, *_args: object) -> bool: return False class _FakeGradio(types.SimpleNamespace): def __init__(self) -> None: self.markdown_values: list[str] = [] super().__init__( Blocks=lambda **_kwargs: _Context(), Column=lambda **_kwargs: _Context(), HTML=lambda *_args, **_kwargs: None, Markdown=self.Markdown, Tab=lambda *_args, **_kwargs: _Context(), Tabs=lambda **_kwargs: _Context(), ) def Markdown(self, value: str, **_kwargs: object) -> None: self.markdown_values.append(value) class HeaderTests(unittest.TestCase): def test_dashboard_tabs_include_numeric_semantics_between_static_tabs(self) -> None: self.assertEqual( dashboard_app.dashboard_tab_names(), [ "Top Snippets", "Logit Lens", "Implicit Scenarios", "Numeric Semantics", "Activity Preference", "Continuation Steering", "Clustering", "PCA", "Layer Structure", ], ) def test_dashboard_header_includes_github_link(self) -> None: fake_gradio = _FakeGradio() original_gradio = sys.modules.get("gradio") sys.modules["gradio"] = fake_gradio if original_gradio is None: self.addCleanup(lambda: sys.modules.pop("gradio", None)) else: self.addCleanup(lambda: sys.modules.__setitem__("gradio", original_gradio)) with patch.multiple( dashboard_app, top_snippets_dashboard_html=lambda _root: "", logit_lens_dashboard_html=lambda _root: "", build_implicit_scenarios_heatmap=lambda _root: object(), build_numeric_semantics_figure=lambda _root: object(), build_activity_preference_figure=lambda _root: object(), _causal_continuation_tab=lambda *_args, **_kwargs: None, build_cosine_heatmap=lambda _root: object(), build_umap_scatter=lambda _root: object(), build_pca_barplots=lambda _root: object(), build_pca_human_rating_scatter=lambda _root: object(), build_layer_similarity_heatmap=lambda _root: object(), _static_plot=lambda *_args, **_kwargs: None, _vector_plot=lambda *_args, **_kwargs: None, ): dashboard_app.build_dashboard( static_root=Path("static"), causal_root=Path("causal"), vector_space_root=Path("vector"), ) expected_link = "[GitHub](https://github.com/y3zai/angry-claw)" self.assertTrue( any(expected_link in value for value in fake_gradio.markdown_values), fake_gradio.markdown_values, ) def test_header_link_spacing_does_not_overlap_title(self) -> None: css = dashboard_app.dashboard_css() self.assertIn(".unified-demo-header-link", css) header_link_rules = re.findall( r"\.unified-demo-header-link\s*\{(?P[^}]*)\}", css, ) self.assertTrue(header_link_rules, css) self.assertTrue( all("margin-top: -" not in rules for rules in header_link_rules), header_link_rules, ) if __name__ == "__main__": unittest.main()