diff --git a/tests/test_view.py b/tests/test_view.py index 2b6226f..943e02d 100644 --- a/tests/test_view.py +++ b/tests/test_view.py @@ -544,6 +544,54 @@ def test_on_action_cut(copy_mock, view, item): assert view.undo_stack.isClean() is False +def test_on_action_reset_scale(view, item): + view.scene.addItem(item) + item.setScale(2) + item.setSelected(True) + view.on_action_reset_scale() + assert item.scale() == 1 + + +def test_on_action_reset_rotation(view, item): + view.scene.addItem(item) + item.setRotation(90) + item.setSelected(True) + view.on_action_reset_rotation() + assert item.rotation() == 0 + + +def test_on_action_reset_flip(view, item): + view.scene.addItem(item) + item.do_flip() + item.setSelected(True) + view.on_action_reset_flip() + assert item.flip() == 1 + + +def test_on_action_reset_crop(view, item): + view.scene.addItem(item) + item.crop = QtCore.QRectF(2, 2, 10, 10) + assert item.crop == QtCore.QRectF(2, 2, 10, 10) + item.setSelected(True) + view.on_action_reset_crop() + assert item.crop == QtCore.QRectF(0, 0, 0, 0) + + +def test_on_action_reset_transforms(view, item): + view.scene.addItem(item) + item.crop = QtCore.QRectF(2, 2, 10, 10) + item.do_flip() + item.setRotation(90) + item.setScale(2) + assert item.crop == QtCore.QRectF(2, 2, 10, 10) + item.setSelected(True) + view.on_action_reset_transforms() + assert item.crop == QtCore.QRectF(0, 0, 0, 0) + assert item.flip() == 1 + assert item.rotation() == 0 + assert item.scale() == 1 + + @patch('PyQt6.QtWidgets.QWidget.create') @patch('PyQt6.QtWidgets.QWidget.destroy') @patch('PyQt6.QtWidgets.QWidget.show') @@ -619,6 +667,20 @@ def test_on_action_move_window_when_scene(cursor_mock, view): assert view.event_start == QtCore.QPointF(10.0, 20.0) +def test_on_action_select_all(view, item): + view.scene.addItem(item) + item.setSelected(False) + view.on_action_select_all() + assert item.isSelected() is True + + +def test_on_action_deselect_all(view, item): + view.scene.addItem(item) + item.setSelected(True) + view.on_action_deselect_all() + assert item.isSelected() is False + + def test_on_action_delete_items(view, item): view.scene.cancel_crop_mode = MagicMock() view.scene.addItem(item) diff --git a/tests/widgets/test_welcome_overlay.py b/tests/widgets/test_welcome_overlay.py index 28e2109..7e75562 100644 --- a/tests/widgets/test_welcome_overlay.py +++ b/tests/widgets/test_welcome_overlay.py @@ -1,8 +1,13 @@ -from unittest.mock import MagicMock +from unittest.mock import MagicMock, patch -from PyQt6 import QtCore +from PyQt6 import QtCore, QtWidgets -from beeref.widgets.welcome_overlay import RecentFilesModel +from beeref.view import BeeGraphicsView +from beeref.widgets.welcome_overlay import ( + RecentFilesModel, + RecentFilesView, + WelcomeOverlay, +) def test_recent_files_model_rowcount(view): @@ -23,3 +28,44 @@ def test_recent_files_model_data_fontrole(view): index.row.return_value = 1 font = model.data(index, QtCore.Qt.ItemDataRole.FontRole) assert font.underline() is True + + +@patch('beeref.widgets.welcome_overlay.BeeSettings.get_recent_files', + return_value=[]) +def test_welcome_overlay_when_no_recent_files(qapp): + parent = QtWidgets.QMainWindow() + view = BeeGraphicsView(qapp, parent) + overlay = WelcomeOverlay(view) + overlay.show() + assert overlay.layout.indexOf(overlay.files_layout) < 0 + + +def test_recent_files_view_size_hint(qapp): + parent = QtWidgets.QMainWindow() + files_view = RecentFilesView(parent) + + files_view.sizeHintForRow = lambda i: 10 + i + files_view.sizeHintForColumn = lambda i: 50 + i + files_view.update_files(['foo.png', 'bar.png']) + assert files_view.sizeHint() == QtCore.QSize(53, 25) + + +@patch('beeref.widgets.welcome_overlay.BeeSettings.get_recent_files', + return_value=['foo.bee', 'bar.bee']) +def test_welcome_overlay_when_recent_files(qapp): + parent = QtWidgets.QMainWindow() + view = BeeGraphicsView(qapp, parent) + overlay = WelcomeOverlay(view) + overlay.show() + assert overlay.layout.indexOf(overlay.files_layout) == 0 + + +@patch('PyQt6.QtWidgets.QGraphicsView.mousePressEvent') +def test_mouse_press_when_move_window_active(mouse_event_mock, qapp): + parent = QtWidgets.QMainWindow() + view = BeeGraphicsView(qapp, parent) + overlay = WelcomeOverlay(view) + overlay.movewin_active = True + overlay.mousePressEvent(MagicMock()) + assert overlay.movewin_active is False + mouse_event_mock.assert_not_called()