feat: support install guides in custom themes

This commit is contained in:
3252a8
2026-05-22 23:39:17 +03:00
parent 17224b4f74
commit 7c874cd4aa
8 changed files with 328 additions and 17 deletions
+42 -3
View File
@@ -33,13 +33,14 @@ class WebappThemesConfigTests(unittest.TestCase):
self.assertEqual(win95.tokens.style_preset, "win95")
self.assertFalse(win95.use_primary_accent)
self.assertTrue(win95.use_in_admin)
self.assertEqual(win95.assets_version, 9)
self.assertEqual(win95.assets_version, 11)
self.assertEqual(cfg.theme_by_key("light").assets_version, 3)
ascii_theme = cfg.theme_by_key("ascii")
self.assertIsNotNone(ascii_theme)
self.assertEqual(ascii_theme.css_file, "style.css")
self.assertFalse(ascii_theme.use_primary_accent)
self.assertTrue(ascii_theme.use_in_admin)
self.assertEqual(ascii_theme.assets_version, 3)
self.assertEqual(ascii_theme.assets_version, 4)
def test_env_override_default_theme(self):
cfg = builtin_webapp_themes_config("#00fe7a")
@@ -381,7 +382,7 @@ class WebappThemesConfigTests(unittest.TestCase):
descriptor["assets_version"],
cfg.theme_by_key("windows95").assets_version,
)
self.assertEqual(descriptor["assets_version"], 9)
self.assertEqual(descriptor["assets_version"], 11)
self.assertIn("lucide-house", css)
self.assertIn("lucide-earth", css)
self.assertIn("lucide-circle-check", css)
@@ -391,7 +392,9 @@ class WebappThemesConfigTests(unittest.TestCase):
self.assertIn("::-webkit-slider-thumb", css)
self.assertIn("?v=9", css)
self.assertIn("lucide-life-buoy", css)
self.assertIn("lucide-qr-code", css)
self.assertIn("New webapp surfaces: support, purchase info, password login", css)
self.assertIn("Install guide theme surfaces", css)
self.assertIn(
".theme-key-windows95 .support-list-card {\n grid-template-rows: auto auto minmax(0, 1fr);",
css,
@@ -429,3 +432,39 @@ class WebappThemesConfigTests(unittest.TestCase):
css = (stale_theme_dir / "style.css").read_text(encoding="utf-8")
self.assertIn(".theme-key-light.app-shell", css)
self.assertIn("Install guide theme surfaces", css)
def test_resolved_refreshes_stale_builtin_ascii_assets(self):
with tempfile.TemporaryDirectory() as tmp:
themes_dir = Path(tmp) / "themes"
stale_theme_dir = themes_dir / "ascii"
stale_theme_dir.mkdir(parents=True)
(stale_theme_dir / "theme.json").write_text(
json.dumps(
{
"key": "ascii",
"names": {"en": "ASCII"},
"enabled": True,
"default": False,
"use_primary_accent": False,
"css_file": "style.css",
"assets_version": 1,
"tokens": {"color_scheme": "dark", "style_preset": "ascii"},
}
),
encoding="utf-8",
)
(stale_theme_dir / "style.css").write_text("/* stale */", encoding="utf-8")
cfg = resolved_webapp_themes_catalog(
theme_dir=themes_dir,
primary_accent="#00fe7a",
env_default_theme=None,
)
descriptor = json.loads((stale_theme_dir / "theme.json").read_text(encoding="utf-8"))
css = (stale_theme_dir / "style.css").read_text(encoding="utf-8")
self.assertEqual(descriptor["assets_version"], cfg.theme_by_key("ascii").assets_version)
self.assertEqual(descriptor["assets_version"], 4)
self.assertIn("Console-style tables", css)
self.assertIn("Install guide theme surfaces", css)