forked from openlp/openlp
Fix - Preview media slider repeatedly shows "Error Occurred" dialogue box
bzr-revno: 2493
This commit is contained in:
commit
b40f931618
@ -22,11 +22,11 @@
|
|||||||
"""
|
"""
|
||||||
The :mod:`~openlp.core.ui.media.webkit` module contains our WebKit video player
|
The :mod:`~openlp.core.ui.media.webkit` module contains our WebKit video player
|
||||||
"""
|
"""
|
||||||
from PyQt4 import QtGui
|
from PyQt4 import QtGui, QtWebKit
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from openlp.core.common import Settings, is_macosx
|
from openlp.core.common import Settings
|
||||||
from openlp.core.lib import translate
|
from openlp.core.lib import translate
|
||||||
from openlp.core.ui.media import MediaState
|
from openlp.core.ui.media import MediaState
|
||||||
from openlp.core.ui.media.mediaplayer import MediaPlayer
|
from openlp.core.ui.media.mediaplayer import MediaPlayer
|
||||||
@ -222,13 +222,15 @@ class WebkitPlayer(MediaPlayer):
|
|||||||
|
|
||||||
def check_available(self):
|
def check_available(self):
|
||||||
"""
|
"""
|
||||||
Check the availability of the media player
|
Check the availability of the media player.
|
||||||
|
|
||||||
|
:return: boolean. True if available
|
||||||
"""
|
"""
|
||||||
# At the moment we don't have support for webkitplayer on Mac OS X
|
web = QtWebKit.QWebPage()
|
||||||
if is_macosx():
|
# This script should return '[object HTMLVideoElement]' if the html5 video is available in webkit. Otherwise it
|
||||||
return False
|
# should return '[object HTMLUnknownElement]'
|
||||||
else:
|
return web.mainFrame().evaluateJavaScript(
|
||||||
return True
|
"Object.prototype.toString.call(document.createElement('video'));") == '[object HTMLVideoElement]'
|
||||||
|
|
||||||
def load(self, display):
|
def load(self, display):
|
||||||
"""
|
"""
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
Package to test the openlp.core.ui.media.webkitplayer package.
|
Package to test the openlp.core.ui.media.webkitplayer package.
|
||||||
"""
|
"""
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
from tests.functional import patch
|
from tests.functional import MagicMock, patch
|
||||||
|
|
||||||
from openlp.core.ui.media.webkitplayer import WebkitPlayer
|
from openlp.core.ui.media.webkitplayer import WebkitPlayer
|
||||||
|
|
||||||
@ -33,32 +33,36 @@ class TestWebkitPlayer(TestCase):
|
|||||||
Test the functions in the :mod:`webkitplayer` module.
|
Test the functions in the :mod:`webkitplayer` module.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def check_available_mac_test(self):
|
def check_available_video_disabled_test(self):
|
||||||
"""
|
"""
|
||||||
Simple test of webkitplayer availability on Mac OS X
|
Test of webkit video unavailability
|
||||||
"""
|
"""
|
||||||
# GIVEN: A WebkitPlayer and a mocked is_macosx
|
# GIVEN: A WebkitPlayer instance and a mocked QWebPage
|
||||||
with patch('openlp.core.ui.media.webkitplayer.is_macosx') as mocked_is_macosx:
|
mocked_qwebpage = MagicMock()
|
||||||
mocked_is_macosx.return_value = True
|
mocked_qwebpage.mainFrame().evaluateJavaScript.return_value = '[object HTMLUnknownElement]'
|
||||||
|
with patch('openlp.core.ui.media.webkitplayer.QtWebKit.QWebPage', **{'return_value': mocked_qwebpage}):
|
||||||
webkit_player = WebkitPlayer(None)
|
webkit_player = WebkitPlayer(None)
|
||||||
|
|
||||||
# WHEN: An checking if the player is available
|
# WHEN: An checking if the player is available
|
||||||
available = webkit_player.check_available()
|
available = webkit_player.check_available()
|
||||||
|
|
||||||
# THEN: The player should not be available on Mac OS X
|
# THEN: The player should not be available when '[object HTMLUnknownElement]' is returned
|
||||||
self.assertEqual(False, available, 'The WebkitPlayer should not be available on Mac OS X.')
|
self.assertEqual(False, available,
|
||||||
|
'The WebkitPlayer should not be available when video feature detection fails')
|
||||||
|
|
||||||
def check_available_non_mac_test(self):
|
def check_available_video_enabled_test(self):
|
||||||
"""
|
"""
|
||||||
Simple test of webkitplayer availability when not on Mac OS X
|
Test of webkit video availability
|
||||||
"""
|
"""
|
||||||
# GIVEN: A WebkitPlayer and a mocked is_macosx
|
# GIVEN: A WebkitPlayer instance and a mocked QWebPage
|
||||||
with patch('openlp.core.ui.media.webkitplayer.is_macosx') as mocked_is_macosx:
|
mocked_qwebpage = MagicMock()
|
||||||
mocked_is_macosx.return_value = False
|
mocked_qwebpage.mainFrame().evaluateJavaScript.return_value = '[object HTMLVideoElement]'
|
||||||
|
with patch('openlp.core.ui.media.webkitplayer.QtWebKit.QWebPage', **{'return_value': mocked_qwebpage}):
|
||||||
webkit_player = WebkitPlayer(None)
|
webkit_player = WebkitPlayer(None)
|
||||||
|
|
||||||
# WHEN: An checking if the player is available
|
# WHEN: An checking if the player is available
|
||||||
available = webkit_player.check_available()
|
available = webkit_player.check_available()
|
||||||
|
|
||||||
# THEN: The player should be available when not on Mac OS X
|
# THEN: The player should be available when '[object HTMLVideoElement]' is returned
|
||||||
self.assertEqual(True, available, 'The WebkitPlayer should be available when not on Mac OS X.')
|
self.assertEqual(True, available,
|
||||||
|
'The WebkitPlayer should be available when video feature detection passes')
|
||||||
|
@ -24,6 +24,7 @@ Package to test the openlp.core.__init__ package.
|
|||||||
"""
|
"""
|
||||||
from optparse import Values
|
from optparse import Values
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
@ -118,12 +119,27 @@ class TestInit(TestCase, TestMixin):
|
|||||||
"""
|
"""
|
||||||
Test that parse_options parses short options correctly
|
Test that parse_options parses short options correctly
|
||||||
"""
|
"""
|
||||||
# GIVEN: A list of vaild short options
|
# GIVEN: A list of valid short options
|
||||||
options = ['-e', '-l', 'debug', '-pd', '-s', 'style', 'extra', 'qt', 'args']
|
options = ['-e', '-l', 'debug', '-pd', '-s', 'style', 'extra', 'qt', 'args']
|
||||||
|
|
||||||
# WHEN: Calling parse_options
|
# WHEN: Calling parse_options
|
||||||
resluts = parse_options(options)
|
results = parse_options(options)
|
||||||
|
|
||||||
# THEN: A tuple should be returned with the parsed options and left over args
|
# THEN: A tuple should be returned with the parsed options and left over args
|
||||||
self.assertEqual(resluts, (Values({'no_error_form': True, 'dev_version': True, 'portable': True,
|
self.assertEqual(results, (Values({'no_error_form': True, 'dev_version': True, 'portable': True,
|
||||||
|
'style': 'style', 'loglevel': 'debug'}), ['extra', 'qt', 'args']))
|
||||||
|
|
||||||
|
def parse_options_valid_argv_short_options_test(self):
|
||||||
|
"""
|
||||||
|
Test that parse_options parses valid short options correctly when passed through sys.argv
|
||||||
|
"""
|
||||||
|
# GIVEN: A list of valid options
|
||||||
|
options = ['openlp.py', '-e', '-l', 'debug', '-pd', '-s', 'style', 'extra', 'qt', 'args']
|
||||||
|
|
||||||
|
# WHEN: Passing in the options through sys.argv and calling parse_args with None
|
||||||
|
with patch.object(sys, 'argv', options):
|
||||||
|
results = parse_options(None)
|
||||||
|
|
||||||
|
# THEN: parse_args should return a tuple of valid options and of left over options that OpenLP does not use
|
||||||
|
self.assertEqual(results, (Values({'no_error_form': True, 'dev_version': True, 'portable': True,
|
||||||
'style': 'style', 'loglevel': 'debug'}), ['extra', 'qt', 'args']))
|
'style': 'style', 'loglevel': 'debug'}), ['extra', 'qt', 'args']))
|
||||||
|
Loading…
Reference in New Issue
Block a user