forked from openlp/openlp
[fix 1385979] Check if the item is valid first
This commit is contained in:
parent
c19613ce82
commit
ae7c863333
@ -143,6 +143,9 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog, RegistryProperties):
|
|||||||
"""
|
"""
|
||||||
# Get the item we clicked on
|
# Get the item we clicked on
|
||||||
list_item = self.setting_list_widget.item(item_index)
|
list_item = self.setting_list_widget.item(item_index)
|
||||||
|
# Quick exit to the left if the item doesn't exist (maybe -1?)
|
||||||
|
if not list_item:
|
||||||
|
return
|
||||||
# Loop through the list of tabs in the stacked layout
|
# Loop through the list of tabs in the stacked layout
|
||||||
for tab_index in range(self.stacked_layout.count()):
|
for tab_index in range(self.stacked_layout.count()):
|
||||||
# Get the widget
|
# Get the widget
|
||||||
|
@ -29,10 +29,10 @@
|
|||||||
"""
|
"""
|
||||||
Package to test the openlp.core.ui.settingsform package.
|
Package to test the openlp.core.ui.settingsform package.
|
||||||
"""
|
"""
|
||||||
|
from PyQt4 import QtGui
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
from openlp.core.common import Registry
|
from openlp.core.common import Registry
|
||||||
from openlp.core.ui.generaltab import GeneralTab
|
|
||||||
from openlp.core.ui.settingsform import SettingsForm
|
from openlp.core.ui.settingsform import SettingsForm
|
||||||
|
|
||||||
from tests.functional import MagicMock, patch
|
from tests.functional import MagicMock, patch
|
||||||
@ -62,7 +62,7 @@ class TestSettingsForm(TestCase):
|
|||||||
patch.object(settings_form.setting_list_widget, 'addItem') as mocked_add_item:
|
patch.object(settings_form.setting_list_widget, 'addItem') as mocked_add_item:
|
||||||
settings_form.insert_tab(general_tab, is_visible=True)
|
settings_form.insert_tab(general_tab, is_visible=True)
|
||||||
|
|
||||||
# THEN: Stuff should happen
|
# THEN: The general tab should have been inserted into the stacked layout and an item inserted into the list
|
||||||
mocked_add_widget.assert_called_with(general_tab)
|
mocked_add_widget.assert_called_with(general_tab)
|
||||||
self.assertEqual(1, mocked_add_item.call_count, 'addItem should have been called')
|
self.assertEqual(1, mocked_add_item.call_count, 'addItem should have been called')
|
||||||
|
|
||||||
@ -80,6 +80,25 @@ class TestSettingsForm(TestCase):
|
|||||||
patch.object(settings_form.setting_list_widget, 'addItem') as mocked_add_item:
|
patch.object(settings_form.setting_list_widget, 'addItem') as mocked_add_item:
|
||||||
settings_form.insert_tab(general_tab, is_visible=False)
|
settings_form.insert_tab(general_tab, is_visible=False)
|
||||||
|
|
||||||
# THEN: Stuff should happen
|
# THEN: The general tab should have been inserted, but no list item should have been inserted into the list
|
||||||
mocked_add_widget.assert_called_with(general_tab)
|
mocked_add_widget.assert_called_with(general_tab)
|
||||||
self.assertEqual(0, mocked_add_item.call_count, 'addItem should not have been called')
|
self.assertEqual(0, mocked_add_item.call_count, 'addItem should not have been called')
|
||||||
|
|
||||||
|
def list_item_changed_invalid_item_test(self):
|
||||||
|
"""
|
||||||
|
Test that the list_item_changed() slot handles a non-existent item
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked tab inserted into a Settings Form
|
||||||
|
settings_form = SettingsForm(None)
|
||||||
|
general_tab = QtGui.QWidget(None)
|
||||||
|
general_tab.tab_title = 'mock'
|
||||||
|
general_tab.tab_title_visible = 'Mock'
|
||||||
|
general_tab.icon_path = ':/icon/openlp-logo-16x16.png'
|
||||||
|
settings_form.insert_tab(general_tab, is_visible=True)
|
||||||
|
|
||||||
|
with patch.object(settings_form.stacked_layout, 'count') as mocked_count:
|
||||||
|
# WHEN: The list_item_changed() slot is called with an invalid item index
|
||||||
|
settings_form.list_item_changed(100)
|
||||||
|
|
||||||
|
# THEN: The rest of the method should not have been called
|
||||||
|
self.assertEqual(0, mocked_count.call_count, 'The count method of the stacked layout should not be called')
|
||||||
|
Loading…
Reference in New Issue
Block a user