diff --git a/tests/test_asset_drop_mixin.py b/tests/test_asset_drop_mixin.py index 09a6f89..692677b 100644 --- a/tests/test_asset_drop_mixin.py +++ b/tests/test_asset_drop_mixin.py @@ -220,7 +220,7 @@ class TestDropEvent: # Should not create any elements assert len(page.layout.elements) == 0 - def test_drop_updates_existing_placeholder(self, qtbot): + def test_drop_updates_existing_placeholder(self, qtbot, tmp_path): """Test dropping on existing placeholder updates it with image""" widget = TestAssetDropWidget() qtbot.addWidget(widget) @@ -229,6 +229,10 @@ class TestDropEvent: widget.update = Mock() + # Create a real test image file + test_image = tmp_path / "test_image.jpg" + test_image.write_bytes(b'\xFF\xD8\xFF\xE0' + b'\x00' * 100) # Minimal JPEG header + # Setup project with page containing placeholder mock_window = Mock() mock_window.project = Project(name="Test") @@ -253,7 +257,7 @@ class TestDropEvent: widget._get_element_at = Mock(return_value=placeholder) mime_data = QMimeData() - mime_data.setUrls([QUrl.fromLocalFile("/path/to/image.jpg")]) + mime_data.setUrls([QUrl.fromLocalFile(str(test_image))]) event = Mock() event.mimeData = Mock(return_value=mime_data) @@ -265,7 +269,8 @@ class TestDropEvent: # Should replace placeholder with ImageData assert len(page.layout.elements) == 1 assert isinstance(page.layout.elements[0], ImageData) - assert page.layout.elements[0].image_path == "/path/to/image.jpg" + # Image path should now be in assets folder (imported) + assert page.layout.elements[0].image_path.startswith("assets/") @patch('pyPhotoAlbum.mixins.asset_drop.AddElementCommand') def test_drop_multiple_files(self, mock_cmd_class, qtbot): diff --git a/tests/test_view_ops_mixin.py b/tests/test_view_ops_mixin.py index d842555..afa3170 100644 --- a/tests/test_view_ops_mixin.py +++ b/tests/test_view_ops_mixin.py @@ -22,6 +22,13 @@ class TestViewWindow(ViewOperationsMixin, QMainWindow): self.gl_widget.height = Mock(return_value=600) self.project = Mock(spec=Project) self.project.working_dpi = 300 + # Add snapping attributes + self.project.snap_to_grid = False + self.project.snap_to_edges = True + self.project.snap_to_guides = True + self.project.show_snap_lines = True + self.project.grid_size_mm = 10.0 + self.project.snap_threshold_mm = 5.0 self._update_view_called = False self._status_message = None @@ -125,15 +132,11 @@ class TestSnappingToggles: window = TestViewWindow() qtbot.addWidget(window) - layout = PageLayout() - layout.snapping_system.snap_to_grid = False - page = Mock() - page.layout = layout - window._current_page = page + window.project.snap_to_grid = False window.toggle_grid_snap() - assert layout.snapping_system.snap_to_grid is True + assert window.project.snap_to_grid is True assert "enabled" in window._status_message.lower() assert window._update_view_called @@ -141,15 +144,11 @@ class TestSnappingToggles: window = TestViewWindow() qtbot.addWidget(window) - layout = PageLayout() - layout.snapping_system.snap_to_grid = True - page = Mock() - page.layout = layout - window._current_page = page + window.project.snap_to_grid = True window.toggle_grid_snap() - assert layout.snapping_system.snap_to_grid is False + assert window.project.snap_to_grid is False assert "disabled" in window._status_message.lower() assert window._update_view_called @@ -157,7 +156,7 @@ class TestSnappingToggles: window = TestViewWindow() qtbot.addWidget(window) - window._current_page = None + window.project = None window.toggle_grid_snap() @@ -167,15 +166,11 @@ class TestSnappingToggles: window = TestViewWindow() qtbot.addWidget(window) - layout = PageLayout() - layout.snapping_system.snap_to_edges = False - page = Mock() - page.layout = layout - window._current_page = page + window.project.snap_to_edges = False window.toggle_edge_snap() - assert layout.snapping_system.snap_to_edges is True + assert window.project.snap_to_edges is True assert "enabled" in window._status_message.lower() assert window._update_view_called @@ -183,75 +178,55 @@ class TestSnappingToggles: window = TestViewWindow() qtbot.addWidget(window) - layout = PageLayout() - layout.snapping_system.snap_to_edges = True - page = Mock() - page.layout = layout - window._current_page = page + window.project.snap_to_edges = True window.toggle_edge_snap() - assert layout.snapping_system.snap_to_edges is False + assert window.project.snap_to_edges is False assert "disabled" in window._status_message.lower() def test_toggle_guide_snap_enable(self, qtbot): window = TestViewWindow() qtbot.addWidget(window) - layout = PageLayout() - layout.snapping_system.snap_to_guides = False - page = Mock() - page.layout = layout - window._current_page = page + window.project.snap_to_guides = False window.toggle_guide_snap() - assert layout.snapping_system.snap_to_guides is True + assert window.project.snap_to_guides is True assert "enabled" in window._status_message.lower() def test_toggle_guide_snap_disable(self, qtbot): window = TestViewWindow() qtbot.addWidget(window) - layout = PageLayout() - layout.snapping_system.snap_to_guides = True - page = Mock() - page.layout = layout - window._current_page = page + window.project.snap_to_guides = True window.toggle_guide_snap() - assert layout.snapping_system.snap_to_guides is False + assert window.project.snap_to_guides is False assert "disabled" in window._status_message.lower() def test_toggle_snap_lines_show(self, qtbot): window = TestViewWindow() qtbot.addWidget(window) - layout = PageLayout() - layout.show_snap_lines = False - page = Mock() - page.layout = layout - window._current_page = page + window.project.show_snap_lines = False window.toggle_snap_lines() - assert layout.show_snap_lines is True + assert window.project.show_snap_lines is True assert "visible" in window._status_message.lower() def test_toggle_snap_lines_hide(self, qtbot): window = TestViewWindow() qtbot.addWidget(window) - layout = PageLayout() - layout.show_snap_lines = True - page = Mock() - page.layout = layout - window._current_page = page + window.project.show_snap_lines = True window.toggle_snap_lines() - assert layout.show_snap_lines is False + assert window.project.show_snap_lines is False assert "hidden" in window._status_message.lower() @@ -355,11 +330,11 @@ class TestGridSettingsDialog: """Test grid settings dialog""" def test_set_grid_size_no_page(self, qtbot): - """Test set_grid_size with no current page""" + """Test set_grid_size with no project""" window = TestViewWindow() qtbot.addWidget(window) - window._current_page = None + window.project = None window.set_grid_size() @@ -396,61 +371,45 @@ class TestLayoutTabDelegation: window = TestViewWindow() qtbot.addWidget(window) - layout = PageLayout() - layout.snapping_system.snap_to_grid = False - page = Mock() - page.layout = layout - window._current_page = page + window.project.snap_to_grid = False window.layout_toggle_grid_snap() # Should delegate to toggle_grid_snap - assert layout.snapping_system.snap_to_grid is True + assert window.project.snap_to_grid is True assert window._update_view_called def test_layout_toggle_edge_snap_delegates(self, qtbot): window = TestViewWindow() qtbot.addWidget(window) - layout = PageLayout() - layout.snapping_system.snap_to_edges = False - page = Mock() - page.layout = layout - window._current_page = page + window.project.snap_to_edges = False window.layout_toggle_edge_snap() - assert layout.snapping_system.snap_to_edges is True + assert window.project.snap_to_edges is True assert window._update_view_called def test_layout_toggle_guide_snap_delegates(self, qtbot): window = TestViewWindow() qtbot.addWidget(window) - layout = PageLayout() - layout.snapping_system.snap_to_guides = False - page = Mock() - page.layout = layout - window._current_page = page + window.project.snap_to_guides = False window.layout_toggle_guide_snap() - assert layout.snapping_system.snap_to_guides is True + assert window.project.snap_to_guides is True assert window._update_view_called def test_layout_toggle_snap_lines_delegates(self, qtbot): window = TestViewWindow() qtbot.addWidget(window) - layout = PageLayout() - layout.show_snap_lines = False - page = Mock() - page.layout = layout - window._current_page = page + window.project.show_snap_lines = False window.layout_toggle_snap_lines() - assert layout.show_snap_lines is True + assert window.project.show_snap_lines is True assert window._update_view_called def test_layout_set_grid_size_delegates(self, qtbot):