diff --git a/openlp/plugins/songs/lib/openlyricsimport.py b/openlp/plugins/songs/lib/openlyricsimport.py index 675c0d98a..6e6cc8efa 100644 --- a/openlp/plugins/songs/lib/openlyricsimport.py +++ b/openlp/plugins/songs/lib/openlyricsimport.py @@ -53,7 +53,7 @@ class OpenLyricsImport(SongImport): Initialise the Open Lyrics importer. """ log.debug('initialise OpenLyricsImport') - SongImport.__init__(self, manager, **kwargs) + super(OpenLyricsImport, self).__init__(manager, **kwargs) self.open_lyrics = OpenLyrics(self.manager) def do_import(self): @@ -71,7 +71,7 @@ class OpenLyricsImport(SongImport): # special characters in the path (see lp:757673 and lp:744337). parsed_file = etree.parse(open(file_path, 'r'), parser) xml = etree.tostring(parsed_file).decode() - self.open_lyrics.xml_to_song(xml) + return self.open_lyrics.xml_to_song(xml) except etree.XMLSyntaxError: log.exception('XML syntax error in file %s' % file_path) self.log_error(file_path, SongStrings.XMLSyntaxError) diff --git a/tests/functional/openlp_plugins/songs/test_openlyricsimport.py b/tests/functional/openlp_plugins/songs/test_openlyricsimport.py index 74a291152..5465a03e4 100644 --- a/tests/functional/openlp_plugins/songs/test_openlyricsimport.py +++ b/tests/functional/openlp_plugins/songs/test_openlyricsimport.py @@ -30,12 +30,30 @@ This module contains tests for the OpenLyrics song importer. """ +import os from unittest import TestCase from tests.functional import MagicMock, patch from openlp.plugins.songs.lib.openlyricsimport import OpenLyricsImport from openlp.plugins.songs.lib.songimport import SongImport +TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..', '..', 'resources', 'openlyricssongs')) +SONG_TEST_DATA = { + 'Mám zde přítele, Pána Ježíše.xml': { + 'title': 'Mám zde přítele', + 'verses': [ + ('Mám zde přítele,\nPána Ježíše,\na na rámě jeho spoléhám;\nv něm své stěstí mám,\n\ + pokoj nalézám,\nkdyž na rámě jeho spoléhám!', 'v1'), + ('Boží rámě\nje v soužení náš pevný hrad;\nBoží rámě,\nuč se na ně vždycky spoléhat!', 'c'), + ('Jak je sladké být,\nv jeho družině,\nkdyž na rámě jeho spoléhám,\njak se života\ncesta zjasňuje\n\ + když na rámě Boží spoléhám!', 'v2'), + ('Čeho bych se bál,\nčeho strachoval,\nkdyž na rámě Boží spoléhám?\nMír je v duši mé,\n\ + když On blízko je,\nkdyž na rámě jeho spoléhám.', 'v') + ] + } +} + class TestOpenLyricsImport(TestCase): """ @@ -54,3 +72,25 @@ class TestOpenLyricsImport(TestCase): # THEN: The importer should be an instance of SongImport self.assertIsInstance(importer, SongImport) + + @patch('openlp.plugins.songs.lib.db.Song') + @patch('openlp.plugins.songs.lib.songbeamerimport.SongImport') + def file_import_test(self, mock_songimport, mock_song): + """ + Test the actual import of real song files and check that the imported data is correct. + """ + + # GIVEN: Test files with a mocked out "manager" and a mocked out "import_wizard" + for song_file in SONG_TEST_DATA: + mocked_manager = MagicMock() + mocked_import_wizard = MagicMock() + importer = OpenLyricsImport(mocked_manager, filenames=[]) + importer.import_wizard = mocked_import_wizard + + # WHEN: Importing each file + importer.import_source = [os.path.join(TEST_PATH, song_file)] + song = importer.do_import() + + # THEN: the song title should be as expected + self.assertEqual(song.title, SONG_TEST_DATA[song_file]['title'], + 'title for %s should be "%s"' % (song_file, SONG_TEST_DATA[song_file]['title'])) diff --git a/tests/resources/openlyricssongs/Mám zde přítele, Pána Ježíše.xml b/tests/resources/openlyricssongs/Mám zde přítele, Pána Ježíše.xml new file mode 100644 index 000000000..0914b4dfe --- /dev/null +++ b/tests/resources/openlyricssongs/Mám zde přítele, Pána Ježíše.xml @@ -0,0 +1,53 @@ + + + + + Mám zde přítele + + + A.J. Showalter + E.A. Hoffman + + v1 c v2 c v3 c + + + + + Mám zde přítele,
+ Pána Ježíše,
+ a na rámě jeho spoléhám;
+ v něm své stěstí mám,
+ pokoj nalézám,
+ když na rámě jeho spoléhám! +
+
+ + + Boží rámě
+ je v soužení náš pevný hrad;
+ Boží rámě,
+ uč se na ně vždycky spoléhat! +
+
+ + + Jak je sladké být,
+ v jeho družině,
+ když na rámě jeho spoléhám,
+ jak se života
+ cesta zjasňuje
+ když na rámě Boží spoléhám! +
+
+ + + Čeho bych se bál,
+ čeho strachoval,
+ když na rámě Boží spoléhám?
+ Mír je v duši mé,
+ když On blízko je,
+ když na rámě jeho spoléhám. +
+
+
+