def test_process_item(mocked_execute): """ Test that presentation service-items is closed when followed by a media service-item """ # GIVEN: A mocked presentation service item, a mocked media service item, a mocked Registry.execute # and a slide controller with many mocks. mocked_pres_item = MagicMock() mocked_pres_item.name = 'mocked_presentation_item' mocked_pres_item.is_command.return_value = True mocked_pres_item.is_media.return_value = False mocked_pres_item.is_image.return_value = False mocked_pres_item.from_service = False mocked_pres_item.get_frames.return_value = [] mocked_media_item = MagicMock() mocked_media_item.name = 'mocked_media_item' mocked_media_item.is_command.return_value = True mocked_media_item.is_media.return_value = True mocked_media_item.is_image.return_value = False mocked_media_item.from_service = False mocked_media_item.get_frames.return_value = [] mocked_main_window = MagicMock() Registry.create() Registry().register('main_window', mocked_main_window) Registry().register('media_controller', MagicMock()) slide_controller = SlideController(None) slide_controller.service_item = mocked_pres_item slide_controller.is_live = False slide_controller.preview_widget = MagicMock() slide_controller.preview_display = MagicMock() slide_controller.enable_tool_bar = MagicMock() slide_controller.on_media_start = MagicMock() slide_controller.slide_selected = MagicMock() slide_controller.on_stop_loop = MagicMock() slide_controller.info_label = MagicMock() slide_controller.displays = [MagicMock()] slide_controller.split = 0 slide_controller.type_prefix = 'test' # WHEN: _process_item is called slide_controller._process_item(mocked_media_item, 0) # THEN: Registry.execute should have been called to stop the presentation assert 2 == mocked_execute.call_count, 'Execute should have been called 2 times' assert 'mocked_presentation_item_stop' == mocked_execute.call_args_list[1][0][0], \ 'The presentation should have been stopped.'
def test_add_service_item_without_song_edit(): """ Test the add_service_item() method when song_edit is False """ # GIVEN: A slide controller and a new item to add mocked_item = MagicMock() mocked_process_item = MagicMock() slide_controller = SlideController(None) slide_controller._process_item = mocked_process_item slide_controller.song_edit = False slide_controller.selected_row = 2 # WHEN: The item is added to the service slide_controller.add_service_item(mocked_item) # THEN: The item is processed, the slide number is correct, and the song is not editable (or something) assert slide_controller.song_edit is False, 'song_edit should be False' mocked_process_item.assert_called_once_with(mocked_item, 0)
def test_replace_service_manager_item_same_item(self): """ Test that when the service item is the same, the service item is reprocessed """ # GIVEN: A slide controller and a new item to add mocked_item = MagicMock() mocked_preview_widget = MagicMock() mocked_preview_widget.current_slide_number.return_value = 7 mocked_process_item = MagicMock() slide_controller = SlideController(None) slide_controller.preview_widget = mocked_preview_widget slide_controller._process_item = mocked_process_item slide_controller.service_item = mocked_item # WHEN: The service item is replaced slide_controller.replace_service_manager_item(mocked_item) # THEN: The service item should not be processed mocked_preview_widget.current_slide_number.assert_called_with() mocked_process_item.assert_called_once_with(mocked_item, 7)
def test_replace_service_manager_item_different_items(self): """ Test that when the service items are not the same, nothing happens """ # GIVEN: A slide controller and a new item to add mocked_item = MagicMock() mocked_preview_widget = MagicMock() mocked_process_item = MagicMock() slide_controller = SlideController(None) slide_controller.preview_widget = mocked_preview_widget slide_controller._process_item = mocked_process_item slide_controller.service_item = None # WHEN: The service item is replaced slide_controller.replace_service_manager_item(mocked_item) # THEN: The service item should not be processed assert 0 == mocked_process_item.call_count, 'The _process_item() method should not have been called' assert 0 == mocked_preview_widget.current_slide_number.call_count, \ 'The preview_widget current_slide_number.() method should not have been called'
def test_refresh_service_item_not_image_or_text(self): """ Test that the refresh_service_item() method does not refresh a service item if it's neither text or an image """ # GIVEN: A mock service item and a fresh slide controller mocked_service_item = MagicMock() mocked_service_item.is_text.return_value = False mocked_service_item.is_image.return_value = False mocked_process_item = MagicMock() slide_controller = SlideController(None) slide_controller.service_item = mocked_service_item slide_controller._process_item = mocked_process_item slide_controller.selected_row = 5 # WHEN: The refresh_service_item method() is called slide_controller.refresh_service_item() # THEN: The item should be re-processed mocked_service_item.is_text.assert_called_once_with() mocked_service_item.is_image.assert_called_once_with() assert 0 == mocked_service_item.render.call_count, 'The render() method should not have been called' assert 0 == mocked_process_item.call_count, 'The mocked_process_item() method should not have been called'
def test_refresh_service_item_image(self): """ Test that the refresh_service_item() method refreshes a image service item """ # GIVEN: A mock service item and a fresh slide controller mocked_service_item = MagicMock() mocked_service_item.is_text.return_value = False mocked_service_item.is_image.return_value = True mocked_process_item = MagicMock() slide_controller = SlideController(None) slide_controller.service_item = mocked_service_item slide_controller._process_item = mocked_process_item slide_controller.selected_row = 5 # WHEN: The refresh_service_item method() is called slide_controller.refresh_service_item() # THEN: The item should be re-processed mocked_service_item.is_text.assert_called_once_with() mocked_service_item.is_image.assert_called_once_with() mocked_service_item.render.assert_called_once_with() mocked_process_item.assert_called_once_with(mocked_service_item, 5)