openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #19414
[Merge] lp:~trb143/openlp/tests_only into lp:openlp
Tim Bentley has proposed merging lp:~trb143/openlp/tests_only into lp:openlp.
Requested reviews:
OpenLP Core (openlp-core)
For more details, see:
https://code.launchpad.net/~trb143/openlp/tests_only/+merge/148901
More tests for the Service Item.
--
https://code.launchpad.net/~trb143/openlp/tests_only/+merge/148901
Your team OpenLP Core is requested to review the proposed merge of lp:~trb143/openlp/tests_only into lp:openlp.
=== modified file 'openlp/core/lib/serviceitem.py'
--- openlp/core/lib/serviceitem.py 2013-02-05 08:05:28 +0000
+++ openlp/core/lib/serviceitem.py 2013-02-16 20:06:20 +0000
@@ -634,7 +634,7 @@
"""
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'])
=== modified file 'openlp/core/lib/settings.py'
--- openlp/core/lib/settings.py 2013-02-10 16:05:52 +0000
+++ openlp/core/lib/settings.py 2013-02-16 20:06:20 +0000
@@ -140,6 +140,7 @@
# 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',
=== modified file 'openlp/plugins/images/imageplugin.py'
--- openlp/plugins/images/imageplugin.py 2013-02-16 09:24:06 +0000
+++ openlp/plugins/images/imageplugin.py 2013-02-16 20:06:20 +0000
@@ -37,7 +37,6 @@
log = logging.getLogger(__name__)
__default_settings__ = {
- u'images/background color': u'#000000',
u'images/images files': []
}
=== modified file 'tests/functional/openlp_core_lib/test_serviceitem.py'
--- tests/functional/openlp_core_lib/test_serviceitem.py 2013-02-16 06:51:25 +0000
+++ tests/functional/openlp_core_lib/test_serviceitem.py 2013-02-16 20:06:20 +0000
@@ -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'\
@@ -18,7 +18,7 @@
'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):
@@ -27,7 +27,7 @@
"""
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)
@@ -78,7 +78,7 @@
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
@@ -102,9 +102,9 @@
# 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 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 service[u'data'][0][u'title'] != service[u'data'][1][u'title'], \
u'The individual titles should not match'
assert service[u'data'][0][u'path'] == service[u'data'][1][u'path'], u'The file paths should match'
@@ -133,8 +133,8 @@
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'
@@ -149,10 +149,10 @@
# 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 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'] == TEST_PATH, u'The first image name'
+ assert service[u'data'][0][u'image'] == test_file, u'The first image name'
# WHEN validating a service item
service_item.validate_item([u'jpg'])
@@ -172,11 +172,10 @@
"""
# 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
@@ -184,29 +183,91 @@
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'
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 custom title should be correct'
+ assert service_item.get_frames()[0][u'text'] == VERSE[:-1], \
+ u'The original text has been returned 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'The title of the first slide is returned'
+ assert service_item.get_frame_title(1) == u'Slide 2', u'The title of the second slide is returned'
+ assert service_item.get_frame_title(2) == u'', u'The title of the first slide is returned'
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
-
- # WHEN: adding a custom from a saved Service
-
- # THEN: We should get back a valid service item
- assert service_item.is_valid is True, u'The new service item should be valid'
+ 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}
+
+ 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 is the path to the image'
+ assert service_item.get_frames()[0] == frame_array, u'The first frame array is as expected'
+ assert service_item.get_frame_path(0) == test_file, u'The frame path is the full path to the image'
+ assert service_item.get_frame_title(0) == image_name, u'The frame title is the image name'
+ assert service_item.get_display_title() == image_name, u'The display title is the first image name'
+ assert service_item.is_image() is True, u'This is an image service item'
+ assert service_item.is_capable(ItemCapabilities.CanMaintain) is True, u'Images can be Maintained'
+ assert service_item.is_capable(ItemCapabilities.CanPreview) is True, u'Images can be Previewed'
+ assert service_item.is_capable(ItemCapabilities.CanLoop) is True, u'Images can be made to Loop'
+ assert service_item.is_capable(ItemCapabilities.CanAppend) is True, u'Images 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 is the path to the image'
+ assert service_item.get_rendered_frame(1) == test_file2, u'The Second frame is the path to the image'
+ assert service_item.get_frames()[0] == frame_array1, u'The first frame array is as expected'
+ assert service_item.get_frames()[1] == frame_array2, u'The first frame array is as expected'
+ assert service_item.get_frame_path(0) == test_file1, u'The frame path is the full path to the image'
+ assert service_item.get_frame_path(1) == test_file2, u'The frame path is the full path to the image'
+ assert service_item.get_frame_title(0) == image_name1, u'The 1st frame title is the image name'
+ assert service_item.get_frame_title(1) == image_name2, u'The 2nd frame title is the image name'
+
+ assert service_item.get_display_title().lower() == service_item.name, \
+ u'The display title as there are > 1 Images'
+ assert service_item.is_image() is True, u'This is an image service item'
+ assert service_item.is_capable(ItemCapabilities.CanMaintain) is True, u'Images can be Maintained'
+ assert service_item.is_capable(ItemCapabilities.CanPreview) is True, u'Images can be Previewed'
+ assert service_item.is_capable(ItemCapabilities.CanLoop) is True, u'Images can be made to Loop'
+ assert service_item.is_capable(ItemCapabilities.CanAppend) is True, u'Images 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
\ No newline at end of file
=== renamed file 'tests/resources/serviceitem_custom1.osd' => 'tests/resources/serviceitem_custom_1.osd'
=== renamed file 'tests/resources/serviceitem_image1.osd' => 'tests/resources/serviceitem_image_1.osd'
--- tests/resources/serviceitem_image1.osd 2013-01-21 06:52:55 +0000
+++ tests/resources/serviceitem_image_1.osd 2013-02-16 20:06:20 +0000
@@ -74,6 +74,6 @@
p32
ssg15
(lp33
-VIMG_7453.JPG
+Vimage_1.jpg
p34
assa.
\ No newline at end of file
=== added file 'tests/resources/serviceitem_image_2.osd'
--- tests/resources/serviceitem_image_2.osd 1970-01-01 00:00:00 +0000
+++ tests/resources/serviceitem_image_2.osd 2013-02-16 20:06:20 +0000
@@ -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.
\ No newline at end of file
Follow ups