~thelinuxguy/openlp/angular-remote

« back to all changes in this revision

Viewing changes to tests/functional/openlp_core_ui_lib/test_listpreviewwidget.py

  • Committer: Tim Bentley
  • Date: 2016-07-23 04:59:26 UTC
  • mfrom: (2661.1.20 openlp)
  • Revision ID: tim.bentley@gmail.com-20160723045926-blk46f5klxndzlia
Head

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
        self.mocked_viewport.return_value = self.mocked_viewport_obj
62
62
        self.addCleanup(self.viewport_patcher.stop)
63
63
 
64
 
    def new_list_preview_widget_test(self):
 
64
    def test_new_list_preview_widget(self):
65
65
        """
66
66
        Test that creating an instance of ListPreviewWidget works
67
67
        """
77
77
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.image_manager')
78
78
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.resizeRowsToContents')
79
79
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.setRowHeight')
80
 
    def replace_service_item_test_thumbs(self, mocked_setRowHeight, mocked_resizeRowsToContents,
 
80
    def test_replace_service_item_thumbs(self, mocked_setRowHeight, mocked_resizeRowsToContents,
81
81
                                         mocked_image_manager):
82
82
        """
83
83
        Test that thubmails for different slides are loaded properly in replace_service_item.
123
123
 
124
124
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.resizeRowsToContents')
125
125
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.setRowHeight')
126
 
    def replace_recalculate_layout_test_text(self, mocked_setRowHeight, mocked_resizeRowsToContents):
 
126
    def test_replace_recalculate_layout_text(self, mocked_setRowHeight, mocked_resizeRowsToContents):
127
127
        """
128
128
        Test if "Max height for non-text slides..." enabled, txt slides unchanged in replace_service_item & __recalc...
129
129
        """
155
155
 
156
156
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.resizeRowsToContents')
157
157
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.setRowHeight')
158
 
    def replace_recalculate_layout_test_img(self, mocked_setRowHeight, mocked_resizeRowsToContents):
 
158
    def test_replace_recalculate_layout_img(self, mocked_setRowHeight, mocked_resizeRowsToContents):
159
159
        """
160
160
        Test if "Max height for non-text slides..." disabled, img slides unchanged in replace_service_item & __recalc...
161
161
        """
192
192
 
193
193
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.resizeRowsToContents')
194
194
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.setRowHeight')
195
 
    def replace_recalculate_layout_test_img_max(self, mocked_setRowHeight, mocked_resizeRowsToContents):
 
195
    def test_replace_recalculate_layout_img_max(self, mocked_setRowHeight, mocked_resizeRowsToContents):
196
196
        """
197
197
        Test if "Max height for non-text slides..." enabled, img slides resized in replace_service_item & __recalc...
198
198
        """
227
227
 
228
228
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.resizeRowsToContents')
229
229
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.setRowHeight')
 
230
    def test_replace_recalculate_layout_img_auto(self, mocked_setRowHeight, mocked_resizeRowsToContents):
 
231
        """
 
232
        Test if "Max height for non-text slides..." auto, img slides resized in replace_service_item & __recalc...
 
233
        """
 
234
        # GIVEN: A setting to adjust "Max height for non-text slides in slide controller",
 
235
        #        an image ServiceItem and a ListPreviewWidget.
 
236
 
 
237
        # Mock Settings().value('advanced/slide max height')
 
238
        self.mocked_Settings_obj.value.return_value = -4
 
239
        # Mock self.viewport().width()
 
240
        self.mocked_viewport_obj.width.return_value = 200
 
241
        self.mocked_viewport_obj.height.return_value = 600
 
242
        # Mock image service item
 
243
        service_item = MagicMock()
 
244
        service_item.is_text.return_value = False
 
245
        service_item.is_capable.return_value = False
 
246
        service_item.get_frames.return_value = [{'title': None, 'path': None, 'image': None},
 
247
                                                {'title': None, 'path': None, 'image': None}]
 
248
        # init ListPreviewWidget and load service item
 
249
        list_preview_widget = ListPreviewWidget(None, 1)
 
250
        list_preview_widget.replace_service_item(service_item, 200, 0)
 
251
        # Change viewport width before forcing a resize
 
252
        self.mocked_viewport_obj.width.return_value = 400
 
253
 
 
254
        # WHEN: __recalculate_layout() is called (via screen_size_changed)
 
255
        list_preview_widget.screen_size_changed(1)
 
256
        self.mocked_viewport_obj.height.return_value = 200
 
257
        list_preview_widget.screen_size_changed(1)
 
258
 
 
259
        # THEN: resizeRowsToContents() should not be called, while setRowHeight() should be called
 
260
        #       twice for each slide.
 
261
        self.assertEquals(mocked_resizeRowsToContents.call_count, 0, 'Should not be called')
 
262
        self.assertEquals(mocked_setRowHeight.call_count, 6, 'Should be called 3 times for each slide')
 
263
        calls = [call(0, 100), call(1, 100), call(0, 150), call(1, 150), call(0, 100), call(1, 100)]
 
264
        mocked_setRowHeight.assert_has_calls(calls)
 
265
 
 
266
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.resizeRowsToContents')
 
267
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.setRowHeight')
230
268
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.cellWidget')
231
 
    def row_resized_test_text(self, mocked_cellWidget, mocked_setRowHeight, mocked_resizeRowsToContents):
 
269
    def test_row_resized_text(self, mocked_cellWidget, mocked_setRowHeight, mocked_resizeRowsToContents):
232
270
        """
233
271
        Test if "Max height for non-text slides..." enabled, text-based slides not affected in row_resized.
234
272
        """
262
300
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.resizeRowsToContents')
263
301
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.setRowHeight')
264
302
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.cellWidget')
265
 
    def row_resized_test_img(self, mocked_cellWidget, mocked_setRowHeight, mocked_resizeRowsToContents):
 
303
    def test_row_resized_img(self, mocked_cellWidget, mocked_setRowHeight, mocked_resizeRowsToContents):
266
304
        """
267
305
        Test if "Max height for non-text slides..." disabled, image-based slides not affected in row_resized.
268
306
        """
299
337
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.resizeRowsToContents')
300
338
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.setRowHeight')
301
339
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.cellWidget')
302
 
    def row_resized_test_img_max(self, mocked_cellWidget, mocked_setRowHeight, mocked_resizeRowsToContents):
 
340
    def test_row_resized_img_max(self, mocked_cellWidget, mocked_setRowHeight, mocked_resizeRowsToContents):
303
341
        """
304
342
        Test if "Max height for non-text slides..." enabled, image-based slides are scaled in row_resized.
305
343
        """
331
369
        # THEN: self.cellWidget(row, 0).children()[1].setMaximumWidth() should be called
332
370
        mocked_cellWidget_child.setMaximumWidth.assert_called_once_with(150)
333
371
 
 
372
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.resizeRowsToContents')
 
373
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.setRowHeight')
 
374
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.cellWidget')
 
375
    def test_row_resized_setting_changed(self, mocked_cellWidget, mocked_setRowHeight, mocked_resizeRowsToContents):
 
376
        """
 
377
        Test if "Max height for non-text slides..." enabled while item live, program doesn't crash on row_resized.
 
378
        """
 
379
        # GIVEN: A setting to adjust "Max height for non-text slides in slide controller",
 
380
        #        an image ServiceItem and a ListPreviewWidget.
 
381
 
 
382
        # Mock Settings().value('advanced/slide max height')
 
383
        self.mocked_Settings_obj.value.return_value = 0
 
384
        # Mock self.viewport().width()
 
385
        self.mocked_viewport_obj.width.return_value = 200
 
386
        # Mock image service item
 
387
        service_item = MagicMock()
 
388
        service_item.is_text.return_value = False
 
389
        service_item.is_capable.return_value = False
 
390
        service_item.get_frames.return_value = [{'title': None, 'path': None, 'image': None},
 
391
                                                {'title': None, 'path': None, 'image': None}]
 
392
        # Mock self.cellWidget().children()
 
393
        mocked_cellWidget_obj = MagicMock()
 
394
        mocked_cellWidget_obj.children.return_value = None
 
395
        mocked_cellWidget.return_value = mocked_cellWidget_obj
 
396
        # init ListPreviewWidget and load service item
 
397
        list_preview_widget = ListPreviewWidget(None, 1)
 
398
        list_preview_widget.replace_service_item(service_item, 200, 0)
 
399
        self.mocked_Settings_obj.value.return_value = 100
 
400
 
 
401
        # WHEN: row_resized() is called
 
402
        list_preview_widget.row_resized(0, 100, 150)
 
403
 
 
404
        # THEN: self.cellWidget(row, 0).children()[1].setMaximumWidth() should fail
 
405
        self.assertRaises(Exception)
 
406
 
334
407
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.selectRow')
335
408
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.scrollToItem')
336
409
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.item')
337
410
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.slide_count')
338
 
    def autoscroll_test_setting_invalid(self, mocked_slide_count, mocked_item, mocked_scrollToItem, mocked_selectRow):
 
411
    def test_autoscroll_setting_invalid(self, mocked_slide_count, mocked_item, mocked_scrollToItem, mocked_selectRow):
339
412
        """
340
413
        Test if 'advanced/autoscrolling' setting None or invalid, that no autoscrolling occurs on change_slide().
341
414
        """
371
444
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.scrollToItem')
372
445
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.item')
373
446
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.slide_count')
374
 
    def autoscroll_test_dist_bounds(self, mocked_slide_count, mocked_item, mocked_scrollToItem, mocked_selectRow):
 
447
    def test_autoscroll_dist_bounds(self, mocked_slide_count, mocked_item, mocked_scrollToItem, mocked_selectRow):
375
448
        """
376
449
        Test if 'advanced/autoscrolling' setting asks to scroll beyond list bounds, that it does not beyond.
377
450
        """
401
474
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.scrollToItem')
402
475
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.item')
403
476
    @patch(u'openlp.core.ui.lib.listpreviewwidget.ListPreviewWidget.slide_count')
404
 
    def autoscroll_test_normal(self, mocked_slide_count, mocked_item, mocked_scrollToItem, mocked_selectRow):
 
477
    def test_autoscroll_normal(self, mocked_slide_count, mocked_item, mocked_scrollToItem, mocked_selectRow):
405
478
        """
406
479
        Test if 'advanced/autoscrolling' setting valid, autoscrolling called as expected.
407
480
        """