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.
|
||||
"""
|
||||
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)
|
||||
|
@ -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']))
|
||||
|
@ -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