More tests

This commit is contained in:
Samuel Mehrbrodt 2014-04-16 00:23:29 +02:00
parent e7af43af4a
commit be4a654298
3 changed files with 95 additions and 2 deletions

View File

@ -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)

View File

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

View File

@ -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>