openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #31340
[Merge] lp:~raoul-snyman/openlp/fix-author_type into lp:openlp
Raoul Snyman has proposed merging lp:~raoul-snyman/openlp/fix-author_type into lp:openlp.
Commit message:
Fix the author_type import properly
Requested reviews:
OpenLP Core (openlp-core)
For more details, see:
https://code.launchpad.net/~raoul-snyman/openlp/fix-author_type/+merge/321138
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/1118/
[SUCCESS] https://ci.openlp.io/job/Branch-05a-Code_Analysis/1186/
[SUCCESS] https://ci.openlp.io/job/Branch-05b-Test_Coverage/1054/
[SUCCESS] https://ci.openlp.io/job/Branch-05c-Code_Analysis2/187/
--
Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/fix-author_type into lp:openlp.
=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/slidecontroller.py 2017-03-28 05:26:11 +0000
@@ -921,7 +921,8 @@
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():
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):
"""
=== modified file 'openlp/plugins/songs/lib/importers/openlp.py'
--- openlp/plugins/songs/lib/importers/openlp.py 2017-03-23 04:43:13 +0000
+++ openlp/plugins/songs/lib/importers/openlp.py 2017-03-28 05:26:11 +0000
@@ -150,7 +150,12 @@
class_mapper(OldSongBookEntry)
except UnmappedClassError:
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
else:
has_author_type = False
@@ -191,11 +196,6 @@
class_mapper(OldTopic)
except UnmappedClassError:
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()
if self.import_wizard:
=== modified file 'tests/functional/openlp_core/test_init.py'
--- tests/functional/openlp_core/test_init.py 2017-03-10 23:20:44 +0000
+++ tests/functional/openlp_core/test_init.py 2017-03-28 05:26:11 +0000
@@ -19,11 +19,12 @@
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
-
import sys
from unittest import TestCase, skip
from unittest.mock import MagicMock, patch
+from PyQt5 import QtWidgets
+
from openlp.core import OpenLP, parse_options
@@ -131,11 +132,11 @@
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):
"""
Test the OpenLP app class
"""
- @skip('Figure out why this is causing a segfault')
@patch('openlp.core.QtWidgets.QApplication.exec')
def test_exec(self, mocked_exec):
"""
@@ -155,4 +156,72 @@
app.shared_memory.detach.assert_called_once_with()
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
=== modified file 'tests/functional/openlp_core_ui/test_slidecontroller.py'
--- tests/functional/openlp_core_ui/test_slidecontroller.py 2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui/test_slidecontroller.py 2017-03-28 05:26:11 +0000
@@ -658,7 +658,7 @@
slide_controller._process_item(mocked_media_item, 0)
# 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],
'The presentation should have been stopped.')
Follow ups