forked from openlp/openlp
Fixes for translation support + test
This commit is contained in:
parent
fdc22b4e4c
commit
7b69634552
@ -170,18 +170,18 @@ class OpsProImport(SongImport):
|
|||||||
idx += 1
|
idx += 1
|
||||||
# Handle the text based on whether translation is off or on
|
# Handle the text based on whether translation is off or on
|
||||||
if language:
|
if language:
|
||||||
translation_verse_text += verse_text_lines[idx] + '\r\n'
|
if language == 'b':
|
||||||
idx += 1
|
translation_verse_text += start_tag
|
||||||
while idx < len(verse_text_lines) and not verse_text_lines[idx].startswith('['):
|
while idx < len(verse_text_lines) and not verse_text_lines[idx].startswith('['):
|
||||||
if language == 'a':
|
|
||||||
translation_verse_text += verse_text_lines[idx] + '\r\n'
|
translation_verse_text += verse_text_lines[idx] + '\r\n'
|
||||||
else:
|
|
||||||
translation_verse_text += start_tag + verse_text_lines[idx] + end_tag + '\r\n'
|
|
||||||
idx += 1
|
idx += 1
|
||||||
|
if language == 'b':
|
||||||
|
translation_verse_text += end_tag
|
||||||
language = None
|
language = None
|
||||||
elif translation:
|
elif translation:
|
||||||
translation_verse_text += verse_text_lines[idx] + '\r\n'
|
translation_verse_text += verse_text_lines[idx] + '\r\n'
|
||||||
idx += 1
|
idx += 1
|
||||||
|
if idx < len(verse_text_lines) and not verse_text_lines[idx].startswith('['):
|
||||||
translation_verse_text += start_tag + verse_text_lines[idx] + end_tag + '\r\n'
|
translation_verse_text += start_tag + verse_text_lines[idx] + end_tag + '\r\n'
|
||||||
idx += 1
|
idx += 1
|
||||||
else:
|
else:
|
||||||
@ -194,8 +194,6 @@ class OpsProImport(SongImport):
|
|||||||
# Remove comments
|
# Remove comments
|
||||||
verse_text = re.sub('\(.*?\)\r\n', '', verse_text, flags=re.IGNORECASE)
|
verse_text = re.sub('\(.*?\)\r\n', '', verse_text, flags=re.IGNORECASE)
|
||||||
self.add_verse(verse_text, verse_def)
|
self.add_verse(verse_text, verse_def)
|
||||||
#print(verse_def)
|
|
||||||
#print(verse_text)
|
|
||||||
self.finish()
|
self.finish()
|
||||||
|
|
||||||
def extract_mdb_password(self):
|
def extract_mdb_password(self):
|
||||||
|
@ -79,6 +79,7 @@ class TestOpsProSongImport(TestCase):
|
|||||||
importer = OpsProImport(mocked_manager, filenames=[])
|
importer = OpsProImport(mocked_manager, filenames=[])
|
||||||
importer.finish = MagicMock()
|
importer.finish = MagicMock()
|
||||||
song, lyrics = self._build_test_data('you are so faithfull.txt', False)
|
song, lyrics = self._build_test_data('you are so faithfull.txt', False)
|
||||||
|
|
||||||
# WHEN: An importer object is created
|
# WHEN: An importer object is created
|
||||||
importer.process_song(song, lyrics, [])
|
importer.process_song(song, lyrics, [])
|
||||||
|
|
||||||
@ -98,6 +99,7 @@ class TestOpsProSongImport(TestCase):
|
|||||||
importer = OpsProImport(mocked_manager, filenames=[])
|
importer = OpsProImport(mocked_manager, filenames=[])
|
||||||
importer.finish = MagicMock()
|
importer.finish = MagicMock()
|
||||||
song, lyrics = self._build_test_data('amazing grace.txt', False)
|
song, lyrics = self._build_test_data('amazing grace.txt', False)
|
||||||
|
|
||||||
# WHEN: An importer object is created
|
# WHEN: An importer object is created
|
||||||
importer.process_song(song, lyrics, [])
|
importer.process_song(song, lyrics, [])
|
||||||
|
|
||||||
@ -117,6 +119,7 @@ class TestOpsProSongImport(TestCase):
|
|||||||
importer = OpsProImport(mocked_manager, filenames=[])
|
importer = OpsProImport(mocked_manager, filenames=[])
|
||||||
importer.finish = MagicMock()
|
importer.finish = MagicMock()
|
||||||
song, lyrics = self._build_test_data('amazing grace2.txt', True)
|
song, lyrics = self._build_test_data('amazing grace2.txt', True)
|
||||||
|
|
||||||
# WHEN: An importer object is created
|
# WHEN: An importer object is created
|
||||||
importer.process_song(song, lyrics, [])
|
importer.process_song(song, lyrics, [])
|
||||||
|
|
||||||
@ -126,6 +129,26 @@ class TestOpsProSongImport(TestCase):
|
|||||||
self.assertListEqual(importer.verses, self._get_data(result_data, 'verses'))
|
self.assertListEqual(importer.verses, self._get_data(result_data, 'verses'))
|
||||||
self.assertListEqual(importer.verse_order_list_generated, self._get_data(result_data, 'verse_order_list'))
|
self.assertListEqual(importer.verse_order_list_generated, self._get_data(result_data, 'verse_order_list'))
|
||||||
|
|
||||||
|
@patch('openlp.plugins.songs.lib.importers.opspro.SongImport')
|
||||||
|
def trans_tag_test(self, mocked_songimport):
|
||||||
|
"""
|
||||||
|
Test importing lyrics with various translations tags works in OPS Pro
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked out SongImport class, a mocked out "manager" and a mocked song and lyrics entry
|
||||||
|
mocked_manager = MagicMock()
|
||||||
|
importer = OpsProImport(mocked_manager, filenames=[])
|
||||||
|
importer.finish = MagicMock()
|
||||||
|
song, lyrics = self._build_test_data('amazing grace3.txt', True)
|
||||||
|
|
||||||
|
# WHEN: An importer object is created
|
||||||
|
importer.process_song(song, lyrics, [])
|
||||||
|
|
||||||
|
# THEN: The imported data should look like expected
|
||||||
|
result_file = open(os.path.join(TEST_PATH, 'Amazing Grace3.json'), 'rb')
|
||||||
|
result_data = json.loads(result_file.read().decode())
|
||||||
|
self.assertListEqual(importer.verses, self._get_data(result_data, 'verses'))
|
||||||
|
self.assertListEqual(importer.verse_order_list_generated, self._get_data(result_data, 'verse_order_list'))
|
||||||
|
|
||||||
def _get_data(self, data, key):
|
def _get_data(self, data, key):
|
||||||
if key in data:
|
if key in data:
|
||||||
return data[key]
|
return data[key]
|
||||||
|
31
tests/resources/opsprosongs/Amazing Grace3.json
Normal file
31
tests/resources/opsprosongs/Amazing Grace3.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"title": "Amazing Grace",
|
||||||
|
"verse_order_list": ["v1", "v2", "v3", "v4", "v5"],
|
||||||
|
"verses": [
|
||||||
|
[
|
||||||
|
"v1",
|
||||||
|
"Amazing grace! How sweet the sound!\r\n{translation}That saved a wretch like me!{/translation}\r\nI once was lost, but now am found;\r\n{translation}Was blind, but now I see.{/translation}",
|
||||||
|
null
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"v2",
|
||||||
|
"'Twas grace that taught my heart to fear,\r\nAnd grace my fears relieved.\r\n{translation}How precious did that grace appear,\r\nThe hour I first believed.\r\n{/translation}",
|
||||||
|
null
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"v3",
|
||||||
|
"The Lord has promised good to me,\r\nHis Word my hope secures.\r\nHe will my shield and portion be\r\n{translation}As long as life endures.{/translation}",
|
||||||
|
null
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"v4",
|
||||||
|
"Thro' many dangers, toils and snares\r\nI have already come.\r\n'Tis grace that brought me safe thus far,\r\n{translation}And grace will lead me home.{/translation}",
|
||||||
|
null
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"v5",
|
||||||
|
"[end]\r\n{translation}When we've been there ten thousand years,{/translation}\r\nBright shining as the sun,\r\n{translation}We've no less days to sing God's praise,{/translation}\r\nThan when we first begun.",
|
||||||
|
null
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user