Fix up controller tests

This commit is contained in:
Tim Bentley 2013-09-02 21:59:19 +01:00
parent 8ab834c18e
commit e98657d704
3 changed files with 76 additions and 8 deletions

View File

@ -76,14 +76,16 @@ class FormattingTagController(object):
The end html tag. The end html tag.
""" """
if not desc:
pass
for linenumber, html1 in enumerate(self.protected_tags): for linenumber, html1 in enumerate(self.protected_tags):
if self._strip(html1[u'start tag']) == tag: if self._strip(html1[u'start tag']) == tag:
return translate('OpenLP.FormattingTagForm', 'Tag %s already defined.') % tag return translate('OpenLP.FormattingTagForm', 'Tag %s already defined.') % tag
if self._strip(html1[u'desc']) == desc:
return translate('OpenLP.FormattingTagForm', 'Description %s already defined.') % tag
for linenumber, html1 in enumerate(self.custom_tags): for linenumber, html1 in enumerate(self.custom_tags):
if self._strip(html1[u'start tag']) == tag: if self._strip(html1[u'start tag']) == tag:
return translate('OpenLP.FormattingTagForm', 'Tag %s already defined.') % tag return translate('OpenLP.FormattingTagForm', 'Tag %s already defined.') % tag
if self._strip(html1[u'desc']) == desc:
return translate('OpenLP.FormattingTagForm', 'Description %s already defined.') % tag
tag = { tag = {
'desc': desc, 'desc': desc,
'start tag': '{%s}' % tag, 'start tag': '{%s}' % tag,

View File

@ -160,13 +160,18 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog, FormattingTagCont
""" """
This function processes all user edits in the table. It is called on each cell change. This function processes all user edits in the table. It is called on each cell change.
""" """
print (cur_row, cur_col, pre_col, pre_col)
# only process for editable rows # only process for editable rows
if self.tag_table_widget.item(pre_row, 0): if self.tag_table_widget.item(pre_row, 0):
item = self.tag_table_widget.item(pre_row, pre_col) item = self.tag_table_widget.item(pre_row, pre_col)
text = item.text() text = item.text()
errors = None errors = None
if pre_col is EDITCOLUMN.StartHtml: if pre_col is EDITCOLUMN.Description:
if not text:
errors = translate('OpenLP.FormattingTagForm', 'Description is missing')
elif pre_col is EDITCOLUMN.Tag:
if not text:
errors = translate('OpenLP.FormattingTagForm', 'Tag is missing')
elif pre_col is EDITCOLUMN.StartHtml:
# HTML edited # HTML edited
item = self.tag_table_widget.item(pre_row, 3) item = self.tag_table_widget.item(pre_row, 3)
end_html = item.text() end_html = item.text()
@ -184,5 +189,6 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog, FormattingTagCont
if errors: if errors:
QtGui.QMessageBox.warning(self, QtGui.QMessageBox.warning(self,
translate('OpenLP.FormattingTagForm', 'Validation Error'), errors, QtGui.QMessageBox.Ok) translate('OpenLP.FormattingTagForm', 'Validation Error'), errors, QtGui.QMessageBox.Ok)
#self.tag_table_widget.selectRow(pre_row - 1)
self.tag_table_widget.resizeRowsToContents() self.tag_table_widget.resizeRowsToContents()

View File

@ -3,8 +3,6 @@ Package to test the openlp.core.ui.formattingtagscontroller package.
""" """
from unittest import TestCase from unittest import TestCase
from mock import MagicMock, patch
from openlp.core.ui import FormattingTagController from openlp.core.ui import FormattingTagController
@ -17,7 +15,6 @@ class TestFormattingTagController(TestCase):
""" """
Test that the _strip strips the correct chars Test that the _strip strips the correct chars
""" """
# GIVEN: An instance of the Formatting Tag Form and a string containing a tag # GIVEN: An instance of the Formatting Tag Form and a string containing a tag
tag = u'{tag}' tag = u'{tag}'
@ -25,4 +22,67 @@ class TestFormattingTagController(TestCase):
result = self.services._strip(tag) result = self.services._strip(tag)
# THEN: The tag should be returned with the wrappers removed. # THEN: The tag should be returned with the wrappers removed.
self.assertEqual(result, u'tag', u'FormattingTagForm._strip should return u\'tag\' when called with u\'{tag}\'') self.assertEqual(result, u'tag', u'FormattingTagForm._strip should return u\'tag\' when called with u\'{tag}\'')
def test_end_tag_changed_processes_correctly(self):
"""
Test that the end html tags are generated correctly
"""
# GIVEN: A list of start , end tags and error messages
tests = []
test = {'start': '<b>', 'end': None, 'gen': '</b>', 'valid': None}
tests.append(test)
test = {'start': '<i>', 'end': '</i>', 'gen': None, 'valid': None}
tests.append(test)
test = {'start': '<b>', 'end': '</i>', 'gen': None,
'valid': 'End tag </b> does not match end tag for start tag <b>'}
tests.append(test)
# WHEN: Testing each one of them in turn
for test in tests:
error, result = self.services.end_tag_changed(test['start'], test['end'])
# THEN: The result should match the predetermined value.
self.assertTrue(result == test['gen'],
'Function should handle end tag correctly : %s and %s for %s ' % (test['gen'], result, test['start']))
self.assertTrue(error == test['valid'],
'Function should not generate unexpected error messages : %s ' % error)
def test_start_tag_changed_processes_correctly(self):
"""
Test that the end html tags are generated correctly
"""
# GIVEN: A list of start , end tags and error messages
tests = []
test = {'start': '<b>', 'end': '', 'gen': '</b>', 'valid': None}
tests.append(test)
test = {'start': '<i>', 'end': '</i>', 'gen': None, 'valid': None}
tests.append(test)
test = {'start': 'superfly', 'end': '', 'gen': None, 'valid': 'Start tag superfly is not valid HTML'}
tests.append(test)
# WHEN: Testing each one of them in turn
for test in tests:
error, result = self.services.start_tag_changed(test['start'], test['end'])
# THEN: The result should match the predetermined value.
self.assertTrue(result == test['gen'],
'Function should handle end tag correctly : %s and %s ' % (test['gen'], result))
self.assertTrue(error == test['valid'],
'Function should not generate unexpected error messages : %s ' % error)
def test_start_html_to_end_html(self):
"""
Test that the end html tags are generated correctly
"""
# GIVEN: A list of valid and invalid tags
tests = {'<b>': '</b>', '<i>': '</i>', 'superfly': '', '<HTML START>': None,
'<span style="-webkit-text-fill-color:red">': '</span>'}
# WHEN: Testing each one of them
for test1, test2 in tests.items():
result = self.services.start_html_to_end_html(test1)
# THEN: The result should match the predetermined value.
self.assertTrue(result == test2, 'Calculated end tag should be valid: %s and %s = %s'
% (test1, test2, result))