angry-claw / tests /test_app_header.py
DavyMorgan's picture
Add numeric semantics dashboard tab
0390cd0
Raw
History Blame Contribute Delete
3.67 kB
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<rules>[^}]*)\}",
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()