forked from openlp/openlp
Head
This commit is contained in:
commit
89b7083a69
@ -35,6 +35,7 @@ import logging
|
||||
import imp
|
||||
|
||||
from openlp.core.lib import Plugin, PluginStatus, Registry
|
||||
from openlp.core.utils import AppLocation
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
@ -46,17 +47,14 @@ class PluginManager(object):
|
||||
"""
|
||||
log.info(u'Plugin manager loaded')
|
||||
|
||||
def __init__(self, plugin_dir):
|
||||
def __init__(self):
|
||||
"""
|
||||
The constructor for the plugin manager. Passes the controllers on to
|
||||
the plugins for them to interact with via their ServiceItems.
|
||||
|
||||
``plugin_dir``
|
||||
The directory to search for plugins.
|
||||
"""
|
||||
log.info(u'Plugin manager Initialising')
|
||||
Registry().register(u'plugin_manager', self)
|
||||
self.base_path = os.path.abspath(plugin_dir)
|
||||
self.base_path = os.path.abspath(AppLocation.get_directory(AppLocation.PluginsDir))
|
||||
log.debug(u'Base path %s ', self.base_path)
|
||||
self.plugins = []
|
||||
log.info(u'Plugin manager Initialised')
|
||||
|
@ -634,7 +634,7 @@ class ServiceItem(object):
|
||||
"""
|
||||
self.is_valid = True
|
||||
for frame in self._raw_frames:
|
||||
if self.is_image() and not os.path.exists((frame[u'path'])):
|
||||
if self.is_image() and not os.path.exists(frame[u'path']):
|
||||
self.is_valid = False
|
||||
elif self.is_command():
|
||||
file_name = os.path.join(frame[u'path'], frame[u'title'])
|
||||
|
@ -140,6 +140,7 @@ class Settings(QtCore.QSettings):
|
||||
# circular dependency.
|
||||
u'general/display on monitor': True,
|
||||
u'general/override position': False,
|
||||
u'images/background color': u'#000000',
|
||||
u'media/players': u'webkit',
|
||||
u'media/override player': QtCore.Qt.Unchecked,
|
||||
u'players/background color': u'#000000',
|
||||
|
@ -487,7 +487,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
self.timer_id = 0
|
||||
self.timer_version_id = 0
|
||||
# Set up the path with plugins
|
||||
self.plugin_manager = PluginManager(AppLocation.get_directory(AppLocation.PluginsDir))
|
||||
self.plugin_manager = PluginManager()
|
||||
self.imageManager = ImageManager()
|
||||
# Set up the interface
|
||||
self.setupUi(self)
|
||||
|
@ -37,7 +37,6 @@ from openlp.plugins.images.lib import ImageMediaItem, ImageTab
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
__default_settings__ = {
|
||||
u'images/background color': u'#000000',
|
||||
u'images/images files': []
|
||||
}
|
||||
|
||||
|
@ -84,7 +84,7 @@ class PptviewController(PresentationController):
|
||||
if self.process:
|
||||
return
|
||||
log.debug(u'start PPTView')
|
||||
dllpath = os.path.join(self.plugin_manager.basepath, u'presentations', u'lib', u'pptviewlib',
|
||||
dllpath = os.path.join(self.plugin_manager.base_path, u'presentations', u'lib', u'pptviewlib',
|
||||
u'pptviewlib.dll')
|
||||
self.process = cdll.LoadLibrary(dllpath)
|
||||
if log.isEnabledFor(logging.DEBUG):
|
||||
|
@ -28,7 +28,7 @@ class TestPluginManager(TestCase):
|
||||
# GIVEN: A PluginManager instance and a list with a mocked up plugin whose status is set to Disabled
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Disabled
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run hook_media_manager()
|
||||
@ -45,7 +45,7 @@ class TestPluginManager(TestCase):
|
||||
# GIVEN: A PluginManager instance and a list with a mocked up plugin whose status is set to Active
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Active
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run hook_media_manager()
|
||||
@ -61,7 +61,7 @@ class TestPluginManager(TestCase):
|
||||
# GIVEN: A PluginManager instance and a list with a mocked up plugin whose status is set to Disabled
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Disabled
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run hook_settings_tabs()
|
||||
@ -79,7 +79,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Disabled
|
||||
mocked_settings_form = MagicMock()
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run hook_settings_tabs()
|
||||
@ -98,7 +98,7 @@ class TestPluginManager(TestCase):
|
||||
# GIVEN: A PluginManager instance and a list with a mocked up plugin whose status is set to Active
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Active
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run hook_settings_tabs()
|
||||
@ -115,7 +115,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Active
|
||||
mocked_settings_form = MagicMock()
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run hook_settings_tabs()
|
||||
@ -134,7 +134,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Disabled
|
||||
mocked_import_menu = MagicMock()
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run hook_import_menu()
|
||||
@ -152,7 +152,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Active
|
||||
mocked_import_menu = MagicMock()
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run hook_import_menu()
|
||||
@ -169,7 +169,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Disabled
|
||||
mocked_export_menu = MagicMock()
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run hook_export_menu()
|
||||
@ -187,7 +187,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Active
|
||||
mocked_export_menu = MagicMock()
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run hook_export_menu()
|
||||
@ -204,7 +204,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Disabled
|
||||
mocked_tools_menu = MagicMock()
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run hook_tools_menu()
|
||||
@ -222,7 +222,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Active
|
||||
mocked_tools_menu = MagicMock()
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run hook_tools_menu()
|
||||
@ -239,7 +239,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Disabled
|
||||
mocked_plugin.isActive.return_value = False
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run initialise_plugins()
|
||||
@ -257,7 +257,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Active
|
||||
mocked_plugin.isActive.return_value = True
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run initialise_plugins()
|
||||
@ -275,7 +275,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Disabled
|
||||
mocked_plugin.isActive.return_value = False
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run finalise_plugins()
|
||||
@ -293,7 +293,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Active
|
||||
mocked_plugin.isActive.return_value = True
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run finalise_plugins()
|
||||
@ -310,7 +310,7 @@ class TestPluginManager(TestCase):
|
||||
# GIVEN: A PluginManager instance and a list with a mocked up plugin whose status is set to Active
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.name = 'Mocked Plugin'
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run finalise_plugins()
|
||||
@ -326,7 +326,7 @@ class TestPluginManager(TestCase):
|
||||
# GIVEN: A PluginManager instance and a list with a mocked up plugin whose status is set to Active
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.name = 'Mocked Plugin'
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run finalise_plugins()
|
||||
@ -343,7 +343,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Disabled
|
||||
mocked_plugin.isActive.return_value = False
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run finalise_plugins()
|
||||
@ -362,7 +362,7 @@ class TestPluginManager(TestCase):
|
||||
mocked_plugin = MagicMock()
|
||||
mocked_plugin.status = PluginStatus.Active
|
||||
mocked_plugin.isActive.return_value = True
|
||||
plugin_manager = PluginManager('')
|
||||
plugin_manager = PluginManager()
|
||||
plugin_manager.plugins = [mocked_plugin]
|
||||
|
||||
# WHEN: We run new_service_created()
|
||||
|
@ -11,7 +11,6 @@ from openlp.core.lib import Registry
|
||||
TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), u'..', u'..', u'resources'))
|
||||
|
||||
|
||||
|
||||
class TestRegistry(TestCase):
|
||||
|
||||
def registry_service_test(self):
|
||||
|
@ -7,7 +7,7 @@ from unittest import TestCase
|
||||
from mock import MagicMock
|
||||
from PyQt4 import QtGui, QtCore
|
||||
|
||||
from openlp.core.lib import ScreenList
|
||||
from openlp.core.lib import Registry, ScreenList
|
||||
|
||||
|
||||
SCREEN = {
|
||||
@ -24,17 +24,21 @@ class TestScreenList(TestCase):
|
||||
Set up the components need for all tests.
|
||||
"""
|
||||
self.application = QtGui.QApplication.instance()
|
||||
Registry.create()
|
||||
self.application.setOrganizationName(u'OpenLP-tests')
|
||||
self.application.setOrganizationDomain(u'openlp.org')
|
||||
self.screens = ScreenList.create(self.application.desktop())
|
||||
|
||||
def tearDown(self):
|
||||
"""
|
||||
Delete QApplication.
|
||||
"""
|
||||
del self.screens
|
||||
del self.application
|
||||
|
||||
def add_desktop_test(self):
|
||||
"""
|
||||
Test the ScreenList class' screen_count_changed method to check if new monitors are detected by OpenLP.
|
||||
Test the ScreenList class' - screen_count_changed method to check if new monitors are detected by OpenLP.
|
||||
"""
|
||||
# GIVEN: The screen list.
|
||||
old_screens = copy.deepcopy(self.screens.screen_list)
|
||||
@ -52,4 +56,3 @@ class TestScreenList(TestCase):
|
||||
|
||||
# THEN: The screens should be identically.
|
||||
assert SCREEN == new_screens.pop(), u'The new screen should be identically to the screen defined above.'
|
||||
|
||||
|
@ -4,9 +4,9 @@
|
||||
import os
|
||||
import cPickle
|
||||
from unittest import TestCase
|
||||
from mock import MagicMock
|
||||
from mock import MagicMock, patch
|
||||
|
||||
from openlp.core.lib import ServiceItem, Registry
|
||||
from openlp.core.lib import ItemCapabilities, ServiceItem, Registry
|
||||
|
||||
|
||||
VERSE = u'The Lord said to {r}Noah{/r}: \n'\
|
||||
@ -17,7 +17,8 @@ VERSE = u'The Lord said to {r}Noah{/r}: \n'\
|
||||
'{r}C{/r}{b}h{/b}{bl}i{/bl}{y}l{/y}{g}d{/g}{pk}'\
|
||||
'r{/pk}{o}e{/o}{pp}n{/pp} of the Lord\n'
|
||||
FOOTER = [u'Arky Arky (Unknown)', u'Public Domain', u'CCLI 123456']
|
||||
TESTPATH = os.path.abspath(os.path.join(os.path.dirname(__file__), u'..', u'..', u'resources'))
|
||||
|
||||
TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), u'..', u'..', u'resources'))
|
||||
|
||||
|
||||
class TestServiceItem(TestCase):
|
||||
@ -26,7 +27,7 @@ class TestServiceItem(TestCase):
|
||||
"""
|
||||
Set up the Registry
|
||||
"""
|
||||
registry = Registry.create()
|
||||
Registry.create()
|
||||
mocked_renderer = MagicMock()
|
||||
mocked_renderer.format_slide.return_value = [VERSE]
|
||||
Registry().register(u'renderer', mocked_renderer)
|
||||
@ -77,7 +78,7 @@ class TestServiceItem(TestCase):
|
||||
service_item.name = u'test'
|
||||
|
||||
# WHEN: adding image to a service item
|
||||
test_image = os.path.join(TESTPATH, u'church.jpg')
|
||||
test_image = os.path.join(TEST_PATH, u'church.jpg')
|
||||
service_item.add_from_image(test_image, u'Image Title')
|
||||
|
||||
# THEN: We should get back a valid service item
|
||||
@ -100,12 +101,12 @@ class TestServiceItem(TestCase):
|
||||
service = service_item.get_service_repr(True)
|
||||
|
||||
# THEN: We should have two parts of the service.
|
||||
assert len(service) == 2, u'A saved service has two parts'
|
||||
assert service[u'header'][u'name'] == u'test' , u'A test plugin was returned'
|
||||
assert service[u'data'][0][u'title'] == u'Image Title' , u'The first title name matches the request'
|
||||
assert service[u'data'][0][u'path'] == test_image , u'The first image name matches'
|
||||
assert len(service) == 2, u'A saved service should have two parts'
|
||||
assert service[u'header'][u'name'] == u'test', u'A test plugin should have been returned'
|
||||
assert service[u'data'][0][u'title'] == u'Image Title', u'"Image Title" should be returned as the title'
|
||||
assert service[u'data'][0][u'path'] == test_image, u'The returned path should match the inputted path'
|
||||
assert service[u'data'][0][u'title'] != service[u'data'][1][u'title'], \
|
||||
u'The individual titles should not match'
|
||||
u'The individual slide titles should not match'
|
||||
assert service[u'data'][0][u'path'] == service[u'data'][1][u'path'], u'The file paths should match'
|
||||
|
||||
# WHEN validating a service item
|
||||
@ -121,7 +122,7 @@ class TestServiceItem(TestCase):
|
||||
service_item.validate_item([u'jpg'])
|
||||
|
||||
# THEN the service item should be valid
|
||||
assert service_item.is_valid is False, u'The service item is not valid due to validation changes'
|
||||
assert service_item.is_valid is False, u'The service item should not be valid due to validation changes'
|
||||
|
||||
def serviceitem_add_command_test(self):
|
||||
"""
|
||||
@ -132,26 +133,26 @@ class TestServiceItem(TestCase):
|
||||
service_item.name = u'test'
|
||||
|
||||
# WHEN: adding image to a service item
|
||||
test_file = os.path.join(TESTPATH, u'church.jpg')
|
||||
service_item.add_from_command(TESTPATH, u'church.jpg', test_file)
|
||||
test_file = os.path.join(TEST_PATH, u'church.jpg')
|
||||
service_item.add_from_command(TEST_PATH, u'church.jpg', test_file)
|
||||
|
||||
# THEN: We should get back a valid service item
|
||||
assert service_item.is_valid is True, u'The new service item should be valid'
|
||||
assert len(service_item._display_frames) == 0, u'The service item has no display frames '
|
||||
assert len(service_item._display_frames) == 0, u'The service item should have no display frames '
|
||||
|
||||
# THEN: We should have a page of output.
|
||||
assert len(service_item._raw_frames) == 1, u'A valid rendered Service Item has one raw frame'
|
||||
assert service_item.get_rendered_frame(0) == test_file, u'The image matches the input'
|
||||
assert len(service_item._raw_frames) == 1, u'A valid rendered Service Item should have one raw frame'
|
||||
assert service_item.get_rendered_frame(0) == test_file, u'The image should match the input'
|
||||
|
||||
# WHEN requesting a saved service item
|
||||
service = service_item.get_service_repr(True)
|
||||
|
||||
# THEN: We should have two parts of the service.
|
||||
assert len(service) == 2, u'A saved service has two parts'
|
||||
assert service[u'header'][u'name'] == u'test' , u'A test plugin'
|
||||
assert service[u'data'][0][u'title'] == u'church.jpg' , u'The first title name '
|
||||
assert service[u'data'][0][u'path'] == TESTPATH , u'The first image name'
|
||||
assert service[u'data'][0][u'image'] == test_file , u'The first image name'
|
||||
assert len(service) == 2, u'The saved service should have two parts'
|
||||
assert service[u'header'][u'name'] == u'test', u'A test plugin should be returned'
|
||||
assert service[u'data'][0][u'title'] == u'church.jpg', u'The first title name should be "church,jpg"'
|
||||
assert service[u'data'][0][u'path'] == TEST_PATH, u'The path should match the input path'
|
||||
assert service[u'data'][0][u'image'] == test_file, u'The image should match the full path to image'
|
||||
|
||||
# WHEN validating a service item
|
||||
service_item.validate_item([u'jpg'])
|
||||
@ -163,7 +164,7 @@ class TestServiceItem(TestCase):
|
||||
service_item.validate_item([u'png'])
|
||||
|
||||
# THEN the service item should not be valid
|
||||
assert service_item.is_valid is False, u'The service item is not valid'
|
||||
assert service_item.is_valid is False, u'The service item should not be valid'
|
||||
|
||||
def serviceitem_load_custom_from_service_test(self):
|
||||
"""
|
||||
@ -171,42 +172,103 @@ class TestServiceItem(TestCase):
|
||||
"""
|
||||
# GIVEN: A new service item and a mocked add icon function
|
||||
service_item = ServiceItem(None)
|
||||
mocked_add_icon = MagicMock()
|
||||
service_item.add_icon = mocked_add_icon
|
||||
service_item.add_icon = MagicMock()
|
||||
|
||||
# WHEN: adding a custom from a saved Service
|
||||
line = self.convert_file_service_item(u'serviceitem_custom1.osd')
|
||||
line = self.convert_file_service_item(u'serviceitem_custom_1.osd')
|
||||
service_item.set_from_service(line)
|
||||
|
||||
# THEN: We should get back a valid service item
|
||||
assert service_item.is_valid is True, u'The new service item should be valid'
|
||||
assert len(service_item._display_frames) == 0, u'The service item has no display frames'
|
||||
assert len(service_item.capabilities) == 5, u'There are 5 default custom item capabilities'
|
||||
assert len(service_item._display_frames) == 0, u'The service item should have no display frames'
|
||||
assert len(service_item.capabilities) == 5, u'There should be 5 default custom item capabilities'
|
||||
service_item.render(True)
|
||||
assert (service_item.get_display_title()) == u'Test Custom', u'The custom title should be correct'
|
||||
assert service_item.get_display_title() == u'Test Custom', u'The title should be "Test Custom"'
|
||||
assert service_item.get_frames()[0][u'text'] == VERSE[:-1], \
|
||||
u'The returned text matches the input, except the last line feed'
|
||||
assert service_item.get_rendered_frame(1) == VERSE.split(u'\n', 1)[0], u'The first line has been returned'
|
||||
assert service_item.get_frame_title(0) == u'Slide 1', u'"Slide 1" has been returned as the title'
|
||||
assert service_item.get_frame_title(1) == u'Slide 2', u'"Slide 2" has been returned as the title'
|
||||
assert service_item.get_frame_title(2) == u'', u'Blank has been returned as the title of slide 3'
|
||||
|
||||
def serviceitem_load_image_from_service_test(self):
|
||||
"""
|
||||
Test the Service Item - adding an image from a saved service
|
||||
"""
|
||||
# GIVEN: A new service item and a mocked add icon function
|
||||
service_item = ServiceItem(None)
|
||||
mocked_add_icon = MagicMock()
|
||||
service_item.add_icon = mocked_add_icon
|
||||
image_name = u'image_1.jpg'
|
||||
test_file = os.path.join(TEST_PATH, image_name)
|
||||
frame_array = {u'path': test_file, u'title': image_name}
|
||||
|
||||
# WHEN: adding a custom from a saved Service
|
||||
service_item = ServiceItem(None)
|
||||
service_item.add_icon = MagicMock()
|
||||
|
||||
# WHEN: adding an image from a saved Service and mocked exists
|
||||
line = self.convert_file_service_item(u'serviceitem_image_1.osd')
|
||||
with patch('os.path.exists'):
|
||||
service_item.set_from_service(line, TEST_PATH)
|
||||
|
||||
# THEN: We should get back a valid service item
|
||||
assert service_item.is_valid is True, u'The new service item should be valid'
|
||||
print service_item.get_rendered_frame(0)
|
||||
assert service_item.get_rendered_frame(0) == test_file, u'The first frame should match the path to the image'
|
||||
assert service_item.get_frames()[0] == frame_array, u'The return should match frame array1'
|
||||
assert service_item.get_frame_path(0) == test_file, u'The frame path should match the full path to the image'
|
||||
assert service_item.get_frame_title(0) == image_name, u'The frame title should match the image name'
|
||||
assert service_item.get_display_title() == image_name, u'The display title should match the first image name'
|
||||
assert service_item.is_image() is True, u'This service item is an Image'
|
||||
assert service_item.is_capable(ItemCapabilities.CanMaintain) is True, u'This service item can be Maintained'
|
||||
assert service_item.is_capable(ItemCapabilities.CanPreview) is True, u'This service item can be Previewed'
|
||||
assert service_item.is_capable(ItemCapabilities.CanLoop) is True, u'This service item can be made to Loop'
|
||||
assert service_item.is_capable(ItemCapabilities.CanAppend) is True, \
|
||||
u'This service item can have new items added'
|
||||
|
||||
def serviceitem_load_image_from_local_service_test(self):
|
||||
"""
|
||||
Test the Service Item - adding an image from a saved local service
|
||||
"""
|
||||
# GIVEN: A new service item and a mocked add icon function
|
||||
image_name1 = u'image_1.jpg'
|
||||
image_name2 = u'image_2.jpg'
|
||||
test_file1 = os.path.join(u'/home/openlp', image_name1)
|
||||
test_file2 = os.path.join(u'/home/openlp', image_name2)
|
||||
frame_array1 = {u'path': test_file1, u'title': image_name1}
|
||||
frame_array2 = {u'path': test_file2, u'title': image_name2}
|
||||
|
||||
service_item = ServiceItem(None)
|
||||
service_item.add_icon = MagicMock()
|
||||
|
||||
# WHEN: adding an image from a saved Service and mocked exists
|
||||
line = self.convert_file_service_item(u'serviceitem_image_2.osd')
|
||||
with patch('os.path.exists'):
|
||||
service_item.set_from_service(line)
|
||||
|
||||
# THEN: We should get back a valid service item
|
||||
assert service_item.is_valid is True, u'The new service item should be valid'
|
||||
assert service_item.get_rendered_frame(0) == test_file1, u'The first frame should match the path to the image'
|
||||
assert service_item.get_rendered_frame(1) == test_file2, u'The Second frame should match the path to the image'
|
||||
assert service_item.get_frames()[0] == frame_array1, u'The return should match the frame array1'
|
||||
assert service_item.get_frames()[1] == frame_array2, u'The return should match the frame array2'
|
||||
assert service_item.get_frame_path(0) == test_file1, u'The frame path should match the full path to the image'
|
||||
assert service_item.get_frame_path(1) == test_file2, u'The frame path should match the full path to the image'
|
||||
assert service_item.get_frame_title(0) == image_name1, u'The 1st frame title should match the image name'
|
||||
assert service_item.get_frame_title(1) == image_name2, u'The 2nd frame title should match the image name'
|
||||
assert service_item.get_display_title().lower() == service_item.name, \
|
||||
u'The plugin name should match the display title, as there are > 1 Images'
|
||||
assert service_item.is_image() is True, u'This service item should be of an "image" type'
|
||||
assert service_item.is_capable(ItemCapabilities.CanMaintain) is True, u'This service item can be Maintained'
|
||||
assert service_item.is_capable(ItemCapabilities.CanPreview) is True, u'This service item can be Previewed'
|
||||
assert service_item.is_capable(ItemCapabilities.CanLoop) is True, u'This service item can be made to Loop'
|
||||
assert service_item.is_capable(ItemCapabilities.CanAppend) is True, \
|
||||
u'This service item can have new items added'
|
||||
|
||||
def convert_file_service_item(self, name):
|
||||
service_file = os.path.join(TESTPATH, name)
|
||||
service_file = os.path.join(TEST_PATH, name)
|
||||
try:
|
||||
open_file = open(service_file, u'r')
|
||||
items = cPickle.load(open_file)
|
||||
first_line = items[0]
|
||||
except:
|
||||
except IOError:
|
||||
first_line = u''
|
||||
return first_line
|
||||
|
||||
|
@ -6,7 +6,7 @@ import sys
|
||||
from tempfile import mkstemp
|
||||
from unittest import TestCase
|
||||
|
||||
from mock import MagicMock, patch
|
||||
from mock import MagicMock
|
||||
from PyQt4 import QtGui
|
||||
|
||||
from openlp.core.lib.pluginmanager import PluginManager
|
||||
@ -29,18 +29,18 @@ class TestPluginManager(TestCase):
|
||||
self.app = QtGui.QApplication.instance()
|
||||
self.main_window = QtGui.QMainWindow()
|
||||
Registry().register(u'main_window', self.main_window)
|
||||
self.plugins_dir = os.path.abspath(os.path.join(os.path.basename(__file__), u'..', u'openlp', u'plugins'))
|
||||
|
||||
def tearDown(self):
|
||||
os.unlink(self.ini_file)
|
||||
del self.app
|
||||
del self.main_window
|
||||
|
||||
def find_plugins_test(self):
|
||||
"""
|
||||
Test the find_plugins() method to ensure it imports the correct plugins.
|
||||
"""
|
||||
# GIVEN: A plugin manager
|
||||
plugin_manager = PluginManager(self.plugins_dir)
|
||||
plugin_manager = PluginManager()
|
||||
|
||||
# WHEN: We mock out sys.platform to make it return "darwin" and then find the plugins
|
||||
old_platform = sys.platform
|
||||
|
@ -14,7 +14,7 @@ class TestStartFileRenameForm(TestCase):
|
||||
"""
|
||||
Create the UI
|
||||
"""
|
||||
registry = Registry.create()
|
||||
Registry.create()
|
||||
self.app = QtGui.QApplication.instance()
|
||||
self.main_window = QtGui.QMainWindow()
|
||||
Registry().register(u'main_window', self.main_window)
|
||||
@ -78,6 +78,6 @@ class TestStartFileRenameForm(TestCase):
|
||||
# WHEN: 'Typing' a string containing invalid file characters.
|
||||
QtTest.QTest.keyClicks(self.form.fileNameEdit, u'I/n\\v?a*l|i<d> \F[i\l]e" :N+a%me')
|
||||
|
||||
# THEN: The text in the QLineEdit should be the same as the input string with the invalid chatacters filtered
|
||||
# THEN: The text in the QLineEdit should be the same as the input string with the invalid characters filtered
|
||||
# out.
|
||||
self.assertEqual(self.form.fileNameEdit.text(), u'Invalid File Name')
|
||||
|
@ -3,7 +3,7 @@
|
||||
"""
|
||||
|
||||
from unittest import TestCase
|
||||
from mock import MagicMock
|
||||
from mock import MagicMock, patch
|
||||
|
||||
from PyQt4 import QtGui
|
||||
|
||||
@ -11,7 +11,7 @@ from openlp.core.lib import Registry, ScreenList
|
||||
from openlp.core.ui.mainwindow import MainWindow
|
||||
|
||||
|
||||
class TestStartNoteDialog(TestCase):
|
||||
class TestServiceManager(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
"""
|
||||
@ -21,14 +21,15 @@ class TestStartNoteDialog(TestCase):
|
||||
self.app = QtGui.QApplication.instance()
|
||||
ScreenList.create(self.app.desktop())
|
||||
Registry().register(u'application', MagicMock())
|
||||
self.main_window = MainWindow()
|
||||
self.service_manager = Registry().get(u'service_manager')
|
||||
#with patch(u'openlp.core.lib.PluginManager'):
|
||||
# self.main_window = MainWindow()
|
||||
#self.service_manager = Registry().get(u'service_manager')
|
||||
|
||||
def tearDown(self):
|
||||
"""
|
||||
Delete all the C++ objects at the end so that we don't have a segfault
|
||||
"""
|
||||
del self.main_window
|
||||
#del self.main_window
|
||||
del self.app
|
||||
|
||||
def basic_service_manager_test(self):
|
||||
@ -39,5 +40,6 @@ class TestStartNoteDialog(TestCase):
|
||||
|
||||
# WHEN I have an empty display
|
||||
# THEN the count of items should be zero
|
||||
self.assertEqual(self.service_manager.service_manager_list.topLevelItemCount(), 0,
|
||||
u'The service manager list should be empty ')
|
||||
#self.assertEqual(self.service_manager.service_manager_list.topLevelItemCount(), 0,
|
||||
# u'The service manager list should be empty ')
|
||||
pass
|
||||
|
@ -74,6 +74,6 @@ V:/plugins/plugin_images.png
|
||||
p32
|
||||
ssg15
|
||||
(lp33
|
||||
VIMG_7453.JPG
|
||||
Vimage_1.jpg
|
||||
p34
|
||||
assa.
|
101
tests/resources/serviceitem_image_2.osd
Normal file
101
tests/resources/serviceitem_image_2.osd
Normal file
@ -0,0 +1,101 @@
|
||||
(lp1
|
||||
(dp2
|
||||
Vserviceitem
|
||||
p3
|
||||
(dp4
|
||||
Vheader
|
||||
p5
|
||||
(dp6
|
||||
Vxml_version
|
||||
p7
|
||||
NsVauto_play_slides_loop
|
||||
p8
|
||||
I00
|
||||
sVauto_play_slides_once
|
||||
p9
|
||||
I00
|
||||
sVwill_auto_start
|
||||
p10
|
||||
I00
|
||||
sVtitle
|
||||
p11
|
||||
VImages
|
||||
p12
|
||||
sVcapabilities
|
||||
p13
|
||||
(lp14
|
||||
I3
|
||||
aI1
|
||||
aI5
|
||||
aI6
|
||||
asVtheme
|
||||
p15
|
||||
I-1
|
||||
sVbackground_audio
|
||||
p16
|
||||
(lp17
|
||||
sVicon
|
||||
p18
|
||||
V:/plugins/plugin_images.png
|
||||
p19
|
||||
sVtype
|
||||
p20
|
||||
I2
|
||||
sVstart_time
|
||||
p21
|
||||
I0
|
||||
sVfrom_plugin
|
||||
p22
|
||||
I00
|
||||
sVmedia_length
|
||||
p23
|
||||
I0
|
||||
sVdata
|
||||
p24
|
||||
V
|
||||
sVtimed_slide_interval
|
||||
p25
|
||||
I0
|
||||
sVaudit
|
||||
p26
|
||||
V
|
||||
sVsearch
|
||||
p27
|
||||
V
|
||||
sVname
|
||||
p28
|
||||
Vimages
|
||||
p29
|
||||
sVfooter
|
||||
p30
|
||||
(lp31
|
||||
sVnotes
|
||||
p32
|
||||
V
|
||||
sVplugin
|
||||
p33
|
||||
g29
|
||||
sVtheme_overwritten
|
||||
p34
|
||||
I00
|
||||
sVend_time
|
||||
p35
|
||||
I0
|
||||
ssg24
|
||||
(lp36
|
||||
(dp37
|
||||
Vpath
|
||||
p38
|
||||
V/home/openlp/image_1.jpg
|
||||
p39
|
||||
sg11
|
||||
Vimage_1.jpg
|
||||
p40
|
||||
sa(dp41
|
||||
g38
|
||||
V/home/openlp/image_2.jpg
|
||||
p42
|
||||
sg11
|
||||
Vimage_2.jpg
|
||||
p43
|
||||
sassa.
|
Loading…
Reference in New Issue
Block a user