feat: theme

This commit is contained in:
kodi
2026-03-12 18:26:29 +01:00
parent 939a7fd191
commit ab83ee3f20
13 changed files with 374 additions and 34 deletions
@@ -59,6 +59,8 @@ class SettingsApiGoldenTest(unittest.TestCase):
"show_thumbnails": False,
"preferred_startup_path_left": None,
"preferred_startup_path_right": None,
"selected_theme": "default",
"selected_color_mode": "dark",
},
)
@@ -75,6 +77,8 @@ class SettingsApiGoldenTest(unittest.TestCase):
"show_thumbnails": False,
"preferred_startup_path_left": "storage1/docs",
"preferred_startup_path_right": None,
"selected_theme": "default",
"selected_color_mode": "dark",
},
)
@@ -96,6 +100,8 @@ class SettingsApiGoldenTest(unittest.TestCase):
"show_thumbnails": True,
"preferred_startup_path_left": "storage1/docs",
"preferred_startup_path_right": "storage1/docs",
"selected_theme": "default",
"selected_color_mode": "dark",
},
)
self.assertEqual(
@@ -104,6 +110,8 @@ class SettingsApiGoldenTest(unittest.TestCase):
"show_thumbnails": True,
"preferred_startup_path_left": "storage1/docs",
"preferred_startup_path_right": "storage1/docs",
"selected_theme": "default",
"selected_color_mode": "dark",
},
)
@@ -113,6 +121,8 @@ class SettingsApiGoldenTest(unittest.TestCase):
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()["preferred_startup_path_left"], "storage1/docs")
self.assertEqual(response.json()["preferred_startup_path_right"], None)
self.assertEqual(response.json()["selected_theme"], "default")
self.assertEqual(response.json()["selected_color_mode"], "dark")
def test_settings_preferred_startup_path_right_persistence(self) -> None:
response = self._request("POST", "/api/settings", {"preferred_startup_path_right": "storage1/docs"})
@@ -120,6 +130,8 @@ class SettingsApiGoldenTest(unittest.TestCase):
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()["preferred_startup_path_left"], None)
self.assertEqual(response.json()["preferred_startup_path_right"], "storage1/docs")
self.assertEqual(response.json()["selected_theme"], "default")
self.assertEqual(response.json()["selected_color_mode"], "dark")
def test_settings_preferred_startup_path_empty_string_resets_only_left_to_null(self) -> None:
self._request(
@@ -135,6 +147,34 @@ class SettingsApiGoldenTest(unittest.TestCase):
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()["preferred_startup_path_left"], None)
self.assertEqual(response.json()["preferred_startup_path_right"], "storage1/docs")
self.assertEqual(response.json()["selected_theme"], "default")
self.assertEqual(response.json()["selected_color_mode"], "dark")
def test_settings_selected_theme_persistence(self) -> None:
response = self._request("POST", "/api/settings", {"selected_theme": "default"})
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()["selected_theme"], "default")
self.assertEqual(response.json()["selected_color_mode"], "dark")
def test_settings_selected_color_mode_persistence(self) -> None:
response = self._request("POST", "/api/settings", {"selected_color_mode": "light"})
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()["selected_theme"], "default")
self.assertEqual(response.json()["selected_color_mode"], "light")
def test_settings_rejects_invalid_selected_theme(self) -> None:
response = self._request("POST", "/api/settings", {"selected_theme": "unknown"})
self.assertEqual(response.status_code, 400)
self.assertEqual(response.json()["error"]["code"], "invalid_request")
def test_settings_rejects_invalid_selected_color_mode(self) -> None:
response = self._request("POST", "/api/settings", {"selected_color_mode": "sepia"})
self.assertEqual(response.status_code, 400)
self.assertEqual(response.json()["error"]["code"], "invalid_request")
def test_settings_preferred_startup_path_left_rejects_file_path(self) -> None:
response = self._request("POST", "/api/settings", {"preferred_startup_path_left": "storage1/file.txt"})