Fix the author_type import properly

Add this to your merge proposal:
--------------------------------
lp:~raoul-snyman/openlp/fix-author_type (revision 2731)
[SUCCESS] https://ci.openlp.io/job/Branch-01-Pull/1950/
[SUCCESS] https://ci.openlp.io/job/Branch-02-Functional-Tests/1861/
[SUCCESS] https://ci.openlp.io/job/Branch-03-Interface-Tests/1802/
[SUCCESS] https://ci.openlp.io/job/Branch-04a-Windows_Functional_Tests/1528/
[SUCCESS] https://ci.openlp.io/job/Branch-04b-Windows_Interface_Tests/...

bzr-revno: 2730
This commit is contained in:
Raoul Snyman 2017-03-28 11:43:40 -07:00
commit fc505c2a13
4 changed files with 81 additions and 11 deletions

View File

@ -921,7 +921,8 @@ class SlideController(DisplayController, RegistryProperties):
Registry().execute('{name}_stop'.format(name=old_item.name.lower()), [old_item, self.is_live]) Registry().execute('{name}_stop'.format(name=old_item.name.lower()), [old_item, self.is_live])
if old_item.is_media() and not self.service_item.is_media(): if old_item.is_media() and not self.service_item.is_media():
self.on_media_close() self.on_media_close()
Registry().execute('slidecontroller_{item}_started'.format(item=self.type_prefix), [self.service_item]) if self.is_live:
Registry().execute('slidecontroller_{item}_started'.format(item=self.type_prefix), [self.service_item])
def on_slide_selected_index(self, message): def on_slide_selected_index(self, message):
""" """

View File

@ -150,7 +150,12 @@ class OpenLPSongImport(SongImport):
class_mapper(OldSongBookEntry) class_mapper(OldSongBookEntry)
except UnmappedClassError: except UnmappedClassError:
mapper(OldSongBookEntry, source_songs_songbooks_table, properties={'songbook': relation(OldBook)}) mapper(OldSongBookEntry, source_songs_songbooks_table, properties={'songbook': relation(OldBook)})
if has_authors_songs and 'author_type' in source_authors_songs_table.c.values(): if has_authors_songs:
try:
class_mapper(OldAuthorSong)
except UnmappedClassError:
mapper(OldAuthorSong, source_authors_songs_table)
if has_authors_songs and 'author_type' in source_authors_songs_table.c.keys():
has_author_type = True has_author_type = True
else: else:
has_author_type = False has_author_type = False
@ -191,11 +196,6 @@ class OpenLPSongImport(SongImport):
class_mapper(OldTopic) class_mapper(OldTopic)
except UnmappedClassError: except UnmappedClassError:
mapper(OldTopic, source_topics_table) mapper(OldTopic, source_topics_table)
if has_authors_songs:
try:
class_mapper(OldTopic)
except UnmappedClassError:
mapper(OldTopic, source_topics_table)
source_songs = self.source_session.query(OldSong).all() source_songs = self.source_session.query(OldSong).all()
if self.import_wizard: if self.import_wizard:

View File

@ -19,11 +19,12 @@
# with this program; if not, write to the Free Software Foundation, Inc., 59 # # with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Temple Place, Suite 330, Boston, MA 02111-1307 USA #
############################################################################### ###############################################################################
import sys import sys
from unittest import TestCase, skip from unittest import TestCase, skip
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
from PyQt5 import QtWidgets
from openlp.core import OpenLP, parse_options from openlp.core import OpenLP, parse_options
@ -131,11 +132,11 @@ class TestInitFunctions(TestCase):
self.assertEquals(args.rargs, 'dummy_temp', 'The service file should not be blank') self.assertEquals(args.rargs, 'dummy_temp', 'The service file should not be blank')
@skip('Figure out why this is causing a segfault')
class TestOpenLP(TestCase): class TestOpenLP(TestCase):
""" """
Test the OpenLP app class Test the OpenLP app class
""" """
@skip('Figure out why this is causing a segfault')
@patch('openlp.core.QtWidgets.QApplication.exec') @patch('openlp.core.QtWidgets.QApplication.exec')
def test_exec(self, mocked_exec): def test_exec(self, mocked_exec):
""" """
@ -155,4 +156,72 @@ class TestOpenLP(TestCase):
app.shared_memory.detach.assert_called_once_with() app.shared_memory.detach.assert_called_once_with()
assert result is False assert result is False
del app @patch('openlp.core.QtCore.QSharedMemory')
def test_is_already_running_not_running(self, MockedSharedMemory):
"""
Test the is_already_running() method when OpenLP is NOT running
"""
# GIVEN: An OpenLP app and some mocks
mocked_shared_memory = MagicMock()
mocked_shared_memory.attach.return_value = False
MockedSharedMemory.return_value = mocked_shared_memory
app = OpenLP([])
# WHEN: is_already_running() is called
result = app.is_already_running()
# THEN: The result should be false
MockedSharedMemory.assert_called_once_with('OpenLP')
mocked_shared_memory.attach.assert_called_once_with()
mocked_shared_memory.create.assert_called_once_with(1)
assert result is False
@patch('openlp.core.QtWidgets.QMessageBox.critical')
@patch('openlp.core.QtWidgets.QMessageBox.StandardButtons')
@patch('openlp.core.QtCore.QSharedMemory')
def test_is_already_running_is_running_continue(self, MockedSharedMemory, MockedStandardButtons, mocked_critical):
"""
Test the is_already_running() method when OpenLP IS running and the user chooses to continue
"""
# GIVEN: An OpenLP app and some mocks
mocked_shared_memory = MagicMock()
mocked_shared_memory.attach.return_value = True
MockedSharedMemory.return_value = mocked_shared_memory
MockedStandardButtons.return_value = 0
mocked_critical.return_value = QtWidgets.QMessageBox.Yes
app = OpenLP([])
# WHEN: is_already_running() is called
result = app.is_already_running()
# THEN: The result should be false
MockedSharedMemory.assert_called_once_with('OpenLP')
mocked_shared_memory.attach.assert_called_once_with()
MockedStandardButtons.assert_called_once_with(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
mocked_critical.assert_called_once_with(None, 'Error', 'OpenLP is already running. Do you wish to continue?', 0)
assert result is False
@patch('openlp.core.QtWidgets.QMessageBox.critical')
@patch('openlp.core.QtWidgets.QMessageBox.StandardButtons')
@patch('openlp.core.QtCore.QSharedMemory')
def test_is_already_running_is_running_stop(self, MockedSharedMemory, MockedStandardButtons, mocked_critical):
"""
Test the is_already_running() method when OpenLP IS running and the user chooses to stop
"""
# GIVEN: An OpenLP app and some mocks
mocked_shared_memory = MagicMock()
mocked_shared_memory.attach.return_value = True
MockedSharedMemory.return_value = mocked_shared_memory
MockedStandardButtons.return_value = 0
mocked_critical.return_value = QtWidgets.QMessageBox.No
app = OpenLP([])
# WHEN: is_already_running() is called
result = app.is_already_running()
# THEN: The result should be false
MockedSharedMemory.assert_called_once_with('OpenLP')
mocked_shared_memory.attach.assert_called_once_with()
MockedStandardButtons.assert_called_once_with(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
mocked_critical.assert_called_once_with(None, 'Error', 'OpenLP is already running. Do you wish to continue?', 0)
assert result is True

View File

@ -658,7 +658,7 @@ class TestSlideController(TestCase):
slide_controller._process_item(mocked_media_item, 0) slide_controller._process_item(mocked_media_item, 0)
# THEN: Registry.execute should have been called to stop the presentation # THEN: Registry.execute should have been called to stop the presentation
self.assertEqual(3, mocked_execute.call_count, 'Execute should have been called 3 times') self.assertEqual(2, mocked_execute.call_count, 'Execute should have been called 2 times')
self.assertEqual('mocked_presentation_item_stop', mocked_execute.call_args_list[1][0][0], self.assertEqual('mocked_presentation_item_stop', mocked_execute.call_args_list[1][0][0],
'The presentation should have been stopped.') 'The presentation should have been stopped.')