refinements
Python CI / test (3.12) (push) Successful in 8m32s
Python CI / test (3.13) (push) Successful in 22m59s

This commit is contained in:
2025-11-09 21:17:57 +01:00
parent a552eb0951
commit 0f9e38eb7c
6 changed files with 41 additions and 610 deletions
+18 -7
View File
@@ -29,12 +29,18 @@ class TestSettingsOverlay(unittest.TestCase):
self.reader = EbookReader(page_size=(800, 1200))
# Load a test EPUB - use any available EPUB in test data
# Load a test EPUB - use a larger EPUB for spacing tests
epub_dir = Path(__file__).parent / 'data' / 'library-epub'
epubs = list(epub_dir.glob('*.epub'))
if not epubs:
self.skipTest("No test EPUB files available")
# Prefer larger EPUBs for better testing of spacing changes
# Skip minimal-test.epub as it has too little content
epubs = [e for e in epubs if 'minimal' not in e.name]
if not epubs:
epubs = list(epub_dir.glob('*.epub'))
test_epub = epubs[0]
# Debug logging
@@ -175,9 +181,12 @@ class TestSettingsOverlay(unittest.TestCase):
self.reader.open_settings_overlay()
initial_font_scale = self.reader.base_font_scale
# Get overlay reader to query button positions
overlay_manager = self.reader.overlay_manager
overlay_reader = overlay_manager._overlay_reader
# Get overlay reader to query button positions from the active overlay sub-application
overlay_subapp = self.reader._active_overlay
if not overlay_subapp:
self.skipTest("No active overlay sub-application")
overlay_reader = overlay_subapp._overlay_reader
if not overlay_reader or not overlay_reader.manager:
self.skipTest("Overlay reader not available for querying")
@@ -302,15 +311,17 @@ class TestSettingsOverlay(unittest.TestCase):
# Open overlay
self.reader.open_settings_overlay()
# Access refresh method through overlay manager
overlay_manager = self.reader.overlay_manager
# Access refresh method through active overlay sub-application
overlay_subapp = self.reader._active_overlay
if not overlay_subapp:
self.skipTest("No active overlay sub-application")
# Change a setting programmatically
self.reader.increase_font_size()
new_page = self.reader.get_current_page(include_highlights=False)
# Refresh overlay
refreshed_image = overlay_manager.refresh_settings_overlay(
refreshed_image = overlay_subapp.refresh(
updated_base_page=new_page,
font_scale=self.reader.base_font_scale,
line_spacing=self.reader.page_style.line_spacing,
+12 -8
View File
@@ -44,9 +44,14 @@ class TestTOCOverlay(unittest.TestCase):
self.reader.close()
def test_overlay_manager_initialization(self):
"""Test that overlay manager is properly initialized"""
self.assertIsNotNone(self.reader.overlay_manager)
self.assertEqual(self.reader.overlay_manager.page_size, (800, 1200))
"""Test that overlay sub-applications are properly initialized"""
# Check that overlay sub-applications exist
self.assertIsNotNone(self.reader._overlay_subapps)
self.assertIn(OverlayState.TOC, self.reader._overlay_subapps)
self.assertIn(OverlayState.SETTINGS, self.reader._overlay_subapps)
self.assertIn(OverlayState.NAVIGATION, self.reader._overlay_subapps)
# Initially no overlay should be active
self.assertFalse(self.reader.is_overlay_open())
self.assertEqual(self.reader.get_overlay_state(), OverlayState.NONE)
@@ -298,13 +303,12 @@ class TestOverlayRendering(unittest.TestCase):
self.assertIsNotNone(html)
self.assertIn("Table of Contents", html)
# Render HTML to image using overlay manager
overlay_manager = self.reader.overlay_manager
image = overlay_manager.render_html_to_image(html)
# Open the TOC overlay which internally renders HTML to image
overlay_image = self.reader.open_toc_overlay()
# Should produce valid image
self.assertIsNotNone(image)
self.assertEqual(image.size, (800, 1200))
self.assertIsNotNone(overlay_image)
self.assertEqual(overlay_image.size, (800, 1200))
class TestTOCPagination(unittest.TestCase):