forked from openlp/openlp
Write some more tests, and fix some potential bugs.
This commit is contained in:
parent
dc849f3ff2
commit
9f70bf8e30
@ -187,8 +187,10 @@ class VerseType(object):
|
|||||||
for num, tag in enumerate(VerseType.Tags):
|
for num, tag in enumerate(VerseType.Tags):
|
||||||
if verse_tag == tag:
|
if verse_tag == tag:
|
||||||
return VerseType.TranslatedTags[num].upper()
|
return VerseType.TranslatedTags[num].upper()
|
||||||
if len(VerseType.TranslatedTags) > default:
|
if len(VerseType.Names) > default:
|
||||||
return VerseType.TranslatedTags[default].upper()
|
return VerseType.TranslatedTags[default].upper()
|
||||||
|
else:
|
||||||
|
return VerseType.TranslatedTags[VerseType.Other].upper()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def translated_name(verse_tag, default=Other):
|
def translated_name(verse_tag, default=Other):
|
||||||
@ -205,8 +207,10 @@ class VerseType(object):
|
|||||||
for num, tag in enumerate(VerseType.Tags):
|
for num, tag in enumerate(VerseType.Tags):
|
||||||
if verse_tag == tag:
|
if verse_tag == tag:
|
||||||
return VerseType.TranslatedNames[num]
|
return VerseType.TranslatedNames[num]
|
||||||
if default in VerseType.TranslatedNames:
|
if len(VerseType.Names) > default:
|
||||||
return VerseType.TranslatedNames[default]
|
return VerseType.TranslatedNames[default]
|
||||||
|
else:
|
||||||
|
return VerseType.TranslatedNames[VerseType.Other]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_tag(verse_tag, default=Other):
|
def from_tag(verse_tag, default=Other):
|
||||||
@ -223,7 +227,10 @@ class VerseType(object):
|
|||||||
for num, tag in enumerate(VerseType.Tags):
|
for num, tag in enumerate(VerseType.Tags):
|
||||||
if verse_tag == tag:
|
if verse_tag == tag:
|
||||||
return num
|
return num
|
||||||
|
if len(VerseType.Names) > default:
|
||||||
return default
|
return default
|
||||||
|
else:
|
||||||
|
return VerseType.Other
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_translated_tag(verse_tag, default=Other):
|
def from_translated_tag(verse_tag, default=Other):
|
||||||
@ -240,7 +247,10 @@ class VerseType(object):
|
|||||||
for num, tag in enumerate(VerseType.TranslatedTags):
|
for num, tag in enumerate(VerseType.TranslatedTags):
|
||||||
if verse_tag == tag:
|
if verse_tag == tag:
|
||||||
return num
|
return num
|
||||||
|
if len(VerseType.Names) > default:
|
||||||
return default
|
return default
|
||||||
|
else:
|
||||||
|
return VerseType.Other
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_string(verse_name, default=Other):
|
def from_string(verse_name, default=Other):
|
||||||
|
@ -62,3 +62,134 @@ class TestVerseType(TestCase):
|
|||||||
# THEN: The result should be "B"
|
# THEN: The result should be "B"
|
||||||
self.assertEqual(result, u'B', u'The result should be "B", but was "%s"' % result)
|
self.assertEqual(result, u'B', u'The result should be "B", but was "%s"' % result)
|
||||||
|
|
||||||
|
def translated_invalid_tag_with_invalid_default_test(self):
|
||||||
|
"""
|
||||||
|
Test that the translated_tag() method returns a sane default tag when passed an invalid default
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked out translate() function that just returns what it was given
|
||||||
|
with patch(u'openlp.plugins.songs.lib.translate') as mocked_translate:
|
||||||
|
mocked_translate.side_effect = lambda x, y: y
|
||||||
|
|
||||||
|
# WHEN: We run the translated_tag() method with an invalid verse type and an invalid default
|
||||||
|
result = VerseType.translated_tag(u'q', 29)
|
||||||
|
|
||||||
|
# THEN: The result should be "O"
|
||||||
|
self.assertEqual(result, u'O', u'The result should be "O", but was "%s"' % result)
|
||||||
|
|
||||||
|
def translated_name_test(self):
|
||||||
|
"""
|
||||||
|
Test that the translated_name() method returns the correct name
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked out translate() function that just returns what it was given
|
||||||
|
with patch(u'openlp.plugins.songs.lib.translate') as mocked_translate:
|
||||||
|
mocked_translate.side_effect = lambda x, y: y
|
||||||
|
|
||||||
|
# WHEN: We run the translated_name() method with a "verse"
|
||||||
|
result = VerseType.translated_name(u'v')
|
||||||
|
|
||||||
|
# THEN: The result should be "Verse"
|
||||||
|
self.assertEqual(result, u'Verse', u'The result should be "Verse"')
|
||||||
|
|
||||||
|
# WHEN: We run the translated_name() method with a "chorus"
|
||||||
|
result = VerseType.translated_name(u'c')
|
||||||
|
|
||||||
|
# THEN: The result should be "Chorus"
|
||||||
|
self.assertEqual(result, u'Chorus', u'The result should be "Chorus"')
|
||||||
|
|
||||||
|
def translated_invalid_name_test(self):
|
||||||
|
"""
|
||||||
|
Test that the translated_name() method returns the default name when passed an invalid tag
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked out translate() function that just returns what it was given
|
||||||
|
with patch(u'openlp.plugins.songs.lib.translate') as mocked_translate:
|
||||||
|
mocked_translate.side_effect = lambda x, y: y
|
||||||
|
|
||||||
|
# WHEN: We run the translated_name() method with an invalid verse type
|
||||||
|
result = VerseType.translated_name(u'z')
|
||||||
|
|
||||||
|
# THEN: The result should be "Other"
|
||||||
|
self.assertEqual(result, u'Other', u'The result should be "Other", but was "%s"' % result)
|
||||||
|
|
||||||
|
def translated_invalid_name_with_specified_default_test(self):
|
||||||
|
"""
|
||||||
|
Test that the translated_name() method returns the specified default name when passed an invalid tag
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked out translate() function that just returns what it was given
|
||||||
|
with patch(u'openlp.plugins.songs.lib.translate') as mocked_translate:
|
||||||
|
mocked_translate.side_effect = lambda x, y: y
|
||||||
|
|
||||||
|
# WHEN: We run the translated_name() method with an invalid verse type and specify a default
|
||||||
|
result = VerseType.translated_name(u'q', VerseType.Bridge)
|
||||||
|
|
||||||
|
# THEN: The result should be "Bridge"
|
||||||
|
self.assertEqual(result, u'Bridge', u'The result should be "Bridge", but was "%s"' % result)
|
||||||
|
|
||||||
|
def translated_invalid_name_with_invalid_default_test(self):
|
||||||
|
"""
|
||||||
|
Test that the translated_name() method returns the specified default tag when passed an invalid tag
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked out translate() function that just returns what it was given
|
||||||
|
with patch(u'openlp.plugins.songs.lib.translate') as mocked_translate:
|
||||||
|
mocked_translate.side_effect = lambda x, y: y
|
||||||
|
|
||||||
|
# WHEN: We run the translated_name() method with an invalid verse type and specify an invalid default
|
||||||
|
result = VerseType.translated_name(u'q', 29)
|
||||||
|
|
||||||
|
# THEN: The result should be "Other"
|
||||||
|
self.assertEqual(result, u'Other', u'The result should be "Other", but was "%s"' % result)
|
||||||
|
|
||||||
|
def from_tag_test(self):
|
||||||
|
"""
|
||||||
|
Test that the from_tag() method returns the correct VerseType.
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked out translate() function that just returns what it was given
|
||||||
|
with patch(u'openlp.plugins.songs.lib.translate') as mocked_translate:
|
||||||
|
mocked_translate.side_effect = lambda x, y: y
|
||||||
|
|
||||||
|
# WHEN: We run the from_tag() method with a valid verse type, we get the name back
|
||||||
|
result = VerseType.from_tag(u'v')
|
||||||
|
|
||||||
|
# THEN: The result should be VerseType.Verse
|
||||||
|
self.assertEqual(result, VerseType.Verse, u'The result should be VerseType.Verse, but was "%s"' % result)
|
||||||
|
|
||||||
|
def from_tag_with_invalid_tag_test(self):
|
||||||
|
"""
|
||||||
|
Test that the from_tag() method returns the default VerseType when it is passed an invalid tag.
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked out translate() function that just returns what it was given
|
||||||
|
with patch(u'openlp.plugins.songs.lib.translate') as mocked_translate:
|
||||||
|
mocked_translate.side_effect = lambda x, y: y
|
||||||
|
|
||||||
|
# WHEN: We run the from_tag() method with a valid verse type, we get the name back
|
||||||
|
result = VerseType.from_tag(u'w')
|
||||||
|
|
||||||
|
# THEN: The result should be VerseType.Other
|
||||||
|
self.assertEqual(result, VerseType.Other, u'The result should be VerseType.Other, but was "%s"' % result)
|
||||||
|
|
||||||
|
def from_tag_with_specified_default_test(self):
|
||||||
|
"""
|
||||||
|
Test that the from_tag() method returns the specified default when passed an invalid tag.
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked out translate() function that just returns what it was given
|
||||||
|
with patch(u'openlp.plugins.songs.lib.translate') as mocked_translate:
|
||||||
|
mocked_translate.side_effect = lambda x, y: y
|
||||||
|
|
||||||
|
# WHEN: We run the from_tag() method with an invalid verse type, we get the specified default back
|
||||||
|
result = VerseType.from_tag(u'x', VerseType.Chorus)
|
||||||
|
|
||||||
|
# THEN: The result should be VerseType.Chorus
|
||||||
|
self.assertEqual(result, VerseType.Chorus, u'The result should be VerseType.Chorus, but was "%s"' % result)
|
||||||
|
|
||||||
|
def from_tag_with_invalid_default_test(self):
|
||||||
|
"""
|
||||||
|
Test that the from_tag() method returns a sane default when passed an invalid tag and an invalid default.
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked out translate() function that just returns what it was given
|
||||||
|
with patch(u'openlp.plugins.songs.lib.translate') as mocked_translate:
|
||||||
|
mocked_translate.side_effect = lambda x, y: y
|
||||||
|
|
||||||
|
# WHEN: We run the from_tag() method with an invalid verse type, we get the specified default back
|
||||||
|
result = VerseType.from_tag(u'm', 29)
|
||||||
|
|
||||||
|
# THEN: The result should be VerseType.Other
|
||||||
|
self.assertEqual(result, VerseType.Other, u'The result should be VerseType.Other, but was "%s"' % result)
|
||||||
|
Loading…
Reference in New Issue
Block a user