Fix the author_type import properly

Add this to your merge proposal:
--------------------------------
lp:~raoul-snyman/openlp/fix-author-type-2.4 (revision 2681)
[SUCCESS] https://ci.openlp.io/job/Branch-01-Pull/1947/
[SUCCESS] https://ci.openlp.io/job/Branch-02-Functional-Tests/1858/
[SUCCESS] https://ci.openlp.io/job/Branch-03-Interface-Tests/1799/
[SUCCESS] https://ci.openlp.io/job/Branch-04a-Windows_Functional_Tests/1525/
[SUCCESS] https://ci.openlp.io/job/Branch-04b-Windows_Interface_Te...

bzr-revno: 2680
This commit is contained in:
Raoul Snyman 2017-03-28 11:39:35 -07:00
commit bd9eb0058a
6 changed files with 85 additions and 11 deletions

View File

@ -909,7 +909,9 @@ class SlideController(DisplayController, RegistryProperties):
Registry().execute('%s_stop' % old_item.name.lower(), [old_item, self.is_live]) Registry().execute('%s_stop' % 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_%s_started' % self.type_prefix, [self.service_item]) if self.is_live:
# This even is only registered for live
Registry().execute('slidecontroller_%s_started' % self.type_prefix, [self.service_item])
def on_slide_selected_index(self, message): def on_slide_selected_index(self, message):
""" """

View File

@ -149,7 +149,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
@ -190,11 +195,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(OldAuthorSong)
except UnmappedClassError:
mapper(OldAuthorSong, source_authors_songs_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

@ -24,6 +24,8 @@ import sys
from unittest import TestCase from unittest import TestCase
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
@ -156,3 +158,73 @@ class TestOpenLP(TestCase):
assert result is False assert result is False
del app 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

@ -681,7 +681,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.')

View File

@ -23,10 +23,10 @@
This module contains tests for the OpenLP song importer. This module contains tests for the OpenLP song importer.
""" """
from unittest import TestCase from unittest import TestCase
from unittest.mock import patch, MagicMock
from openlp.plugins.songs.lib.importers.openlp import OpenLPSongImport
from openlp.core.common import Registry from openlp.core.common import Registry
from tests.functional import patch, MagicMock from openlp.plugins.songs.lib.importers.openlp import OpenLPSongImport
class TestOpenLPImport(TestCase): class TestOpenLPImport(TestCase):