2022-03-01 15:52:28 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
##########################################################################
|
|
|
|
# OpenLP - Open Source Lyrics Projection #
|
|
|
|
# ---------------------------------------------------------------------- #
|
|
|
|
# Copyright (c) 2008-2022 OpenLP Developers #
|
|
|
|
# ---------------------------------------------------------------------- #
|
|
|
|
# This program is free software: you can redistribute it and/or modify #
|
|
|
|
# it under the terms of the GNU General Public License as published by #
|
|
|
|
# the Free Software Foundation, either version 3 of the License, or #
|
|
|
|
# (at your option) any later version. #
|
|
|
|
# #
|
|
|
|
# This program is distributed in the hope that it will be useful, #
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
|
|
# GNU General Public License for more details. #
|
|
|
|
# #
|
|
|
|
# You should have received a copy of the GNU General Public License #
|
|
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
|
|
|
##########################################################################
|
|
|
|
"""
|
|
|
|
Help classes/functions for PJLink Projector tests
|
|
|
|
"""
|
|
|
|
|
|
|
|
from unittest.mock import MagicMock
|
|
|
|
from PyQt5 import QtNetwork
|
|
|
|
|
|
|
|
from openlp.core.projectors.constants import S_OK, S_NOT_CONNECTED
|
|
|
|
from openlp.core.projectors.db import Projector
|
|
|
|
from tests.resources.projector.data import TEST1_DATA
|
|
|
|
|
|
|
|
|
2022-03-01 19:22:36 +00:00
|
|
|
class FakeProjector(object):
|
|
|
|
"""
|
|
|
|
Helper test class
|
|
|
|
"""
|
|
|
|
def __init__(self, port=4352, name="Faker"):
|
|
|
|
self.link = self
|
|
|
|
self.entry = self
|
|
|
|
self.name = name
|
|
|
|
self.pin = None
|
|
|
|
self.port = port
|
|
|
|
|
|
|
|
|
|
|
|
class FakePJLinkUDP(object):
|
|
|
|
"""
|
|
|
|
Helper test class
|
|
|
|
"""
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def check_settings(self, *args, **kwargs):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
2022-03-01 15:52:28 +00:00
|
|
|
class FakePJLink(object):
|
2022-03-01 19:22:36 +00:00
|
|
|
"""
|
|
|
|
Helper class with signals and methods mocked
|
|
|
|
"""
|
2022-03-01 15:52:28 +00:00
|
|
|
def __init__(self, projector=None, *args, **kwargs):
|
|
|
|
# Signal mocks
|
|
|
|
self.projectorStatus = MagicMock()
|
|
|
|
self.projectorAuthentication = MagicMock()
|
|
|
|
self.projectorNoAuthentication = MagicMock()
|
|
|
|
self.projectorReceivedData = MagicMock()
|
|
|
|
self.projectorUpdateIcons = MagicMock()
|
|
|
|
|
|
|
|
# Method mocks
|
|
|
|
self.changeStatus = MagicMock()
|
|
|
|
self.connect_to_host = MagicMock()
|
|
|
|
self.disconnect_from_host = MagicMock()
|
|
|
|
self.poll_timer = MagicMock()
|
|
|
|
self.set_power_off = MagicMock()
|
|
|
|
self.set_power_on = MagicMock()
|
|
|
|
self.set_shutter_closed = MagicMock()
|
|
|
|
self.set_shutter_open = MagicMock()
|
|
|
|
self.socket_timer = MagicMock()
|
|
|
|
self.status_timer = MagicMock()
|
|
|
|
self.state = MagicMock()
|
|
|
|
|
|
|
|
# Some tests that may include what it thinks are ProjectorItem()
|
|
|
|
# If ProjectorItem() is called, will probably overwrite these - OK
|
|
|
|
self.link = self
|
|
|
|
self.pjlink = self
|
|
|
|
|
|
|
|
# Normal entries from PJLink
|
|
|
|
self.entry = Projector(**TEST1_DATA) if projector is None else projector
|
|
|
|
self.ip = self.entry.ip
|
|
|
|
self.qhost = QtNetwork.QHostAddress(self.ip)
|
|
|
|
self.location = self.entry.location
|
|
|
|
self.mac_adx = self.entry.mac_adx
|
|
|
|
self.name = self.entry.name
|
|
|
|
self.notes = self.entry.notes
|
|
|
|
self.pin = self.entry.pin
|
|
|
|
self.port = int(self.entry.port)
|
|
|
|
self.pjlink_class = "1" if self.entry.pjlink_class is None else self.entry.pjlink_class
|
|
|
|
self.poll_time = 20000 if 'poll_time' not in kwargs else kwargs['poll_time'] * 1000
|
|
|
|
self.socket_timeout = 5000 if 'socket_timeout' not in kwargs else kwargs['socket_timeout'] * 1000
|
|
|
|
self.no_poll = 'no_poll' in kwargs
|
|
|
|
self.status_connect = S_NOT_CONNECTED
|
|
|
|
self.last_command = ''
|
|
|
|
self.projector_status = S_NOT_CONNECTED
|
|
|
|
self.error_status = S_OK
|
|
|
|
self.send_queue = []
|
|
|
|
self.priority_queue = []
|
|
|
|
self.send_busy = False
|
|
|
|
self.status_timer_checks = {} # Keep track of events for the status timer
|
|
|
|
# Default mock return values
|