ProjectorManager tests

This commit is contained in:
Ken Roberts 2022-01-20 21:22:41 +00:00 committed by Tim Bentley
parent 51623ebf95
commit c0713a56d4

View File

@ -22,6 +22,8 @@
Interface tests to test the themeManager class and related methods. Interface tests to test the themeManager class and related methods.
""" """
import pytest import pytest
import logging
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
from openlp.core.projectors.db import ProjectorDB from openlp.core.projectors.db import ProjectorDB
@ -41,6 +43,13 @@ def projector_manager(settings):
del proj_manager del proj_manager
@pytest.fixture()
def projector_manager_nodb(settings):
proj_manager = ProjectorManager(projectordb=None)
yield proj_manager
del proj_manager
def test_bootstrap_initialise(projector_manager): def test_bootstrap_initialise(projector_manager):
""" """
Test initialize calls correct startup functions Test initialize calls correct startup functions
@ -52,6 +61,20 @@ def test_bootstrap_initialise(projector_manager):
'Initialization should have created a ProjectorDB() instance' 'Initialization should have created a ProjectorDB() instance'
def test_bootstrap_initialise_nodb(projector_manager_nodb, caplog):
"""
Test log entry creating new projector DB
"""
caplog.set_level(logging.DEBUG)
# WHEN: ProjectorManager created with no DB set
caplog.clear()
projector_manager_nodb.bootstrap_initialise()
# THEN: Log should indicate new DB being created
assert caplog.record_tuples[3] == ('openlp.core.projectors.manager', 10, 'Creating new ProjectorDB() instance'), \
"ProjectorManager should have indicated a new DB being created"
def test_bootstrap_post_set_up(projector_manager): def test_bootstrap_post_set_up(projector_manager):
""" """
Test post-initialize calls proper setups Test post-initialize calls proper setups
@ -70,3 +93,22 @@ def test_bootstrap_post_set_up(projector_manager):
'Initialization should have created a Projector Edit Form' 'Initialization should have created a Projector Edit Form'
assert projector_manager.projectordb is projector_manager.projector_form.projectordb, \ assert projector_manager.projectordb is projector_manager.projector_form.projectordb, \
'ProjectorEditForm should be using same ProjectorDB() instance as ProjectorManager' 'ProjectorEditForm should be using same ProjectorDB() instance as ProjectorManager'
def test_bootstrap_post_set_up_autostart_projector(projector_manager_nodb, caplog):
"""
Test post-initialize calling log and QTimer on autostart
"""
# GIVEN: Setup mocks
with patch('openlp.core.projectors.manager.QtCore.QTimer.singleShot') as mock_timer:
caplog.set_level(logging.DEBUG)
# WHEN: Initializations called
projector_manager_nodb.bootstrap_initialise()
projector_manager_nodb.autostart = True
projector_manager_nodb.bootstrap_post_set_up()
# THEN: verify log entries and timer calls
mock_timer.assert_called_once_with(1500, projector_manager_nodb._load_projectors)
assert caplog.record_tuples[-1] == ('openlp.core.projectors.manager', 10,
'Delaying 1.5 seconds before loading all projectors'), \
"Last log entry should be autoloading entry"