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
|
||||
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
|
||||
for tab_index in range(self.stacked_layout.count()):
|
||||
# Get the widget
|
||||
|
@ -29,10 +29,10 @@
|
||||
"""
|
||||
Package to test the openlp.core.ui.settingsform package.
|
||||
"""
|
||||
from PyQt4 import QtGui
|
||||
from unittest import TestCase
|
||||
|
||||
from openlp.core.common import Registry
|
||||
from openlp.core.ui.generaltab import GeneralTab
|
||||
from openlp.core.ui.settingsform import SettingsForm
|
||||
|
||||
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:
|
||||
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)
|
||||
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:
|
||||
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)
|
||||
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