def _validate_verse_list(self, verse_order, verse_count): verses = [] invalid_verses = [] verse_names = [] order_names = str(verse_order).split() order = self._extract_verse_order(verse_order) for index in range(verse_count): verse = self.verse_list_widget.item(index, 0) verse = verse.data(QtCore.Qt.UserRole) if verse not in verse_names: verses.append(verse) verse_names.append('%s%s' % (VerseType.translated_tag(verse[0]), verse[1:])) for count, item in enumerate(order): if item not in verses: invalid_verses.append(order_names[count]) if invalid_verses: valid = create_separated_list(verse_names) if len(invalid_verses) > 1: msg = translate('SongsPlugin.EditSongForm', 'There are no verses corresponding to "%(invalid)s".' 'Valid entries are %(valid)s.\nPlease enter the verses seperated by spaces.') \ % {'invalid' : ', '.join(invalid_verses), 'valid' : valid} else: msg = translate('SongsPlugin.EditSongForm', 'There is no verse corresponding to "%(invalid)s".' 'Valid entries are %(valid)s.\nPlease enter the verses seperated by spaces.') \ % {'invalid' : invalid_verses[0], 'valid' : valid} critical_error_message_box(title=translate('SongsPlugin.EditSongForm', 'Invalid Verse Order'), message=msg) return len(invalid_verses) == 0
def translated_tag_test(self): """ Test that the translated_tag() method returns the correct tags """ # GIVEN: A mocked out translate() function that just returns what it was given with patch('openlp.plugins.songs.lib.translate') as mocked_translate: mocked_translate.side_effect = lambda x, y: y # WHEN: We run the translated_tag() method with a "verse" result = VerseType.translated_tag('v') # THEN: The result should be "V" self.assertEqual(result, 'V', 'The result should be "V"') # WHEN: We run the translated_tag() method with a "chorus" result = VerseType.translated_tag('c') # THEN: The result should be "C" self.assertEqual(result, 'C', 'The result should be "C"')
def translated_tag_test(self): """ Test that the translated_tag() method returns the correct tags """ # GIVEN: A mocked out translate() function that just returns what it was given with patch('openlp.plugins.songs.lib.translate') as mocked_translate: mocked_translate.side_effect = lambda x, y: y # WHEN: We run the translated_tag() method with a "verse" result = VerseType.translated_tag('v') # THEN: The result should be "V" self.assertEqual(result, 'V', 'The result should be "V"') # WHEN: We run the translated_tag() method with a "chorus" result = VerseType.translated_tag('c') # THEN: The result should be "C" self.assertEqual(result, 'C', 'The result should be "C"')
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('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('q', 29) # THEN: The result should be "O" self.assertEqual(result, 'O', 'The result should be "O", 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('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('q', 29) # THEN: The result should be "O" self.assertEqual(result, 'O', 'The result should be "O", but was "%s"' % result)
def test_translated_invalid_tag_with_specified_default(self): """ Test that the translated_tag() 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('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 specify a default result = VerseType.translated_tag('q', VerseType.Bridge) # THEN: The result should be "B" assert result == 'B', 'The result should be "B", but was "%s"' % result
def tag_rows(self): """ Tag the Song List rows based on the verse list """ row_label = [] for row in range(self.verse_list_widget.rowCount()): item = self.verse_list_widget.item(row, 0) verse_def = item.data(QtCore.Qt.UserRole) verse_tag = VerseType.translated_tag(verse_def[0]) row_def = '%s%s' % (verse_tag, verse_def[1:]) row_label.append(row_def) self.verse_list_widget.setVerticalHeaderLabels(row_label) self.verse_list_widget.resizeRowsToContents() self.verse_list_widget.repaint()