beeref/tests/widgets/test_welcome_overlay.py

83 lines
2.7 KiB
Python

from unittest.mock import MagicMock, patch
from PyQt6 import QtCore, QtWidgets
from beeref.view import BeeGraphicsView
from beeref.widgets.welcome_overlay import (
RecentFilesModel,
RecentFilesView,
WelcomeOverlay,
)
def test_recent_files_model_rowcount(view):
model = RecentFilesModel(['foo.png', 'bar.png'])
assert model.rowCount(None) == 2
def test_recent_files_model_data_diplayrole(view):
model = RecentFilesModel(['foo.png', 'bar.png'])
index = MagicMock()
index.row.return_value = 1
assert model.data(index, QtCore.Qt.ItemDataRole.DisplayRole) == 'bar.png'
def test_recent_files_model_data_fontrole(view):
model = RecentFilesModel(['foo.png', 'bar.png'])
index = MagicMock()
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_widget) < 0
def test_recent_files_view_size_hint(qapp):
parent = QtWidgets.QMainWindow()
files_view = RecentFilesView(parent, None)
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)
def test_recent_files_view_on_click(qapp):
parent = QtWidgets.QMainWindow()
view = BeeGraphicsView(qapp, parent)
view.open_from_file = MagicMock()
overlay = WelcomeOverlay(view)
overlay.files_view.update_files(['foo.bee', 'bar.bee'])
overlay.files_view.on_clicked(
RecentFilesModel(
['foo.bee', 'bar.bee']).createIndex(1, 0))
view.open_from_file.assert_called_once_with('bar.bee')
@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_widget) == 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()