forked from openlp/openlp
More tests
This commit is contained in:
parent
e7af43af4a
commit
be4a654298
@ -53,7 +53,7 @@ class OpenLyricsImport(SongImport):
|
|||||||
Initialise the Open Lyrics importer.
|
Initialise the Open Lyrics importer.
|
||||||
"""
|
"""
|
||||||
log.debug('initialise OpenLyricsImport')
|
log.debug('initialise OpenLyricsImport')
|
||||||
SongImport.__init__(self, manager, **kwargs)
|
super(OpenLyricsImport, self).__init__(manager, **kwargs)
|
||||||
self.open_lyrics = OpenLyrics(self.manager)
|
self.open_lyrics = OpenLyrics(self.manager)
|
||||||
|
|
||||||
def do_import(self):
|
def do_import(self):
|
||||||
@ -71,7 +71,7 @@ class OpenLyricsImport(SongImport):
|
|||||||
# special characters in the path (see lp:757673 and lp:744337).
|
# special characters in the path (see lp:757673 and lp:744337).
|
||||||
parsed_file = etree.parse(open(file_path, 'r'), parser)
|
parsed_file = etree.parse(open(file_path, 'r'), parser)
|
||||||
xml = etree.tostring(parsed_file).decode()
|
xml = etree.tostring(parsed_file).decode()
|
||||||
self.open_lyrics.xml_to_song(xml)
|
return self.open_lyrics.xml_to_song(xml)
|
||||||
except etree.XMLSyntaxError:
|
except etree.XMLSyntaxError:
|
||||||
log.exception('XML syntax error in file %s' % file_path)
|
log.exception('XML syntax error in file %s' % file_path)
|
||||||
self.log_error(file_path, SongStrings.XMLSyntaxError)
|
self.log_error(file_path, SongStrings.XMLSyntaxError)
|
||||||
|
@ -30,12 +30,30 @@
|
|||||||
This module contains tests for the OpenLyrics song importer.
|
This module contains tests for the OpenLyrics song importer.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
from tests.functional import MagicMock, patch
|
from tests.functional import MagicMock, patch
|
||||||
from openlp.plugins.songs.lib.openlyricsimport import OpenLyricsImport
|
from openlp.plugins.songs.lib.openlyricsimport import OpenLyricsImport
|
||||||
from openlp.plugins.songs.lib.songimport import SongImport
|
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):
|
class TestOpenLyricsImport(TestCase):
|
||||||
"""
|
"""
|
||||||
@ -54,3 +72,25 @@ class TestOpenLyricsImport(TestCase):
|
|||||||
|
|
||||||
# THEN: The importer should be an instance of SongImport
|
# THEN: The importer should be an instance of SongImport
|
||||||
self.assertIsInstance(importer, 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']))
|
||||||
|
@ -0,0 +1,53 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<song xmlns="http://openlyrics.info/namespace/2009/song" version="0.8" createdIn="opensong2openlyrics.py 0.1" modifiedIn="convert-schema.py" modifiedDate="2013-03-12T09:39:58.853358">
|
||||||
|
<properties>
|
||||||
|
<titles>
|
||||||
|
<title>Mám zde přítele</title>
|
||||||
|
</titles>
|
||||||
|
<authors>
|
||||||
|
<author>A.J. Showalter</author>
|
||||||
|
<author>E.A. Hoffman</author>
|
||||||
|
</authors>
|
||||||
|
<verseOrder>v1 c v2 c v3 c</verseOrder>
|
||||||
|
</properties>
|
||||||
|
<lyrics>
|
||||||
|
<verse name="v1">
|
||||||
|
<lines>
|
||||||
|
Mám zde přítele,<br/>
|
||||||
|
Pána Ježíše,<br/>
|
||||||
|
a na rámě jeho spoléhám;<br/>
|
||||||
|
v něm své stěstí mám,<br/>
|
||||||
|
pokoj nalézám,<br/>
|
||||||
|
když na rámě jeho spoléhám!
|
||||||
|
</lines>
|
||||||
|
</verse>
|
||||||
|
<verse name="c">
|
||||||
|
<lines>
|
||||||
|
Boží rámě<br/>
|
||||||
|
je v soužení náš pevný hrad;<br/>
|
||||||
|
Boží rámě,<br/>
|
||||||
|
uč se na ně vždycky spoléhat!
|
||||||
|
</lines>
|
||||||
|
</verse>
|
||||||
|
<verse name="v2">
|
||||||
|
<lines>
|
||||||
|
Jak je sladké být,<br/>
|
||||||
|
v jeho družině,<br/>
|
||||||
|
když na rámě jeho spoléhám,<br/>
|
||||||
|
jak se života<br/>
|
||||||
|
cesta zjasňuje<br/>
|
||||||
|
když na rámě Boží spoléhám!
|
||||||
|
</lines>
|
||||||
|
</verse>
|
||||||
|
<verse name="v3">
|
||||||
|
<lines>
|
||||||
|
Čeho bych se bál,<br/>
|
||||||
|
čeho strachoval,<br/>
|
||||||
|
když na rámě Boží spoléhám?<br/>
|
||||||
|
Mír je v duši mé,<br/>
|
||||||
|
když On blízko je,<br/>
|
||||||
|
když na rámě jeho spoléhám.
|
||||||
|
</lines>
|
||||||
|
</verse>
|
||||||
|
</lyrics>
|
||||||
|
</song>
|
Loading…
Reference in New Issue
Block a user