forked from openlp/openlp
added actionList tests; removed useless test
This commit is contained in:
parent
d30cc33f86
commit
269e5f5901
@ -322,6 +322,7 @@ class ActionList(object):
|
||||
ActionList.shortcut_map[shortcuts[0]] = actions
|
||||
else:
|
||||
shortcuts.remove(shortcuts[0])
|
||||
|
||||
action.setShortcuts([QtGui.QKeySequence(shortcut) for shortcut in shortcuts])
|
||||
|
||||
def remove_action(self, action, category=None):
|
||||
@ -350,7 +351,7 @@ class ActionList(object):
|
||||
|
||||
def add_category(self, name, weight):
|
||||
"""
|
||||
Add an empty category to the list of categories. This is ony convenient for categories with a given weight.
|
||||
Add an empty category to the list of categories. This is only convenient for categories with a given weight.
|
||||
|
||||
``name``
|
||||
The category's name.
|
||||
@ -403,15 +404,15 @@ class ActionList(object):
|
||||
``action``
|
||||
The action which wants to use a particular shortcut.
|
||||
"""
|
||||
local = action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]
|
||||
local_context = action.shortcutContext() not in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]
|
||||
affected_actions = []
|
||||
if local:
|
||||
if local_context:
|
||||
affected_actions = filter(
|
||||
lambda a: isinstance(a, QtGui.QAction), self.get_all_child_objects(action.parent()))
|
||||
for existing_action in existing_actions:
|
||||
if action is existing_action:
|
||||
continue
|
||||
if not local or existing_action in affected_actions:
|
||||
if not local_context or existing_action in affected_actions:
|
||||
return False
|
||||
if existing_action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]:
|
||||
return False
|
||||
|
@ -1,10 +1,13 @@
|
||||
"""
|
||||
Package to test the openlp.core.utils.actions package.
|
||||
"""
|
||||
import os
|
||||
from tempfile import mkstemp
|
||||
from unittest import TestCase
|
||||
|
||||
from mock import patch
|
||||
from PyQt4 import QtGui, QtCore
|
||||
|
||||
from openlp.core.lib import Settings
|
||||
from openlp.core.utils import ActionList
|
||||
|
||||
|
||||
@ -15,8 +18,107 @@ class TestActionList(TestCase):
|
||||
Prepare the tests
|
||||
"""
|
||||
self.action_list = ActionList.get_instance()
|
||||
self.settings = Settings()
|
||||
fd, self.ini_file = mkstemp(u'.ini')
|
||||
self.settings.set_filename(self.ini_file)
|
||||
self.settings.beginGroup(u'shortcuts')
|
||||
|
||||
def test_(self):
|
||||
def tearDown(self):
|
||||
"""
|
||||
Clean up
|
||||
"""
|
||||
pass
|
||||
self.settings.endGroup()
|
||||
os.unlink(self.ini_file)
|
||||
|
||||
def test_add_action_same_parent(self):
|
||||
"""
|
||||
ActionList test - Tests the add_action method. The actions have the same parent, the same shortcuts and both
|
||||
have the QtCore.Qt.WindowShortcut shortcut context set.
|
||||
"""
|
||||
# GIVEN: Two actions with the same shortcuts.
|
||||
parent = QtCore.QObject()
|
||||
action = QtGui.QAction(parent)
|
||||
action.setObjectName(u'action')
|
||||
action_with_same_shortcuts = QtGui.QAction(parent)
|
||||
action_with_same_shortcuts.setObjectName(u'action_with_same_shortcuts')
|
||||
# Add default shortcuts to Settings class.
|
||||
default_shortcuts = {
|
||||
u'shortcuts/action': [QtGui.QKeySequence(u'v'), QtGui.QKeySequence(u'c')],
|
||||
u'shortcuts/action_with_same_shortcuts': [QtGui.QKeySequence(u'v'), QtGui.QKeySequence(u'c')]
|
||||
}
|
||||
Settings.extend_default_settings(default_shortcuts)
|
||||
|
||||
# WHEN: Add the two actions to the action list.
|
||||
self.action_list.add_action(action, u'example_category')
|
||||
self.action_list.add_action(action_with_same_shortcuts, u'example_category')
|
||||
# Remove the actions again.
|
||||
self.action_list.remove_action(action, u'example_category')
|
||||
self.action_list.remove_action(action_with_same_shortcuts, u'example_category')
|
||||
|
||||
# THEN: As both actions have the same shortcuts, they should be removed from one action.
|
||||
assert len(action.shortcuts()) == 2, u'The action should have two shortcut assigned.'
|
||||
assert len(action_with_same_shortcuts.shortcuts()) == 0, u'The action should not have a shortcut assigned.'
|
||||
|
||||
def test_add_action_different_parent(self):
|
||||
"""
|
||||
ActionList test - Tests the add_action method. The actions have the different parent, the same shortcuts and
|
||||
both have the QtCore.Qt.WindowShortcut shortcut context set.
|
||||
"""
|
||||
# GIVEN: Two actions with the same shortcuts.
|
||||
parent = QtCore.QObject()
|
||||
action = QtGui.QAction(parent)
|
||||
action.setObjectName(u'action2')
|
||||
second_parent = QtCore.QObject()
|
||||
action_with_same_shortcuts = QtGui.QAction(second_parent)
|
||||
action_with_same_shortcuts.setObjectName(u'action_with_same_shortcuts2')
|
||||
# Add default shortcuts to Settings class.
|
||||
default_shortcuts = {
|
||||
u'shortcuts/action2': [QtGui.QKeySequence(u'v'), QtGui.QKeySequence(u'c')],
|
||||
u'shortcuts/action_with_same_shortcuts2': [QtGui.QKeySequence(u'v'), QtGui.QKeySequence(u'c')]
|
||||
}
|
||||
Settings.extend_default_settings(default_shortcuts)
|
||||
|
||||
# WHEN: Add the two actions to the action list.
|
||||
self.action_list.add_action(action, u'example_category')
|
||||
self.action_list.add_action(action_with_same_shortcuts, u'example_category')
|
||||
# Remove the actions again.
|
||||
self.action_list.remove_action(action, u'example_category')
|
||||
self.action_list.remove_action(action_with_same_shortcuts, u'example_category')
|
||||
|
||||
# THEN: As both actions have the same shortcuts, they should be removed from one action.
|
||||
assert len(action.shortcuts()) == 2, u'The action should have two shortcut assigned.'
|
||||
assert len(action_with_same_shortcuts.shortcuts()) == 0, u'The action should not have a shortcut assigned.'
|
||||
|
||||
def test_add_action_different_context(self):
|
||||
"""
|
||||
ActionList test - Tests the add_action method. The actions have the different parent, the same shortcuts and
|
||||
both have the QtCore.Qt.WidgetShortcut shortcut context set.
|
||||
"""
|
||||
# GIVEN: Two actions with the same shortcuts.
|
||||
parent = QtCore.QObject()
|
||||
action = QtGui.QAction(parent)
|
||||
action.setObjectName(u'action3')
|
||||
action.setShortcutContext(QtCore.Qt.WidgetShortcut)
|
||||
second_parent = QtCore.QObject()
|
||||
action_with_same_shortcuts = QtGui.QAction(second_parent)
|
||||
action_with_same_shortcuts.setObjectName(u'action_with_same_shortcuts3')
|
||||
action_with_same_shortcuts.setShortcutContext(QtCore.Qt.WidgetShortcut)
|
||||
# Add default shortcuts to Settings class.
|
||||
default_shortcuts = {
|
||||
u'shortcuts/action3': [QtGui.QKeySequence(u'1'), QtGui.QKeySequence(u'2')],
|
||||
u'shortcuts/action_with_same_shortcuts3': [QtGui.QKeySequence(u'1'), QtGui.QKeySequence(u'2')]
|
||||
}
|
||||
Settings.extend_default_settings(default_shortcuts)
|
||||
|
||||
# WHEN: Add the two actions to the action list.
|
||||
self.action_list.add_action(action, u'example_category2')
|
||||
self.action_list.add_action(action_with_same_shortcuts, u'example_category2')
|
||||
# Remove the actions again.
|
||||
self.action_list.remove_action(action, u'example_category2')
|
||||
self.action_list.remove_action(action_with_same_shortcuts, u'example_category2')
|
||||
|
||||
# THEN: Both action should keep their shortcuts.
|
||||
assert len(action.shortcuts()) == 2, u'The action should have two shortcut assigned.'
|
||||
assert len(action_with_same_shortcuts.shortcuts()) == 2, u'The action should have two shortcuts assigned.'
|
||||
|
||||
|
||||
|
@ -1,26 +0,0 @@
|
||||
"""
|
||||
Functional tests for the Language Manager.
|
||||
"""
|
||||
|
||||
from unittest import TestCase
|
||||
|
||||
from mock import patch
|
||||
|
||||
from openlp.core.utils import LanguageManager
|
||||
|
||||
class TestLanguageManager(TestCase):
|
||||
"""
|
||||
A test suite to test out various methods around the LanguageManager class.
|
||||
"""
|
||||
def get_translator_linux_test(self):
|
||||
"""
|
||||
"""
|
||||
with patch(u'openlp.core.utils.sys.platform') as mocked_platform:
|
||||
# GIVEN: We are on linux.
|
||||
mocked_platform.return_value = u'linux2'
|
||||
|
||||
app_translator, default_translator = LanguageManager.get_translator('en')
|
||||
|
||||
assert not app_translator.isEmpty(), u'The application translator should not be empty'
|
||||
assert not default_translator.isEmpty(), u'The default translator should not be empty'
|
||||
|
Loading…
Reference in New Issue
Block a user