beeref/tests/actions/test_actions.py
2024-01-05 14:14:25 +01:00

159 lines
5.3 KiB
Python

from unittest.mock import patch
from PyQt6 import QtGui
from beeref.actions.actions import Action, ActionList
def test_action_equals_true():
action1 = Action({'id': 'foo', 'text': 'Foo', 'shortcuts': ['Ctrl+R']})
action2 = Action({'id': 'foo', 'text': 'Bar', 'shortcuts': ['Ctrl+F']})
assert action1 == action2
def test_action_equals_false():
action1 = Action({'id': 'foo', 'text': 'Foo', 'shortcuts': ['Ctrl+R']})
action2 = Action({'id': 'Bar', 'text': 'Foo', 'shortcuts': ['Ctrl+R']})
assert not action1 == action2
def test_action_on_restore_defaults(kbsettings, view):
action = Action({'id': 'foo', 'shortcuts': ['Ctrl+R']})
action.qaction = QtGui.QAction('foo', view)
action.on_restore_defaults()
assert action.qaction.shortcuts() == ['Ctrl+R']
def test_action_on_restore_defaults_when_no_defaults(kbsettings, view):
action = Action({'id': 'foo'})
action.qaction = QtGui.QAction('foo', view)
action.qaction.setShortcuts(['Ctrl+R'])
action.on_restore_defaults()
assert action.qaction.shortcuts() == []
def test_action_get_overwritten_shortcuts(kbsettings):
kbsettings.set_shortcuts('Actions', 'foo', ['Alt+O'])
action = Action({'id': 'foo', 'shortcuts': ['Ctrl+F']})
assert action.get_shortcuts() == ['Alt+O']
def test_action_get_shortcuts_gets_default(kbsettings):
action = Action({'id': 'foo', 'shortcuts': ['Ctrl+F']})
assert action.get_shortcuts() == ['Ctrl+F']
def test_action_set_shortcuts_when_no_qaction(kbsettings):
action = Action({'id': 'foo'})
action.qaction = None
action.set_shortcuts(['Ctrl+F'])
assert kbsettings.get_shortcuts('Actions', 'foo') == ['Ctrl+F']
def test_action_set_shortcuts_when_qaction(kbsettings, view):
action = Action({'id': 'foo'})
action.qaction = QtGui.QAction('foo', view)
action.set_shortcuts(['Ctrl+F'])
assert kbsettings.get_shortcuts('Actions', 'foo') == ['Ctrl+F']
assert action.qaction.shortcuts() == ['Ctrl+F']
def test_action_get_qkeysequence_first(kbsettings):
action = Action({'id': 'foo', 'shortcuts': ['Ctrl+F']})
assert action.get_qkeysequence(0) == QtGui.QKeySequence('Ctrl+F')
def test_action_get_qkeysequence_second(kbsettings):
action = Action({'id': 'foo', 'shortcuts': ['Ctrl+F', 'Ctrl+B']})
assert action.get_qkeysequence(1) == QtGui.QKeySequence('Ctrl+B')
def test_action_get_qkeysequence_first_when_not_set(kbsettings):
action = Action({'id': 'foo'})
assert action.get_qkeysequence(0) == QtGui.QKeySequence()
def test_action_get_qkeysequence_second_when_not_set(kbsettings):
action = Action({'id': 'foo', 'shortcuts': ['Ctrl+F']})
assert action.get_qkeysequence(1) == QtGui.QKeySequence()
def test_action_shortcuts_changed_when_not_changed(kbsettings):
action = Action({'id': 'foo', 'shortcuts': ['Ctrl+F']})
assert action.shortcuts_changed() is False
def test_action_shortcuts_changed_when_changed(kbsettings):
action = Action({'id': 'foo', 'shortcuts': ['Ctrl+F']})
kbsettings.set_shortcuts('Actions', 'foo', ['Ctrl+B'])
assert action.shortcuts_changed() is True
def test_action_shortcuts_changed_when_empty(kbsettings):
action = Action({'id': 'foo'})
assert action.shortcuts_changed() is False
def test_action_get_default_shortcut_first():
action = Action({'id': 'foo', 'shortcuts': ['Ctrl+F']})
assert action.get_default_shortcut(0) == 'Ctrl+F'
def test_action_get_default_shortcut_second():
action = Action({'id': 'foo', 'shortcuts': ['Ctrl+F', 'Ctrl+B']})
assert action.get_default_shortcut(1) == 'Ctrl+B'
def test_action_get_default_shortcut_first_when_none_set():
action = Action({'id': 'foo'})
assert action.get_default_shortcut(0) is None
def test_action_get_default_shortcut_second_when_none_set():
action = Action({'id': 'foo', 'shortcuts': ['Ctrl+F']})
assert action.get_default_shortcut(1) is None
@patch('beeref.actions.actions.menu_structure',
[{'menu': 'Foo', 'items': ['bar', 'baz']}])
def test_action_menu_path():
action = Action({'id': 'baz'})
assert action.menu_path == ['Foo']
@patch('beeref.actions.actions.menu_structure',
[{'menu': 'Foo', 'items': [{'menu': 'Bar', 'items': ['baz']}]}])
def test_action_menu_path_with_submenus():
action = Action({'id': 'baz'})
assert action.menu_path == ['Foo', 'Bar']
@patch('beeref.actions.actions.menu_structure',
[{'menu': 'Foo', 'items': '_build_recent_files'}])
def test_action_menu_path_recent_files():
action = Action({'id': 'baz', 'menu_id': '_build_recent_files'})
assert action.menu_path == ['Foo']
@patch('beeref.actions.actions.menu_structure',
[{'menu': 'Foo', 'items': [
{'menu': 'Bar', 'items': '_build_recent_files'}]}])
def test_action_menu_path_recent_files_in_submenu():
action = Action({'id': 'baz', 'menu_id': '_build_recent_files'})
assert action.menu_path == ['Foo', 'Bar']
def test_actionlist_inits_dict():
action1 = Action({'id': 'foo'})
action2 = Action({'id': 'bar'})
actionlist = ActionList([action1, action2])
actionlist['foo'] == action1
actionlist['bar'] == action2
def test_actionlist_acts_as_list():
action1 = Action({'id': 'foo'})
action2 = Action({'id': 'bar'})
actionlist = ActionList([action1, action2])
actionlist[0] == action1
actionlist[1] == action2