diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 9bab13b71..4296c19b5 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -620,6 +620,3 @@ from .serviceitem import ServiceItem, ServiceItemType, ItemCapabilities from .htmlbuilder import build_html, build_lyrics_format_css, build_lyrics_outline_css, build_chords_css from .imagemanager import ImageManager from .mediamanageritem import MediaManagerItem -from .projector.db import ProjectorDB, Projector -from .projector.pjlink import PJLink -from .projector.constants import PJLINK_PORT, ERROR_MSG, ERROR_STRING diff --git a/openlp/core/lib/projector/__init__.py b/openlp/core/projectors/__init__.py similarity index 90% rename from openlp/core/lib/projector/__init__.py rename to openlp/core/projectors/__init__.py index dc7d2c89d..396422902 100644 --- a/openlp/core/lib/projector/__init__.py +++ b/openlp/core/projectors/__init__.py @@ -20,11 +20,13 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ - :mod:`openlp.core.ui.projector` + :mod:`openlp.core.projectors` - Initialization for the openlp.core.ui.projector modules. + Initialization for the openlp.core.projectors modules. """ +from openlp.core.projectors.constants import PJLINK_PORT, ERROR_MSG, ERROR_STRING + class DialogSourceStyle(object): """ diff --git a/openlp/core/lib/projector/constants.py b/openlp/core/projectors/constants.py similarity index 100% rename from openlp/core/lib/projector/constants.py rename to openlp/core/projectors/constants.py diff --git a/openlp/core/lib/projector/db.py b/openlp/core/projectors/db.py similarity index 99% rename from openlp/core/lib/projector/db.py rename to openlp/core/projectors/db.py index fa8934ae2..99fe9515b 100644 --- a/openlp/core/lib/projector/db.py +++ b/openlp/core/projectors/db.py @@ -43,8 +43,8 @@ from sqlalchemy.ext.declarative import declarative_base, declared_attr from sqlalchemy.orm import relationship from openlp.core.lib.db import Manager, init_db, init_url -from openlp.core.lib.projector.constants import PJLINK_DEFAULT_CODES -from openlp.core.lib.projector import upgrade +from openlp.core.projectors.constants import PJLINK_DEFAULT_CODES +from openlp.core.projectors import upgrade Base = declarative_base(MetaData()) diff --git a/openlp/core/ui/projector/editform.py b/openlp/core/projectors/editform.py similarity index 99% rename from openlp/core/ui/projector/editform.py rename to openlp/core/projectors/editform.py index bd3267665..4ae1f96d9 100644 --- a/openlp/core/ui/projector/editform.py +++ b/openlp/core/projectors/editform.py @@ -30,8 +30,8 @@ from PyQt5 import QtCore, QtWidgets from openlp.core.common import verify_ip_address from openlp.core.common.i18n import translate from openlp.core.lib import build_icon -from openlp.core.lib.projector.db import Projector -from openlp.core.lib.projector.constants import PJLINK_PORT +from openlp.core.projectors.db import Projector +from openlp.core.projectors.constants import PJLINK_PORT log = logging.getLogger(__name__) log.debug('editform loaded') diff --git a/openlp/core/ui/projector/manager.py b/openlp/core/projectors/manager.py similarity index 98% rename from openlp/core/ui/projector/manager.py rename to openlp/core/projectors/manager.py index 0770886e4..0e00d602d 100644 --- a/openlp/core/ui/projector/manager.py +++ b/openlp/core/projectors/manager.py @@ -34,14 +34,14 @@ from openlp.core.common.mixins import LogMixin, RegistryProperties from openlp.core.common.registry import RegistryBase from openlp.core.common.settings import Settings from openlp.core.lib.ui import create_widget_action -from openlp.core.lib.projector import DialogSourceStyle -from openlp.core.lib.projector.constants import ERROR_MSG, ERROR_STRING, E_AUTHENTICATION, E_ERROR, \ +from openlp.core.projectors import DialogSourceStyle +from openlp.core.projectors.constants import ERROR_MSG, ERROR_STRING, E_AUTHENTICATION, E_ERROR, \ E_NETWORK, E_NOT_CONNECTED, E_UNKNOWN_SOCKET_ERROR, STATUS_STRING, S_CONNECTED, S_CONNECTING, S_COOLDOWN, \ S_INITIALIZE, S_NOT_CONNECTED, S_OFF, S_ON, S_STANDBY, S_WARMUP -from openlp.core.lib.projector.db import ProjectorDB -from openlp.core.lib.projector.pjlink import PJLink, PJLinkUDP -from openlp.core.ui.projector.editform import ProjectorEditForm -from openlp.core.ui.projector.sourceselectform import SourceSelectTabs, SourceSelectSingle +from openlp.core.projectors.db import ProjectorDB +from openlp.core.projectors.pjlink import PJLink, PJLinkUDP +from openlp.core.projectors.editform import ProjectorEditForm +from openlp.core.projectors.sourceselectform import SourceSelectTabs, SourceSelectSingle from openlp.core.widgets.toolbar import OpenLPToolbar log = logging.getLogger(__name__) @@ -518,7 +518,7 @@ class ProjectorManager(QtWidgets.QWidget, RegistryBase, UiProjectorManager, LogM projector.thread.quit() new_list = [] for item in self.projector_list: - if item.link.dbid == projector.link.dbid: + if item.link.db_item.id == projector.link.db_item.id: continue new_list.append(item) self.projector_list = new_list @@ -730,7 +730,6 @@ class ProjectorManager(QtWidgets.QWidget, RegistryBase, UiProjectorManager, LogM thread.started.connect(item.link.thread_started) thread.finished.connect(item.link.thread_stopped) thread.finished.connect(thread.deleteLater) - item.link.projectorNetwork.connect(self.update_status) item.link.changeStatus.connect(self.update_status) item.link.projectorAuthentication.connect(self.authentication_error) item.link.projectorNoAuthentication.connect(self.no_authentication_error) diff --git a/openlp/core/lib/projector/pjlink.py b/openlp/core/projectors/pjlink.py similarity index 99% rename from openlp/core/lib/projector/pjlink.py rename to openlp/core/projectors/pjlink.py index 2272b971f..38013097f 100644 --- a/openlp/core/lib/projector/pjlink.py +++ b/openlp/core/projectors/pjlink.py @@ -54,7 +54,7 @@ from PyQt5 import QtCore, QtNetwork from openlp.core.common import qmd5_hash from openlp.core.common.i18n import translate -from openlp.core.lib.projector.constants import CONNECTION_ERRORS, CR, ERROR_MSG, ERROR_STRING, \ +from openlp.core.projectors.constants import CONNECTION_ERRORS, CR, ERROR_MSG, ERROR_STRING, \ E_AUTHENTICATION, E_CONNECTION_REFUSED, E_GENERAL, E_INVALID_DATA, E_NETWORK, E_NOT_CONNECTED, E_OK, \ E_PARAMETER, E_PROJECTOR, E_SOCKET_TIMEOUT, E_UNAVAILABLE, E_UNDEFINED, PJLINK_ERRORS, PJLINK_ERST_DATA, \ PJLINK_ERST_STATUS, PJLINK_MAX_PACKET, PJLINK_PORT, PJLINK_POWR_STATUS, PJLINK_VALID_CMD, \ @@ -520,7 +520,6 @@ class PJLink(QtNetwork.QTcpSocket, PJLinkCommands): """ # Signals sent by this module changeStatus = QtCore.pyqtSignal(str, int, str) - projectorNetwork = QtCore.pyqtSignal(int) # Projector network activity projectorStatus = QtCore.pyqtSignal(int) # Status update projectorAuthentication = QtCore.pyqtSignal(str) # Authentication error projectorNoAuthentication = QtCore.pyqtSignal(str) # PIN set and no authentication needed @@ -846,7 +845,6 @@ class PJLink(QtNetwork.QTcpSocket, PJLinkCommands): log.debug('({ip}) get_socket(): No data available (-1)'.format(ip=self.ip)) return self.receive_data_signal() self.socket_timer.stop() - self.projectorNetwork.emit(S_NETWORK_RECEIVED) return self.get_data(buff=read, ip=self.ip) def get_data(self, buff, ip): @@ -925,7 +923,6 @@ class PJLink(QtNetwork.QTcpSocket, PJLinkCommands): if cmd not in PJLINK_VALID_CMD: log.error('({ip}) send_command(): Invalid command requested - ignoring.'.format(ip=self.ip)) return - self.projectorNetwork.emit(S_NETWORK_SENDING) log.debug('({ip}) send_command(): Building cmd="{command}" opts="{data}"{salt}'.format(ip=self.ip, command=cmd, data=opts, @@ -996,7 +993,6 @@ class PJLink(QtNetwork.QTcpSocket, PJLinkCommands): log.debug('({ip}) _send_string(): Sending "{data}"'.format(ip=self.ip, data=out.strip())) log.debug('({ip}) _send_string(): Queue = {data}'.format(ip=self.ip, data=self.send_queue)) self.socket_timer.start() - self.projectorNetwork.emit(S_NETWORK_SENDING) sent = self.write(out.encode('{string_encoding}'.format(string_encoding='utf-8' if utf8 else 'ascii'))) self.waitForBytesWritten(2000) # 2 seconds should be enough if sent == -1: diff --git a/openlp/core/ui/projector/sourceselectform.py b/openlp/core/projectors/sourceselectform.py similarity index 99% rename from openlp/core/ui/projector/sourceselectform.py rename to openlp/core/projectors/sourceselectform.py index 0c150d25b..aaf8170ac 100644 --- a/openlp/core/ui/projector/sourceselectform.py +++ b/openlp/core/projectors/sourceselectform.py @@ -31,8 +31,8 @@ from PyQt5 import QtCore, QtWidgets from openlp.core.common import is_macosx from openlp.core.common.i18n import translate from openlp.core.lib import build_icon -from openlp.core.lib.projector.db import ProjectorSource -from openlp.core.lib.projector.constants import PJLINK_DEFAULT_SOURCES, PJLINK_DEFAULT_CODES +from openlp.core.projectors.db import ProjectorSource +from openlp.core.projectors.constants import PJLINK_DEFAULT_SOURCES, PJLINK_DEFAULT_CODES log = logging.getLogger(__name__) diff --git a/openlp/core/ui/projector/tab.py b/openlp/core/projectors/tab.py similarity index 99% rename from openlp/core/ui/projector/tab.py rename to openlp/core/projectors/tab.py index b7c2e5dda..29e6a9511 100644 --- a/openlp/core/ui/projector/tab.py +++ b/openlp/core/projectors/tab.py @@ -29,7 +29,7 @@ from PyQt5 import QtWidgets from openlp.core.common.i18n import UiStrings, translate from openlp.core.common.settings import Settings from openlp.core.lib import SettingsTab -from openlp.core.lib.projector import DialogSourceStyle +from openlp.core.projectors import DialogSourceStyle log = logging.getLogger(__name__) log.debug('projectortab module loaded') diff --git a/openlp/core/lib/projector/upgrade.py b/openlp/core/projectors/upgrade.py similarity index 100% rename from openlp/core/lib/projector/upgrade.py rename to openlp/core/projectors/upgrade.py diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index 2b8383755..5c2463e5d 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -115,9 +115,10 @@ from .formattingtagcontroller import FormattingTagController from .shortcutlistform import ShortcutListForm from .servicemanager import ServiceManager from .thememanager import ThemeManager -from .projector.manager import ProjectorManager -from .projector.tab import ProjectorTab -from .projector.editform import ProjectorEditForm + +from openlp.core.projectors.editform import ProjectorEditForm +from openlp.core.projectors.manager import ProjectorManager +from openlp.core.projectors.tab import ProjectorTab __all__ = ['SplashScreen', 'AboutForm', 'SettingsForm', 'MainDisplay', 'SlideController', 'ServiceManager', 'ThemeForm', 'ThemeManager', 'ServiceItemEditForm', 'FirstTimeForm', 'FirstTimeLanguageForm', 'Display', 'AudioPlayer', diff --git a/openlp/core/ui/firsttimewizard.py b/openlp/core/ui/firsttimewizard.py index be893cd5e..5212479ef 100644 --- a/openlp/core/ui/firsttimewizard.py +++ b/openlp/core/ui/firsttimewizard.py @@ -261,8 +261,8 @@ class UiFirstTimeWizard(object): self.alert_check_box.setText(translate('OpenLP.FirstTimeWizard', 'Alerts – Display informative messages while showing other slides')) self.projectors_check_box.setText(translate('OpenLP.FirstTimeWizard', - 'Projectors – Control PJLink compatible projects on your network' - ' from OpenLP')) + 'Projector Controller – Control PJLink compatible projects on your' + ' network from OpenLP')) self.no_internet_page.setTitle(translate('OpenLP.FirstTimeWizard', 'No Internet Connection')) self.no_internet_page.setSubTitle( translate('OpenLP.FirstTimeWizard', 'Unable to detect an Internet connection.')) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index c0e704afb..c1d452193 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -48,6 +48,7 @@ from openlp.core.display.screens import ScreenList from openlp.core.display.renderer import Renderer from openlp.core.lib import PluginManager, ImageManager, PluginStatus, build_icon from openlp.core.lib.ui import create_action +from openlp.core.projectors.manager import ProjectorManager from openlp.core.ui import AboutForm, SettingsForm, ServiceManager, ThemeManager, LiveController, PluginForm, \ ShortcutListForm, FormattingTagForm, PreviewController from openlp.core.ui.firsttimeform import FirstTimeForm @@ -55,7 +56,6 @@ from openlp.core.widgets.dialogs import FileDialog from openlp.core.widgets.docks import OpenLPDockWidget, MediaDockManager from openlp.core.ui.media import MediaController from openlp.core.ui.printserviceform import PrintServiceForm -from openlp.core.ui.projector.manager import ProjectorManager from openlp.core.ui.style import PROGRESSBAR_STYLE, get_library_stylesheet from openlp.core.version import get_version @@ -375,7 +375,7 @@ class Ui_MainWindow(object): self.media_manager_dock.setWindowTitle(translate('OpenLP.MainWindow', 'Library')) self.service_manager_dock.setWindowTitle(translate('OpenLP.MainWindow', 'Service')) self.theme_manager_dock.setWindowTitle(translate('OpenLP.MainWindow', 'Themes')) - self.projector_manager_dock.setWindowTitle(translate('OpenLP.MainWindow', 'Projectors')) + self.projector_manager_dock.setWindowTitle(translate('OpenLP.MainWindow', 'Projector Controller')) self.file_new_item.setText(translate('OpenLP.MainWindow', '&New Service')) self.file_new_item.setToolTip(UiStrings().NewService) self.file_new_item.setStatusTip(UiStrings().CreateService) @@ -407,7 +407,7 @@ class Ui_MainWindow(object): translate('OpenLP.MainWindow', 'Import settings from a *.config file previously exported from ' 'this or another machine.')) self.settings_import_item.setText(translate('OpenLP.MainWindow', 'Settings')) - self.view_projector_manager_item.setText(translate('OpenLP.MainWindow', '&Projectors')) + self.view_projector_manager_item.setText(translate('OpenLP.MainWindow', '&Projector Controller')) self.view_projector_manager_item.setToolTip(translate('OpenLP.MainWindow', 'Hide or show Projectors.')) self.view_projector_manager_item.setStatusTip(translate('OpenLP.MainWindow', 'Toggle visibility of the Projectors.')) diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index e7a86bac2..4d7c4ff6c 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -30,9 +30,9 @@ from openlp.core.api import ApiTab from openlp.core.common.mixins import RegistryProperties from openlp.core.common.registry import Registry from openlp.core.lib import build_icon +from openlp.core.projectors.tab import ProjectorTab from openlp.core.ui import AdvancedTab, GeneralTab, ThemesTab from openlp.core.ui.media import PlayerTab -from openlp.core.ui.projector.tab import ProjectorTab from openlp.core.ui.settingsdialog import Ui_SettingsDialog log = logging.getLogger(__name__) diff --git a/openlp/core/ui/projector/__init__.py b/tests/functional/openlp_core/projectors/__init__.py similarity index 96% rename from openlp/core/ui/projector/__init__.py rename to tests/functional/openlp_core/projectors/__init__.py index eb20e9232..7efaa18af 100644 --- a/openlp/core/ui/projector/__init__.py +++ b/tests/functional/openlp_core/projectors/__init__.py @@ -20,5 +20,5 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ -The Projector driver module. +Module-level functions for the functional test suite """ diff --git a/tests/functional/openlp_core/lib/test_projector_constants.py b/tests/functional/openlp_core/projectors/test_projector_constants.py similarity index 93% rename from tests/functional/openlp_core/lib/test_projector_constants.py rename to tests/functional/openlp_core/projectors/test_projector_constants.py index 90fee1e13..ed1afa677 100644 --- a/tests/functional/openlp_core/lib/test_projector_constants.py +++ b/tests/functional/openlp_core/projectors/test_projector_constants.py @@ -20,7 +20,7 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ -Package to test the openlp.core.lib.projector.constants package. +Package to test the openlp.core.projectors.constants module. """ from unittest import TestCase @@ -37,7 +37,7 @@ class TestProjectorConstants(TestCase): from tests.resources.projector.data import TEST_VIDEO_CODES # WHEN: Import projector PJLINK_DEFAULT_CODES - from openlp.core.lib.projector.constants import PJLINK_DEFAULT_CODES + from openlp.core.projectors.constants import PJLINK_DEFAULT_CODES # THEN: Verify dictionary was build correctly self.assertEqual(PJLINK_DEFAULT_CODES, TEST_VIDEO_CODES, 'PJLink video strings should match') diff --git a/tests/functional/openlp_core/lib/test_projector_db.py b/tests/functional/openlp_core/projectors/test_projector_db.py similarity index 98% rename from tests/functional/openlp_core/lib/test_projector_db.py rename to tests/functional/openlp_core/projectors/test_projector_db.py index bcbc9c547..1dfe47a54 100644 --- a/tests/functional/openlp_core/lib/test_projector_db.py +++ b/tests/functional/openlp_core/projectors/test_projector_db.py @@ -20,7 +20,7 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ -Package to test the openlp.core.ui.projectordb find, edit, delete +Package to test the openlp.core.projectors.db module. record functions. PREREQUISITE: add_record() and get_all() functions validated. @@ -32,10 +32,10 @@ from tempfile import mkdtemp from unittest import TestCase from unittest.mock import patch -from openlp.core.lib.projector import upgrade from openlp.core.lib.db import upgrade_db -from openlp.core.lib.projector.constants import PJLINK_PORT -from openlp.core.lib.projector.db import Manufacturer, Model, Projector, ProjectorDB, ProjectorSource, Source +from openlp.core.projectors import upgrade +from openlp.core.projectors.constants import PJLINK_PORT +from openlp.core.projectors.db import Manufacturer, Model, Projector, ProjectorDB, ProjectorSource, Source from tests.resources.projector.data import TEST_DB_PJLINK1, TEST_DB, TEST1_DATA, TEST2_DATA, TEST3_DATA from tests.utils.constants import TEST_RESOURCES_PATH @@ -129,7 +129,7 @@ class TestProjectorDB(TestCase): """ Test case for ProjectorDB """ - @patch('openlp.core.lib.projector.db.init_url') + @patch('openlp.core.projectors.db.init_url') def setUp(self, mocked_init_url): """ Set up anything necessary for all tests diff --git a/tests/functional/openlp_core/lib/test_projector_pjlink_base.py b/tests/functional/openlp_core/projectors/test_projector_pjlink_base.py similarity index 97% rename from tests/functional/openlp_core/lib/test_projector_pjlink_base.py rename to tests/functional/openlp_core/projectors/test_projector_pjlink_base.py index 578f37ede..75b32d8c1 100644 --- a/tests/functional/openlp_core/lib/test_projector_pjlink_base.py +++ b/tests/functional/openlp_core/projectors/test_projector_pjlink_base.py @@ -20,14 +20,14 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ -Package to test the openlp.core.lib.projector.pjlink base package. +Package to test the openlp.core.projectors.pjlink base package. """ from unittest import TestCase from unittest.mock import call, patch, MagicMock -from openlp.core.lib.projector.db import Projector -from openlp.core.lib.projector.pjlink import PJLink -from openlp.core.lib.projector.constants import E_PARAMETER, ERROR_STRING, S_ON, S_CONNECTED +from openlp.core.projectors.constants import E_PARAMETER, ERROR_STRING, S_ON, S_CONNECTED +from openlp.core.projectors.db import Projector +from openlp.core.projectors.pjlink import PJLink from tests.resources.projector.data import TEST_PIN, TEST_SALT, TEST_CONNECT_AUTHENTICATE, TEST_HASH, TEST1_DATA diff --git a/tests/functional/openlp_core/lib/test_projector_pjlink_cmd_routing.py b/tests/functional/openlp_core/projectors/test_projector_pjlink_cmd_routing.py similarity index 90% rename from tests/functional/openlp_core/lib/test_projector_pjlink_cmd_routing.py rename to tests/functional/openlp_core/projectors/test_projector_pjlink_cmd_routing.py index 006abfff6..431da0606 100644 --- a/tests/functional/openlp_core/lib/test_projector_pjlink_cmd_routing.py +++ b/tests/functional/openlp_core/projectors/test_projector_pjlink_cmd_routing.py @@ -20,20 +20,20 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ -Package to test the openlp.core.lib.projector.pjlink class command routing. +Package to test the openlp.core.projectors.pjlink command routing. """ from unittest import TestCase from unittest.mock import patch, MagicMock -import openlp.core.lib.projector.pjlink -from openlp.core.lib.projector.db import Projector -from openlp.core.lib.projector.pjlink import PJLink -from openlp.core.lib.projector.constants import PJLINK_ERRORS, \ +import openlp.core.projectors.pjlink +from openlp.core.projectors.constants import PJLINK_ERRORS, \ E_AUTHENTICATION, E_PARAMETER, E_PROJECTOR, E_UNAVAILABLE, E_UNDEFINED +from openlp.core.projectors.db import Projector +from openlp.core.projectors.pjlink import PJLink ''' -from openlp.core.lib.projector.constants import ERROR_STRING, PJLINK_ERST_DATA, PJLINK_ERST_STATUS, \ +from openlp.core.projectors.constants import ERROR_STRING, PJLINK_ERST_DATA, PJLINK_ERST_STATUS, \ PJLINK_POWR_STATUS, PJLINK_VALID_CMD, E_WARN, E_ERROR, S_OFF, S_STANDBY, S_ON ''' from tests.resources.projector.data import TEST_PIN, TEST1_DATA @@ -46,7 +46,7 @@ class TestPJLinkRouting(TestCase): """ Tests for the PJLink module command routing """ - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_process_command_call_clss(self, mock_log): """ Test process_command calls proper function @@ -66,7 +66,7 @@ class TestPJLinkRouting(TestCase): mock_process_clss.assert_called_with('1') @patch.object(pjlink_test, 'change_status') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_process_command_err1(self, mock_log, mock_change_status): """ Test ERR1 - Undefined projector function @@ -85,7 +85,7 @@ class TestPJLinkRouting(TestCase): mock_log.error.assert_called_with(log_text) @patch.object(pjlink_test, 'change_status') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_process_command_err2(self, mock_log, mock_change_status): """ Test ERR2 - Parameter Error @@ -104,7 +104,7 @@ class TestPJLinkRouting(TestCase): mock_log.error.assert_called_with(log_text) @patch.object(pjlink_test, 'change_status') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_process_command_err3(self, mock_log, mock_change_status): """ Test ERR3 - Unavailable error @@ -123,7 +123,7 @@ class TestPJLinkRouting(TestCase): mock_log.error.assert_called_with(log_text) @patch.object(pjlink_test, 'change_status') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_process_command_err4(self, mock_log, mock_change_status): """ Test ERR3 - Unavailable error @@ -144,7 +144,7 @@ class TestPJLinkRouting(TestCase): @patch.object(pjlink_test, 'projectorAuthentication') @patch.object(pjlink_test, 'change_status') @patch.object(pjlink_test, 'disconnect_from_host') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_process_command_erra(self, mock_log, mock_disconnect, mock_change_status, mock_err_authenticate): """ Test ERRA - Authentication Error @@ -163,7 +163,7 @@ class TestPJLinkRouting(TestCase): mock_change_status.assert_called_once_with(E_AUTHENTICATION) mock_log.error.assert_called_with(log_text) - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_process_command_future(self, mock_log): """ Test command valid but no method to process yet @@ -184,7 +184,7 @@ class TestPJLinkRouting(TestCase): mock_log.warning.assert_called_once_with(log_text) @patch.object(pjlink_test, 'pjlink_functions') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_process_command_invalid(self, mock_log, mock_functions): """ Test not a valid command @@ -203,7 +203,7 @@ class TestPJLinkRouting(TestCase): mock_log.error.assert_called_once_with(log_text) @patch.object(pjlink_test, 'pjlink_functions') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_process_command_ok(self, mock_log, mock_functions): """ Test command returned success diff --git a/tests/functional/openlp_core/lib/test_projector_pjlink_commands.py b/tests/functional/openlp_core/projectors/test_projector_pjlink_commands.py similarity index 96% rename from tests/functional/openlp_core/lib/test_projector_pjlink_commands.py rename to tests/functional/openlp_core/projectors/test_projector_pjlink_commands.py index 143206d0a..584b63cf9 100644 --- a/tests/functional/openlp_core/lib/test_projector_pjlink_commands.py +++ b/tests/functional/openlp_core/projectors/test_projector_pjlink_commands.py @@ -20,18 +20,18 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ -Package to test the openlp.core.lib.projector.pjlink commands package. +Package to test the openlp.core.projectors.pjlink commands package. """ from unittest import TestCase from unittest.mock import patch -import openlp.core.lib.projector.pjlink -from openlp.core.lib.projector.db import Projector -from openlp.core.lib.projector.pjlink import PJLink -from openlp.core.lib.projector.constants import ERROR_STRING, PJLINK_ERST_DATA, PJLINK_ERST_STATUS, \ +import openlp.core.projectors.pjlink +from openlp.core.projectors.constants import ERROR_STRING, PJLINK_ERST_DATA, PJLINK_ERST_STATUS, \ PJLINK_POWR_STATUS, \ E_ERROR, E_NOT_CONNECTED, E_SOCKET_ADDRESS_NOT_AVAILABLE, E_UNKNOWN_SOCKET_ERROR, E_WARN, \ S_CONNECTED, S_OFF, S_ON, S_NOT_CONNECTED, S_CONNECTING, S_STANDBY +from openlp.core.projectors.db import Projector +from openlp.core.projectors.pjlink import PJLink from tests.resources.projector.data import TEST_PIN, TEST1_DATA @@ -50,7 +50,7 @@ class TestPJLinkCommands(TestCase): Tests for the PJLink module """ @patch.object(pjlink_test, 'changeStatus') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_change_status_connection_error(self, mock_log, mock_change_status): """ Test change_status with connection error @@ -74,7 +74,7 @@ class TestPJLinkCommands(TestCase): self.assertEqual(mock_log.debug.call_count, 3, 'Debug log should have been called 3 times') @patch.object(pjlink_test, 'changeStatus') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_change_status_connection_status_connecting(self, mock_log, mock_change_status): """ Test change_status with connection status @@ -97,7 +97,7 @@ class TestPJLinkCommands(TestCase): self.assertEqual(mock_log.debug.call_count, 3, 'Debug log should have been called 3 times') @patch.object(pjlink_test, 'changeStatus') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_change_status_connection_status_connected(self, mock_log, mock_change_status): """ Test change_status with connection status @@ -120,7 +120,7 @@ class TestPJLinkCommands(TestCase): self.assertEqual(mock_log.debug.call_count, 3, 'Debug log should have been called 3 times') @patch.object(pjlink_test, 'changeStatus') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_change_status_connection_status_with_message(self, mock_log, mock_change_status): """ Test change_status with connection status @@ -144,7 +144,7 @@ class TestPJLinkCommands(TestCase): self.assertEqual(mock_log.debug.call_count, 3, 'Debug log should have been called 3 times') @patch.object(pjlink_test, 'send_command') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_get_av_mute_status(self, mock_log, mock_send_command): """ Test sending command to retrieve shutter/audio state @@ -164,7 +164,7 @@ class TestPJLinkCommands(TestCase): mock_send_command.assert_called_once_with(cmd=test_data) @patch.object(pjlink_test, 'send_command') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_get_available_inputs(self, mock_log, mock_send_command): """ Test sending command to retrieve avaliable inputs @@ -184,7 +184,7 @@ class TestPJLinkCommands(TestCase): mock_send_command.assert_called_once_with(cmd=test_data) @patch.object(pjlink_test, 'send_command') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_get_error_status(self, mock_log, mock_send_command): """ Test sending command to retrieve projector error status @@ -204,7 +204,7 @@ class TestPJLinkCommands(TestCase): mock_send_command.assert_called_once_with(cmd=test_data) @patch.object(pjlink_test, 'send_command') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_get_input_source(self, mock_log, mock_send_command): """ Test sending command to retrieve current input @@ -224,7 +224,7 @@ class TestPJLinkCommands(TestCase): mock_send_command.assert_called_once_with(cmd=test_data) @patch.object(pjlink_test, 'send_command') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_get_lamp_status(self, mock_log, mock_send_command): """ Test sending command to retrieve lamp(s) status @@ -244,7 +244,7 @@ class TestPJLinkCommands(TestCase): mock_send_command.assert_called_once_with(cmd=test_data) @patch.object(pjlink_test, 'send_command') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_get_manufacturer(self, mock_log, mock_send_command): """ Test sending command to retrieve manufacturer name @@ -264,7 +264,7 @@ class TestPJLinkCommands(TestCase): mock_send_command.assert_called_once_with(cmd=test_data) @patch.object(pjlink_test, 'send_command') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_get_model(self, mock_log, mock_send_command): """ Test sending command to get model information @@ -284,7 +284,7 @@ class TestPJLinkCommands(TestCase): mock_send_command.assert_called_once_with(cmd=test_data) @patch.object(pjlink_test, 'send_command') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_get_name(self, mock_log, mock_send_command): """ Test sending command to get user-assigned name @@ -304,7 +304,7 @@ class TestPJLinkCommands(TestCase): mock_send_command.assert_called_once_with(cmd=test_data) @patch.object(pjlink_test, 'send_command') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_get_other_info(self, mock_log, mock_send_command): """ Test sending command to retrieve other information @@ -324,7 +324,7 @@ class TestPJLinkCommands(TestCase): mock_send_command.assert_called_once_with(cmd=test_data) @patch.object(pjlink_test, 'send_command') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_get_power_status(self, mock_log, mock_send_command): """ Test sending command to retrieve current power state @@ -599,7 +599,7 @@ class TestPJLinkCommands(TestCase): self.assertEqual(pjlink.pjlink_class, '2', 'Non-standard class reply should have set class=2') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_process_clss_invalid_nan(self, mock_log): """ Test CLSS reply has no class number @@ -616,7 +616,7 @@ class TestPJLinkCommands(TestCase): 'Non-standard class reply should have set class=1') mock_log.error.assert_called_once_with(log_text) - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_process_clss_invalid_no_version(self, mock_log): """ Test CLSS reply has no class number @@ -648,7 +648,7 @@ class TestPJLinkCommands(TestCase): # THEN: PJLink instance errors should be None self.assertIsNone(pjlink.projector_errors, 'projector_errors should have been set to None') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_process_erst_data_invalid_length(self, mock_log): """ Test test_projector_process_erst_data_invalid_length @@ -666,7 +666,7 @@ class TestPJLinkCommands(TestCase): self.assertTrue(mock_log.warning.called, 'Warning should have been logged') mock_log.warning.assert_called_once_with(log_text) - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_process_erst_data_invalid_nan(self, mock_log): """ Test test_projector_process_erst_data_invalid_nan @@ -764,7 +764,7 @@ class TestPJLinkCommands(TestCase): self.assertEqual(pjlink.source, '1', 'Input source should be set to "1"') @patch.object(pjlink_test, 'projectorUpdateIcons') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_process_inst(self, mock_log, mock_UpdateIcons): """ Test saving video source available information @@ -787,7 +787,7 @@ class TestPJLinkCommands(TestCase): mock_log.debug.assert_called_once_with(log_data) self.assertTrue(mock_UpdateIcons.emit.called, 'Update Icons should have been called') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_process_lamp_invalid(self, mock_log): """ Test status multiple lamp on/off and hours @@ -858,7 +858,7 @@ class TestPJLinkCommands(TestCase): self.assertEqual(pjlink.lamp[0]['Hours'], 22222, 'Lamp hours should have been set to 22222') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_process_name(self, mock_log): """ Test saving NAME data from projector @@ -1040,7 +1040,7 @@ class TestPJLinkCommands(TestCase): self.assertNotEquals(pjlink.serial_no, test_number, 'Projector serial number should NOT have been set') - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_process_sver(self, mock_log): """ Test invalid software version information - too long @@ -1061,7 +1061,7 @@ class TestPJLinkCommands(TestCase): self.assertIsNone(pjlink.sw_version_received, 'Received software version should not have changed') mock_log.debug.assert_called_once_with(test_log) - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_process_sver_changed(self, mock_log): """ Test invalid software version information - Received different than saved @@ -1086,7 +1086,7 @@ class TestPJLinkCommands(TestCase): # There was 4 calls, but only the last one is checked with this method mock_log.warning.assert_called_with(test_log) - @patch.object(openlp.core.lib.projector.pjlink, 'log') + @patch.object(openlp.core.projectors.pjlink, 'log') def test_projector_process_sver_invalid(self, mock_log): """ Test invalid software version information - too long diff --git a/tests/interfaces/openlp_core/ui/test_projectoreditform.py b/tests/interfaces/openlp_core/ui/test_projectoreditform.py index fc261d9f5..ec2539a29 100644 --- a/tests/interfaces/openlp_core/ui/test_projectoreditform.py +++ b/tests/interfaces/openlp_core/ui/test_projectoreditform.py @@ -20,7 +20,7 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ -Interface tests to test the openlp.core.ui.projector.editform.ProjectorEditForm() +Interface tests to test the openlp.core.projectors.editform.ProjectorEditForm() class and methods. """ import os @@ -28,8 +28,9 @@ from unittest import TestCase from unittest.mock import patch from openlp.core.common.registry import Registry -from openlp.core.lib.projector.db import Projector, ProjectorDB -from openlp.core.ui import ProjectorEditForm +from openlp.core.projectors.db import Projector, ProjectorDB +from openlp.core.projectors.editform import ProjectorEditForm +from openlp.core.projectors.manager import ProjectorManager from tests.helpers.testmixin import TestMixin from tests.resources.projector.data import TEST_DB, TEST1_DATA, TEST2_DATA @@ -48,7 +49,7 @@ class TestProjectorEditForm(TestCase, TestMixin): self.setup_application() self.build_settings() Registry.create() - with patch('openlp.core.lib.projector.db.init_url') as mocked_init_url: + with patch('openlp.core.projectors.db.init_url') as mocked_init_url: if os.path.exists(TEST_DB): os.unlink(TEST_DB) mocked_init_url.return_value = 'sqlite:///' + TEST_DB @@ -66,7 +67,7 @@ class TestProjectorEditForm(TestCase, TestMixin): del self.projector_form self.destroy_settings() - @patch('openlp.core.ui.projector.editform.QtWidgets.QDialog.exec') + @patch('openlp.core.projectors.editform.QtWidgets.QDialog.exec') def test_edit_form_add_projector(self, mocked_exec): """ Test projector edit form with no parameters creates a new entry. @@ -84,7 +85,7 @@ class TestProjectorEditForm(TestCase, TestMixin): self.assertTrue((item.ip is None and item.name is None), 'Projector edit form should have a new Projector() instance to edit') - @patch('openlp.core.ui.projector.editform.QtWidgets.QDialog.exec') + @patch('openlp.core.projectors.editform.QtWidgets.QDialog.exec') def test_edit_form_edit_projector(self, mocked_exec): """ Test projector edit form with existing projector entry diff --git a/tests/interfaces/openlp_core/ui/test_projectormanager.py b/tests/interfaces/openlp_core/ui/test_projectormanager.py index 9184035b8..484d4d68a 100644 --- a/tests/interfaces/openlp_core/ui/test_projectormanager.py +++ b/tests/interfaces/openlp_core/ui/test_projectormanager.py @@ -27,8 +27,9 @@ from unittest import TestCase from unittest.mock import patch, MagicMock from openlp.core.common.registry import Registry -from openlp.core.ui import ProjectorManager, ProjectorEditForm -from openlp.core.lib.projector.db import ProjectorDB +from openlp.core.projectors.db import ProjectorDB +from openlp.core.projectors.editform import ProjectorEditForm +from openlp.core.projectors.manager import ProjectorManager from tests.helpers.testmixin import TestMixin from tests.resources.projector.data import TEST_DB @@ -45,7 +46,7 @@ class TestProjectorManager(TestCase, TestMixin): self.setup_application() self.build_settings() Registry.create() - with patch('openlp.core.lib.projector.db.init_url') as mocked_init_url: + with patch('openlp.core.projectors.db.init_url') as mocked_init_url: if os.path.exists(TEST_DB): os.unlink(TEST_DB) mocked_init_url.return_value = 'sqlite:///%s' % TEST_DB diff --git a/tests/interfaces/openlp_core/ui/test_projectorsourceform.py b/tests/interfaces/openlp_core/ui/test_projectorsourceform.py index 58094a17c..815fe6ded 100644 --- a/tests/interfaces/openlp_core/ui/test_projectorsourceform.py +++ b/tests/interfaces/openlp_core/ui/test_projectorsourceform.py @@ -32,9 +32,9 @@ from unittest.mock import patch from PyQt5.QtWidgets import QDialog from openlp.core.common.registry import Registry -from openlp.core.lib.projector.db import ProjectorDB, Projector -from openlp.core.lib.projector.constants import PJLINK_DEFAULT_CODES, PJLINK_DEFAULT_SOURCES -from openlp.core.ui.projector.sourceselectform import source_group, SourceSelectSingle +from openlp.core.projectors.db import ProjectorDB, Projector +from openlp.core.projectors.constants import PJLINK_DEFAULT_CODES, PJLINK_DEFAULT_SOURCES +from openlp.core.projectors.sourceselectform import source_group, SourceSelectSingle from tests.helpers.testmixin import TestMixin from tests.resources.projector.data import TEST_DB, TEST1_DATA @@ -58,7 +58,7 @@ class ProjectorSourceFormTest(TestCase, TestMixin): """ Test class for the Projector Source Select form module """ - @patch('openlp.core.lib.projector.db.init_url') + @patch('openlp.core.projectors.db.init_url') def setUp(self, mocked_init_url): """ Set up anything necessary for all tests