forked from openlp/openlp
Changed then Givens, Whens and Thens arround
This commit is contained in:
parent
6e688961d0
commit
5512435c0c
@ -30,11 +30,16 @@
|
|||||||
The :mod:`worshipcenterpro` module provides the functionality for importing
|
The :mod:`worshipcenterpro` module provides the functionality for importing
|
||||||
a WorshipCenter Pro database into the OpenLP database.
|
a WorshipCenter Pro database into the OpenLP database.
|
||||||
"""
|
"""
|
||||||
|
import logging
|
||||||
|
|
||||||
import pyodbc
|
import pyodbc
|
||||||
|
|
||||||
from openlp.core.lib import translate
|
from openlp.core.lib import translate
|
||||||
from openlp.plugins.songs.lib.songimport import SongImport
|
from openlp.plugins.songs.lib.songimport import SongImport
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class WorshipCenterProImport(SongImport):
|
class WorshipCenterProImport(SongImport):
|
||||||
"""
|
"""
|
||||||
The :class:`WorshipCenterProImport` class provides the ability to import the
|
The :class:`WorshipCenterProImport` class provides the ability to import the
|
||||||
@ -52,7 +57,8 @@ class WorshipCenterProImport(SongImport):
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
conn = pyodbc.connect(u'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=%s' % self.import_source)
|
conn = pyodbc.connect(u'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=%s' % self.import_source)
|
||||||
except:
|
except (pyodbc.DatabaseError, pyodbc.IntegrityError, pyodbc.InternalError, pyodbc.OperationalError), e:
|
||||||
|
log.warn(u'Unable to connect the WorshipCenter Pro database %s. %s', self.import_source, unicode(e))
|
||||||
# Unfortunately no specific exception type
|
# Unfortunately no specific exception type
|
||||||
self.logError(self.import_source,
|
self.logError(self.import_source,
|
||||||
translate('SongsPlugin.WorshipCenterProImport', 'Unable to connect the WorshipCenter Pro database.'))
|
translate('SongsPlugin.WorshipCenterProImport', 'Unable to connect the WorshipCenter Pro database.'))
|
||||||
|
@ -2,11 +2,12 @@
|
|||||||
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This module contains tests for the WorshipCenter/ Pro song importer.
|
This module contains tests for the WorshipCenter Pro song importer.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
from mock import patch, MagicMock
|
from mock import patch, MagicMock
|
||||||
|
import pyodbc
|
||||||
|
|
||||||
from openlp.plugins.songs.lib.worshipcenterproimport import WorshipCenterProImport
|
from openlp.plugins.songs.lib.worshipcenterproimport import WorshipCenterProImport
|
||||||
|
|
||||||
@ -130,12 +131,13 @@ class TestWorshipCenterProSongImport(TestCase):
|
|||||||
importer = WorshipCenterProImport(mocked_manager)
|
importer = WorshipCenterProImport(mocked_manager)
|
||||||
importer.logError = mocked_log_error
|
importer.logError = mocked_log_error
|
||||||
importer.import_source = u'import_source'
|
importer.import_source = u'import_source'
|
||||||
|
mocked_pyodbc.connect.side_effect = Exception(pyodbc.DatabaseError)
|
||||||
|
|
||||||
# WHEN: pyodbc raises and unspecified exception
|
# WHEN: Calling the doImport method
|
||||||
mocked_pyodbc.connect.side_effect = Exception()
|
return_value = importer.doImport()
|
||||||
|
|
||||||
# THEN: doImport should return None, and pyodbc, translate & logError are called with known calls
|
# THEN: doImport should return None, and pyodbc, translate & logError are called with known calls
|
||||||
self.assertIsNone(importer.doImport(), u'doImport should return None when pyodbc raises an exception.')
|
self.assertIsNone(return_value, u'doImport should return None when pyodbc raises an exception.')
|
||||||
mocked_pyodbc.connect.assert_called_with( u'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=import_source')
|
mocked_pyodbc.connect.assert_called_with( u'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=import_source')
|
||||||
mocked_translate.assert_called_with('SongsPlugin.WorshipCenterProImport',
|
mocked_translate.assert_called_with('SongsPlugin.WorshipCenterProImport',
|
||||||
'Unable to connect the WorshipCenter Pro database.')
|
'Unable to connect the WorshipCenter Pro database.')
|
||||||
@ -145,8 +147,8 @@ class TestWorshipCenterProSongImport(TestCase):
|
|||||||
"""
|
"""
|
||||||
Test that a simulated WorshipCenter Pro recordset is imported correctly
|
Test that a simulated WorshipCenter Pro recordset is imported correctly
|
||||||
"""
|
"""
|
||||||
# GIVEN: A mocked out SongImport class, a mocked out pyodbc module, a mocked out translate method,
|
# GIVEN: A mocked out SongImport class, a mocked out pyodbc module with a simulated recordset, a mocked out
|
||||||
# a mocked "manager", addVerse method & mocked_finish method.
|
# translate method, a mocked "manager", addVerse method & mocked_finish method.
|
||||||
with patch(u'openlp.plugins.songs.lib.worshipcenterproimport.SongImport'), \
|
with patch(u'openlp.plugins.songs.lib.worshipcenterproimport.SongImport'), \
|
||||||
patch(u'openlp.plugins.songs.lib.worshipcenterproimport.pyodbc') as mocked_pyodbc, \
|
patch(u'openlp.plugins.songs.lib.worshipcenterproimport.pyodbc') as mocked_pyodbc, \
|
||||||
patch(u'openlp.plugins.songs.lib.worshipcenterproimport.translate') as mocked_translate:
|
patch(u'openlp.plugins.songs.lib.worshipcenterproimport.translate') as mocked_translate:
|
||||||
@ -154,6 +156,7 @@ class TestWorshipCenterProSongImport(TestCase):
|
|||||||
mocked_import_wizard = MagicMock()
|
mocked_import_wizard = MagicMock()
|
||||||
mocked_add_verse = MagicMock()
|
mocked_add_verse = MagicMock()
|
||||||
mocked_finish = MagicMock()
|
mocked_finish = MagicMock()
|
||||||
|
mocked_pyodbc.connect().cursor().fetchall.return_value = RECORDSET_TEST_DATA
|
||||||
mocked_translate.return_value = u'Translated Text'
|
mocked_translate.return_value = u'Translated Text'
|
||||||
importer = WorshipCenterProImportLogger(mocked_manager)
|
importer = WorshipCenterProImportLogger(mocked_manager)
|
||||||
importer.import_source = u'import_source'
|
importer.import_source = u'import_source'
|
||||||
@ -162,12 +165,13 @@ class TestWorshipCenterProSongImport(TestCase):
|
|||||||
importer.stop_import_flag = False
|
importer.stop_import_flag = False
|
||||||
importer.finish = mocked_finish
|
importer.finish = mocked_finish
|
||||||
|
|
||||||
# WHEN: the RECORDSET_TEST_DATA is simulated as fetched
|
# WHEN: Calling the doImport method
|
||||||
mocked_pyodbc.connect().cursor().fetchall.return_value = RECORDSET_TEST_DATA
|
return_value = importer.doImport()
|
||||||
|
|
||||||
|
|
||||||
# THEN: doImport should return None, and pyodbc, import_wizard, importer.title and addVerse are called with
|
# THEN: doImport should return None, and pyodbc, import_wizard, importer.title and addVerse are called with
|
||||||
# known calls
|
# known calls
|
||||||
self.assertIsNone(importer.doImport(), u'doImport should return None when pyodbc raises an exception.')
|
self.assertIsNone(return_value, u'doImport should return None when pyodbc raises an exception.')
|
||||||
mocked_pyodbc.connect.assert_called_with(u'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=import_source')
|
mocked_pyodbc.connect.assert_called_with(u'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=import_source')
|
||||||
mocked_pyodbc.connect().cursor.assert_any_call()
|
mocked_pyodbc.connect().cursor.assert_any_call()
|
||||||
mocked_pyodbc.connect().cursor().execute.assert_called_with(u'SELECT ID, Field, Value FROM __SONGDATA')
|
mocked_pyodbc.connect().cursor().execute.assert_called_with(u'SELECT ID, Field, Value FROM __SONGDATA')
|
||||||
@ -183,4 +187,4 @@ class TestWorshipCenterProSongImport(TestCase):
|
|||||||
for call in verse_calls:
|
for call in verse_calls:
|
||||||
mocked_add_verse.assert_any_call(call)
|
mocked_add_verse.assert_any_call(call)
|
||||||
self.assertEqual(mocked_add_verse.call_count, add_verse_call_count,
|
self.assertEqual(mocked_add_verse.call_count, add_verse_call_count,
|
||||||
u'Inccorect number of calls made to addVerse')
|
u'Incorrect number of calls made to addVerse')
|
Loading…
Reference in New Issue
Block a user