← Back to team overview

openlp-core team mailing list archive

[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