forked from openlp/openlp
Merge head
This commit is contained in:
commit
dadfbcfacb
@ -34,6 +34,7 @@ if os.name == 'nt':
|
|||||||
from ctypes import cdll
|
from ctypes import cdll
|
||||||
from ctypes.wintypes import RECT
|
from ctypes.wintypes import RECT
|
||||||
|
|
||||||
|
from openlp.core.utils import AppLocation
|
||||||
from openlp.core.lib import ScreenList
|
from openlp.core.lib import ScreenList
|
||||||
from .presentationcontroller import PresentationController, PresentationDocument
|
from .presentationcontroller import PresentationController, PresentationDocument
|
||||||
|
|
||||||
@ -85,8 +86,8 @@ class PptviewController(PresentationController):
|
|||||||
if self.process:
|
if self.process:
|
||||||
return
|
return
|
||||||
log.debug('start PPTView')
|
log.debug('start PPTView')
|
||||||
dll_path = os.path.join(
|
dll_path = os.path.join(AppLocation.get_directory(AppLocation.AppDir),
|
||||||
self.plugin_manager.base_path, 'presentations', 'lib', 'pptviewlib', 'pptviewlib.dll')
|
'presentations', 'lib', 'pptviewlib', 'pptviewlib.dll')
|
||||||
self.process = cdll.LoadLibrary(dll_path)
|
self.process = cdll.LoadLibrary(dll_path)
|
||||||
if log.isEnabledFor(logging.DEBUG):
|
if log.isEnabledFor(logging.DEBUG):
|
||||||
self.process.SetDebug(1)
|
self.process.SetDebug(1)
|
||||||
|
@ -607,7 +607,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog, RegistryProperties):
|
|||||||
def on_verse_add_button_clicked(self):
|
def on_verse_add_button_clicked(self):
|
||||||
self.verse_form.set_verse('', True)
|
self.verse_form.set_verse('', True)
|
||||||
if self.verse_form.exec_():
|
if self.verse_form.exec_():
|
||||||
after_text, verse_tag, verse_num = self.verse_form.get_verse
|
after_text, verse_tag, verse_num = self.verse_form.get_verse()
|
||||||
verse_def = '%s%s' % (verse_tag, verse_num)
|
verse_def = '%s%s' % (verse_tag, verse_num)
|
||||||
item = QtGui.QTableWidgetItem(after_text)
|
item = QtGui.QTableWidgetItem(after_text)
|
||||||
item.setData(QtCore.Qt.UserRole, verse_def)
|
item.setData(QtCore.Qt.UserRole, verse_def)
|
||||||
@ -625,7 +625,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog, RegistryProperties):
|
|||||||
verse_id = item.data(QtCore.Qt.UserRole)
|
verse_id = item.data(QtCore.Qt.UserRole)
|
||||||
self.verse_form.set_verse(temp_text, True, verse_id)
|
self.verse_form.set_verse(temp_text, True, verse_id)
|
||||||
if self.verse_form.exec_():
|
if self.verse_form.exec_():
|
||||||
after_text, verse_tag, verse_num = self.verse_form.get_verse
|
after_text, verse_tag, verse_num = self.verse_form.get_verse()
|
||||||
verse_def = '%s%s' % (verse_tag, verse_num)
|
verse_def = '%s%s' % (verse_tag, verse_num)
|
||||||
item.setData(QtCore.Qt.UserRole, verse_def)
|
item.setData(QtCore.Qt.UserRole, verse_def)
|
||||||
item.setText(after_text)
|
item.setText(after_text)
|
||||||
@ -667,7 +667,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog, RegistryProperties):
|
|||||||
self.verse_form.set_verse('')
|
self.verse_form.set_verse('')
|
||||||
if not self.verse_form.exec_():
|
if not self.verse_form.exec_():
|
||||||
return
|
return
|
||||||
verse_list = self.verse_form.get_all_verses
|
verse_list = self.verse_form.get_all_verses()
|
||||||
verse_list = str(verse_list.replace('\r\n', '\n'))
|
verse_list = str(verse_list.replace('\r\n', '\n'))
|
||||||
self.verse_list_widget.clear()
|
self.verse_list_widget.clear()
|
||||||
self.verse_list_widget.setRowCount(0)
|
self.verse_list_widget.setRowCount(0)
|
||||||
|
55
tests/functional/openlp_core_lib/test_ui.py
Normal file
55
tests/functional/openlp_core_lib/test_ui.py
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
|
# --------------------------------------------------------------------------- #
|
||||||
|
# Copyright (c) 2008-2014 Raoul Snyman #
|
||||||
|
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
|
||||||
|
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
|
||||||
|
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
|
||||||
|
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
|
||||||
|
# Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
|
||||||
|
# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Dave Warnock, #
|
||||||
|
# Frode Woldsund, Martin Zibricky, Patrick Zimmermann #
|
||||||
|
# --------------------------------------------------------------------------- #
|
||||||
|
# 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; version 2 of the License. #
|
||||||
|
# #
|
||||||
|
# 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, write to the Free Software Foundation, Inc., 59 #
|
||||||
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||||
|
###############################################################################
|
||||||
|
"""
|
||||||
|
Package to test the openlp.core.lib.ui package.
|
||||||
|
"""
|
||||||
|
from PyQt4 import QtGui
|
||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
|
from openlp.core.lib.ui import *
|
||||||
|
|
||||||
|
|
||||||
|
class TestUi(TestCase):
|
||||||
|
"""
|
||||||
|
Test the functions in the ui module
|
||||||
|
"""
|
||||||
|
|
||||||
|
def test_add_welcome_page(self):
|
||||||
|
"""
|
||||||
|
Test appending a welcome page to a wizard
|
||||||
|
"""
|
||||||
|
# GIVEN: A wizard
|
||||||
|
wizard = QtGui.QWizard()
|
||||||
|
|
||||||
|
# WHEN: A welcome page has been added to the wizard
|
||||||
|
add_welcome_page(wizard, ':/wizards/wizard_firsttime.bmp')
|
||||||
|
|
||||||
|
# THEN: The wizard should have one page with a pixmap.
|
||||||
|
self.assertEqual(1, len(wizard.pageIds()), 'The wizard should have one page.')
|
||||||
|
self.assertIsInstance(wizard.page(0).pixmap(QtGui.QWizard.WatermarkPixmap), QtGui.QPixmap)
|
@ -30,19 +30,78 @@
|
|||||||
This module contains tests for the pptviewcontroller module of the Presentations plugin.
|
This module contains tests for the pptviewcontroller module of the Presentations plugin.
|
||||||
"""
|
"""
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
|
if os.name == 'nt':
|
||||||
|
from ctypes import cdll
|
||||||
|
|
||||||
|
from tempfile import mkdtemp
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
from tests.functional import MagicMock, patch
|
from tests.functional import MagicMock, patch
|
||||||
|
from tests.helpers.testmixin import TestMixin
|
||||||
|
|
||||||
from openlp.plugins.presentations.lib.pptviewcontroller import PptviewDocument
|
from openlp.plugins.presentations.lib.pptviewcontroller import PptviewDocument, PptviewController
|
||||||
|
|
||||||
|
|
||||||
|
class TestPptviewController(TestCase, TestMixin):
|
||||||
|
"""
|
||||||
|
Test the PptviewController Class
|
||||||
|
"""
|
||||||
#TODO: Items left to test
|
#TODO: Items left to test
|
||||||
# PptviewController
|
# PptviewController
|
||||||
# __init__
|
|
||||||
# check_availablecheck_installed
|
|
||||||
# start_process(self)
|
# start_process(self)
|
||||||
# kill
|
# kill
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
"""
|
||||||
|
Set up the patches and mocks need for all tests.
|
||||||
|
"""
|
||||||
|
self.get_application()
|
||||||
|
self.build_settings()
|
||||||
|
self.mock_plugin = MagicMock()
|
||||||
|
self.temp_folder = mkdtemp()
|
||||||
|
self.mock_plugin.settings_section = self.temp_folder
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
"""
|
||||||
|
Stop the patches
|
||||||
|
"""
|
||||||
|
self.destroy_settings()
|
||||||
|
shutil.rmtree(self.temp_folder)
|
||||||
|
|
||||||
|
def constructor_test(self):
|
||||||
|
"""
|
||||||
|
Test the Constructor from the PptViewController
|
||||||
|
"""
|
||||||
|
# GIVEN: No presentation controller
|
||||||
|
controller = None
|
||||||
|
|
||||||
|
# WHEN: The presentation controller object is created
|
||||||
|
controller = PptviewController(plugin=self.mock_plugin)
|
||||||
|
|
||||||
|
# THEN: The name of the presentation controller should be correct
|
||||||
|
self.assertEqual('Powerpoint Viewer', controller.name, 'The name of the presentation controller should be correct')
|
||||||
|
|
||||||
|
def check_available_test(self):
|
||||||
|
"""
|
||||||
|
Test check_available / check_installed
|
||||||
|
"""
|
||||||
|
# GIVEN: A mocked dll loader and a controller
|
||||||
|
with patch('ctypes.cdll.LoadLibrary') as mocked_load_library:
|
||||||
|
mocked_process = MagicMock()
|
||||||
|
mocked_process.CheckInstalled.return_value = True
|
||||||
|
mocked_load_library.return_value = mocked_process
|
||||||
|
controller = PptviewController(plugin=self.mock_plugin)
|
||||||
|
|
||||||
|
# WHEN: check_available is called
|
||||||
|
available = controller.check_available()
|
||||||
|
|
||||||
|
# THEN: On windows it should return True, on other platforms False
|
||||||
|
if os.name == 'nt':
|
||||||
|
self.assertTrue(available, 'check_available should return True on windows.')
|
||||||
|
else:
|
||||||
|
self.assertFalse(available, 'check_available should return False when not on windows.')
|
||||||
|
|
||||||
|
|
||||||
class TestPptviewDocument(TestCase):
|
class TestPptviewDocument(TestCase):
|
||||||
"""
|
"""
|
||||||
|
@ -53,13 +53,12 @@ class TestMixin(object):
|
|||||||
Build the settings Object and initialise it
|
Build the settings Object and initialise it
|
||||||
"""
|
"""
|
||||||
Settings.setDefaultFormat(Settings.IniFormat)
|
Settings.setDefaultFormat(Settings.IniFormat)
|
||||||
fd, self.ini_file = mkstemp('.ini')
|
self.fd, self.ini_file = mkstemp('.ini')
|
||||||
Settings().set_filename(self.ini_file)
|
Settings().set_filename(self.ini_file)
|
||||||
|
|
||||||
def destroy_settings(self):
|
def destroy_settings(self):
|
||||||
"""
|
"""
|
||||||
Destroy the Settings Object
|
Destroy the Settings Object
|
||||||
"""
|
"""
|
||||||
if hasattr(self, 'fd'):
|
|
||||||
os.close(self.fd)
|
os.close(self.fd)
|
||||||
os.unlink(Settings().fileName())
|
os.unlink(Settings().fileName())
|
||||||
|
@ -31,6 +31,7 @@ Package to test the openlp.core.lib.pluginmanager package.
|
|||||||
"""
|
"""
|
||||||
import sys
|
import sys
|
||||||
import shutil
|
import shutil
|
||||||
|
import gc
|
||||||
from tempfile import mkdtemp
|
from tempfile import mkdtemp
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
@ -65,6 +66,9 @@ class TestPluginManager(TestCase, TestMixin):
|
|||||||
del self.main_window
|
del self.main_window
|
||||||
Settings().remove('advanced/data path')
|
Settings().remove('advanced/data path')
|
||||||
self.destroy_settings()
|
self.destroy_settings()
|
||||||
|
# On windows we need to manually garbage collect to close sqlalchemy files
|
||||||
|
# to avoid errors when temporary files are deleted.
|
||||||
|
gc.collect()
|
||||||
shutil.rmtree(self.temp_dir)
|
shutil.rmtree(self.temp_dir)
|
||||||
|
|
||||||
def find_plugins_test(self):
|
def find_plugins_test(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user