Beispiel #1
0
    def test_on_slide_selected_index_service_item_command(self, mocked_execute):
        """
        Test that when there is a command service item, the command is executed
        """
        # GIVEN: A mocked service item and a slide controller with a service item
        mocked_item = MagicMock()
        mocked_item.is_command.return_value = True
        mocked_item.name = 'Mocked Item'
        mocked_update_preview = MagicMock()
        mocked_preview_widget = MagicMock()
        mocked_slide_selected = MagicMock()
        Registry.create()
        slide_controller = SlideController(None)
        slide_controller.service_item = mocked_item
        slide_controller.update_preview = mocked_update_preview
        slide_controller.preview_widget = mocked_preview_widget
        slide_controller.slide_selected = mocked_slide_selected
        slide_controller.is_live = True

        # WHEN: The method is called
        slide_controller.on_slide_selected_index([9])

        # THEN: It should have sent a notification
        mocked_item.is_command.assert_called_once_with()
        mocked_execute.assert_called_once_with('mocked item_slide', [mocked_item, True, 9])
        mocked_update_preview.assert_called_once_with()
        assert 0 == mocked_preview_widget.change_slide.call_count, 'Change slide should not have been called'
        assert 0 == mocked_slide_selected.call_count, 'slide_selected should not have been called'
Beispiel #2
0
    def test_on_slide_unblank(self):
        """
        Test on_slide_unblank
        """
        # GIVEN: An instance of SlideController and a mocked on_blank_display
        slide_controller = SlideController(None)
        slide_controller.on_blank_display = MagicMock()

        # WHEN: Calling on_slide_unblank
        slide_controller.on_slide_unblank()

        # THEN: on_blank_display should have been called with False
        slide_controller.on_blank_display.assert_called_once_with(False)
Beispiel #3
0
    def test_on_slide_selected_index_no_service_item(self):
        """
        Test that when there is no service item, the on_slide_selected_index() method returns immediately
        """
        # GIVEN: A mocked service item and a slide controller without a service item
        mocked_item = MagicMock()
        slide_controller = SlideController(None)
        slide_controller.service_item = None

        # WHEN: The method is called
        slide_controller.on_slide_selected_index([10])

        # THEN: It should have exited early
        assert 0 == mocked_item.is_command.call_count, 'The service item should have not been called'
Beispiel #4
0
    def test_on_slide_selected_index_service_item_not_command(self, mocked_execute):
        """
        Test that when there is a service item but it's not a command, the preview widget is updated
        """
        # GIVEN: A mocked service item and a slide controller with a service item
        mocked_item = MagicMock()
        mocked_item.is_command.return_value = False
        mocked_item.name = 'Mocked Item'
        mocked_update_preview = MagicMock()
        mocked_preview_widget = MagicMock()
        mocked_slide_selected = MagicMock()
        Registry.create()
        slide_controller = SlideController(None)
        slide_controller.service_item = mocked_item
        slide_controller.update_preview = mocked_update_preview
        slide_controller.preview_widget = mocked_preview_widget
        slide_controller.slide_selected = mocked_slide_selected

        # WHEN: The method is called
        slide_controller.on_slide_selected_index([7])

        # THEN: It should have sent a notification
        mocked_item.is_command.assert_called_once_with()
        assert 0 == mocked_execute.call_count, 'Execute should not have been called'
        assert 0 == mocked_update_preview.call_count, 'Update preview should not have been called'
        mocked_preview_widget.change_slide.assert_called_once_with(7)
        mocked_slide_selected.assert_called_once_with()
Beispiel #5
0
def test_update_slide_limits(mock_settings):
    """
    Test that calling the update_slide_limits() method updates the slide limits
    """
    # GIVEN: A mocked out Settings object, a new SlideController and a mocked out main_window
    mock_settings.value.return_value = 10
    mocked_main_window = MagicMock(advanced_settings_section='advanced')
    Registry().register('main_window', mocked_main_window)
    slide_controller = SlideController(None)

    # WHEN: update_slide_limits() is called
    slide_controller.update_slide_limits()

    # THEN: The value of slide_limits should be 10
    msv = mock_settings.value
    msv.assert_called_once_with('advanced/slide limits')
    assert 10 == slide_controller.slide_limits, 'Slide limits should have been updated to 10'
Beispiel #6
0
    def test_receive_spin_delay(self, MockedSettings):
        """
        Test that the spin box is updated accordingly after a call to receive_spin_delay()
        """
        # GIVEN: A new SlideController instance.
        mocked_value = MagicMock(return_value=1)
        MockedSettings.return_value = MagicMock(value=mocked_value)
        mocked_delay_spin_box = MagicMock()
        slide_controller = SlideController(None)
        slide_controller.delay_spin_box = mocked_delay_spin_box

        # WHEN: The receive_spin_delay() method is called
        slide_controller.receive_spin_delay()

        # THEN: The Settings()value() and delay_spin_box.setValue() methods should have been called correctly
        mocked_value.assert_called_with('core/loop delay')
        mocked_delay_spin_box.setValue.assert_called_with(1)
Beispiel #7
0
    def test_on_go_live_service_manager(self):
        """
        Test that when the on_go_live() method is called the message is sent to the live controller and focus is
        set correctly.
        """
        # GIVEN: A new SlideController instance and service manager preview then pressing go live should respond
        mocked_display = MagicMock()
        mocked_service_manager = MagicMock()
        mocked_live_controller = MagicMock()
        mocked_preview_widget = MagicMock()
        mocked_service_item = MagicMock()
        mocked_service_item.from_service = True
        mocked_service_item.unique_identifier = 42
        mocked_preview_widget.current_slide_number.return_value = 1
        mocked_preview_widget.slide_count = MagicMock(return_value=2)
        mocked_live_controller.preview_widget = MagicMock()
        Registry.create()
        Registry().register('live_controller', mocked_live_controller)
        Registry().register('service_manager', mocked_service_manager)
        slide_controller = SlideController(None)
        slide_controller.service_item = mocked_service_item
        slide_controller.preview_widget = mocked_preview_widget
        slide_controller.display = mocked_display

        # WHEN: on_go_live() is called
        slide_controller.on_go_live()

        # THEN: the service manager should have the service item and the focus set to live
        mocked_service_manager.preview_live.assert_called_once_with(42, 1)
        mocked_live_controller.preview_widget.setFocus.assert_called_once_with()
Beispiel #8
0
def test_on_go_live_preview_controller():
    """
    Test that when the on_go_preview() method is called the message is sent to the preview controller and focus is
    set correctly.
    """
    # GIVEN: A new SlideController instance and plugin preview then pressing go live should respond
    mocked_display = MagicMock()
    mocked_preview_controller = MagicMock()
    mocked_preview_widget = MagicMock()
    mocked_service_item = MagicMock()
    mocked_service_item.from_service = False
    mocked_preview_widget.current_slide_number.return_value = 1
    mocked_preview_widget.slide_count = MagicMock(return_value=2)
    mocked_preview_controller.preview_widget = MagicMock()
    Registry.create()
    Registry().register('preview_controller', mocked_preview_controller)
    slide_controller = SlideController(None)
    slide_controller.service_item = mocked_service_item
    slide_controller.preview_widget = mocked_preview_widget
    slide_controller.displays = [mocked_display]

    # WHEN: on_go_live() is called
    slide_controller.on_go_preview()

    # THEN: the preview controller should have the service item and the focus set to live
    mocked_preview_controller.preview_widget.setFocus.assert_called_once_with()
Beispiel #9
0
    def test_initial_slide_controller(self):
        """
        Test the initial slide controller state .
        """
        # GIVEN: A new SlideController instance.
        slide_controller = SlideController(None)

        # WHEN: the default controller is built.
        # THEN: The controller should not be a live controller.
        assert slide_controller.is_live is False, 'The base slide controller should not be a live controller'
Beispiel #10
0
def test_on_preview_double_click_add_to_service(mock_settings):
    # GIVEN: A slide controller, actions needed, settings set to False.
    slide_controller = SlideController(None)
    mock_settings.value.return_value = False
    slide_controller.service_item = MagicMock()
    slide_controller.service_item.is_media = MagicMock()
    slide_controller.on_media_close = MagicMock()
    slide_controller.on_go_live = MagicMock()
    slide_controller.on_preview_add_to_service = MagicMock()
    slide_controller.media_reset = MagicMock()
    Registry().set_flag('has doubleclick added item to service', False)

    # WHEN: on_preview_double_click is called
    slide_controller.on_preview_double_click()

    # THEN: The call to addActions should be correct
    assert 0 == slide_controller.on_go_live.call_count, 'on_go_live Should have not been called.'
    assert 1 == slide_controller.on_preview_add_to_service.call_count, 'Should have been called once.'
Beispiel #11
0
    def test_on_preview_double_click_unblank_display(self, MockedSettings):
        # GIVEN: A slide controller, actions needed, settins set to True.
        slide_controller = SlideController(None)
        mocked_settings = MagicMock()
        mocked_settings.return_value = True
        MockedSettings.return_value = mocked_settings
        slide_controller.service_item = MagicMock()
        slide_controller.service_item.is_media = MagicMock()
        slide_controller.on_media_close = MagicMock()
        slide_controller.on_go_live = MagicMock()
        slide_controller.on_preview_add_to_service = MagicMock()
        slide_controller.media_reset = MagicMock()
        Registry.create()
        Registry().set_flag('has doubleclick added item to service', True)

        # WHEN: on_preview_double_click is called
        slide_controller.on_preview_double_click()

        # THEN: The call to addActions should be correct
        assert 1 == slide_controller.on_go_live.call_count, 'on_go_live should have been called once.'
        assert 0 == slide_controller.on_preview_add_to_service.call_count, 'Should have not been called.'
Beispiel #12
0
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)
Beispiel #13
0
    def test_enable_tool_bar_preview(self):
        """
        Check that when enable_tool_bar on a preview slide controller is called, enable_preview_tool_bar is called
        """
        # GIVEN: Mocked out enable methods and a real slide controller which is set to live
        mocked_enable_live_tool_bar = MagicMock()
        mocked_enable_preview_tool_bar = MagicMock()
        slide_controller = SlideController(None)
        slide_controller.is_live = False
        slide_controller.enable_live_tool_bar = mocked_enable_live_tool_bar
        slide_controller.enable_preview_tool_bar = mocked_enable_preview_tool_bar
        mocked_service_item = MagicMock()

        # WHEN: enable_tool_bar() is called
        slide_controller.enable_tool_bar(mocked_service_item)

        # THEN: The enable_preview_tool_bar() method is called, not enable_live_tool_bar()
        mocked_enable_preview_tool_bar.assert_called_once_with(mocked_service_item)
        assert 0 == mocked_enable_live_tool_bar.call_count, 'The live method should not have been called'
Beispiel #14
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)
Beispiel #15
0
    def test_toggle_display_show(self):
        """
        Check that the toggle_display('show') method calls all the on_X_display() methods
        """
        # GIVEN: A new SlideController instance.
        mocked_on_blank_display = MagicMock()
        mocked_on_theme_display = MagicMock()
        mocked_on_hide_display = MagicMock()
        slide_controller = SlideController(None)
        slide_controller.on_blank_display = mocked_on_blank_display
        slide_controller.on_theme_display = mocked_on_theme_display
        slide_controller.on_hide_display = mocked_on_hide_display

        # WHEN: toggle_display() is called with an argument of "show"
        slide_controller.toggle_display('show')

        # THEN: All the on_X_display() methods should have been called with an argument of False
        mocked_on_blank_display.assert_called_once_with(False)
        mocked_on_theme_display.assert_called_once_with(False)
        mocked_on_hide_display.assert_called_once_with(False)
Beispiel #16
0
    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'
Beispiel #17
0
    def test_toggle_display_desktop(self):
        """
        Check that the toggle_display('desktop') method calls the on_hide_display() method
        """
        # GIVEN: A new SlideController instance.
        mocked_on_blank_display = MagicMock()
        mocked_on_theme_display = MagicMock()
        mocked_on_hide_display = MagicMock()
        slide_controller = SlideController(None)
        slide_controller.on_blank_display = mocked_on_blank_display
        slide_controller.on_theme_display = mocked_on_theme_display
        slide_controller.on_hide_display = mocked_on_hide_display

        # WHEN: toggle_display() is called with an argument of "desktop"
        slide_controller.toggle_display('desktop')

        # THEN: Only on_hide_display() should have been called with an argument of True
        mocked_on_hide_display.assert_called_once_with(True)
        assert 0 == mocked_on_blank_display.call_count, 'on_blank_display should not have been called'
        assert 0 == mocked_on_theme_display.call_count, 'on_theme_display should not have been called'
Beispiel #18
0
    def test_service_next(self):
        """
        Check that calling the service_next() method adds the next key to the queue and processes the queue
        """
        # GIVEN: A new SlideController instance and mocked out methods
        mocked_keypress_queue = MagicMock()
        mocked_process_queue = MagicMock()
        slide_controller = SlideController(None)
        slide_controller.keypress_queue = mocked_keypress_queue
        slide_controller._process_queue = mocked_process_queue

        # WHEN: The service_next() method is called
        slide_controller.service_next()

        # THEN: The keypress is added to the queue and the queue is processed
        mocked_keypress_queue.append.assert_called_once_with(ServiceItemAction.Next)
        mocked_process_queue.assert_called_once_with()
Beispiel #19
0
    def test_non_text_service_item_blank(self):
        """
        Test that loading a non-text service item into the slide controller sets the correct blank menu
        """
        # GIVEN: A new SlideController instance.
        slide_controller = SlideController(None)
        service_item = MagicMock()
        toolbar = MagicMock()
        toolbar.set_widget_visible = MagicMock()
        slide_controller.toolbar = toolbar
        slide_controller.service_item = service_item

        # WHEN a non text based service item is used
        slide_controller.service_item.is_text = MagicMock(return_value=False)
        slide_controller.set_blank_menu()

        # THEN: then call set up the toolbar to blank the display screen.
        toolbar.set_widget_visible.assert_called_with(NON_TEXT_MENU, True)
Beispiel #20
0
    def test_text_service_item_blank(self):
        """
        Test that loading a text-based service item into the slide controller sets the correct blank menu
        """
        # GIVEN: A new SlideController instance.
        slide_controller = SlideController(None)
        service_item = MagicMock()
        toolbar = MagicMock()
        toolbar.set_widget_visible = MagicMock()
        slide_controller.toolbar = toolbar
        slide_controller.service_item = service_item

        # WHEN: a text based service item is used
        slide_controller.service_item.is_text = MagicMock(return_value=True)
        slide_controller.set_blank_menu()

        # THEN: the call to set the visible items on the toolbar should be correct
        toolbar.set_widget_visible.assert_called_with(WIDE_MENU, True)
Beispiel #21
0
    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'
Beispiel #22
0
    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)
Beispiel #23
0
    def test_update_preview_image(self, mocked_singleShot, mocked_image_manager):
        """
        Test that the preview screen is updated with the correct preview for image service items
        """
        # GIVEN: A mocked image service item, a mocked image_manager, a mocked Registry,
        #        and a slide controller with many mocks.
        # Mocked Image Item
        mocked_img_item = MagicMock()
        mocked_img_item.get_rendered_frame.return_value = ''
        mocked_img_item.is_capable = MagicMock()
        mocked_img_item.is_capable.side_effect = [False, True]
        # Mock image_manager
        mocked_image_manager.get_image.return_value = QtGui.QImage()
        # Mock Registry
        Registry.create()
        mocked_main_window = MagicMock()
        Registry().register('main_window', mocked_main_window)
        # Mock SlideController
        slide_controller = SlideController(None)
        slide_controller.service_item = mocked_img_item
        slide_controller.is_live = False
        slide_controller.log_debug = MagicMock()
        slide_controller.selected_row = MagicMock()
        slide_controller.screens = MagicMock()
        slide_controller.screens.current = {'primary': ''}
        slide_controller.display = MagicMock()
        slide_controller.display.preview.return_value = QtGui.QImage()
        slide_controller.grab_maindisplay = MagicMock()
        slide_controller.slide_preview = MagicMock()
        slide_controller.slide_count = 0

        # WHEN: update_preview is called
        slide_controller.update_preview()

        # THEN: setPixmap and display.preview should have been called
        assert 1 == slide_controller.slide_preview.setPixmap.call_count, 'setPixmap should be called'
        assert 1 == slide_controller.display.preview.call_count, 'display.preview() should be called'
        assert 0 == mocked_singleShot.call_count, 'Timer to grab_maindisplay should not be called'
        assert 0 == mocked_image_manager.get_image.call_count, 'image_manager should not be called'
Beispiel #24
0
    def test_live_stolen_focus_shortcuts(self):
        """
        Test that all the needed shortcuts are available in scenarios where Live has stolen focus.
        These are found under def __add_actions_to_widget(self, widget): in slidecontroller.py
        """
        # GIVEN: A slide controller, actions needed
        slide_controller = SlideController(None)
        mocked_widget = MagicMock()
        slide_controller.previous_item = MagicMock()
        slide_controller.next_item = MagicMock()
        slide_controller.previous_service = MagicMock()
        slide_controller.next_service = MagicMock()
        slide_controller.desktop_screen_enable = MagicMock()
        slide_controller.desktop_screen = MagicMock()
        slide_controller.blank_screen = MagicMock()
        slide_controller.theme_screen = MagicMock()

        # WHEN: __add_actions_to_widget is called
        slide_controller._SlideController__add_actions_to_widget(mocked_widget)

        # THEN: The call to addActions should be correct
        mocked_widget.addActions.assert_called_with([
            slide_controller.previous_item, slide_controller.next_item,
            slide_controller.previous_service, slide_controller.next_service,
            slide_controller.desktop_screen_enable, slide_controller.desktop_screen,
            slide_controller.theme_screen, slide_controller.blank_screen
        ])
Beispiel #25
0
    def test_process_item(self, 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 = []
        Registry.create()
        mocked_main_window = MagicMock()
        Registry().register('main_window', mocked_main_window)
        slide_controller = SlideController(None)
        slide_controller.service_item = mocked_pres_item
        slide_controller.is_live = False
        slide_controller.preview_widget = 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.display = 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.'