Esempio n. 1
0
 def setUp(self):
     """
     Create the UI
     """
     Registry.create()
     self.setup_application()
     self.main_window = QtWidgets.QMainWindow()
     Registry().register('main_window', self.main_window)
     self.form = ShortcutListForm()
 def setUp(self):
     """
     Create the UI
     """
     Registry.create()
     self.setup_application()
     self.main_window = QtGui.QMainWindow()
     Registry().register("main_window", self.main_window)
     self.form = ShortcutListForm()
class TestShortcutform(TestCase, TestMixin):
    def setUp(self):
        """
        Create the UI
        """
        Registry.create()
        self.setup_application()
        self.main_window = QtGui.QMainWindow()
        Registry().register("main_window", self.main_window)
        self.form = ShortcutListForm()

    def tearDown(self):
        """
        Delete all the C++ objects at the end so that we don't have a segfault
        """
        del self.form
        del self.main_window

    def adjust_button_test(self):
        """
        Test the _adjust_button() method
        """
        # GIVEN: A button.
        button = QtGui.QPushButton()
        checked = True
        enabled = True
        text = "new!"

        # WHEN: Call the method.
        with patch("PyQt4.QtGui.QPushButton.setChecked") as mocked_check_method:
            self.form._adjust_button(button, checked, enabled, text)

            # THEN: The button should be changed.
            self.assertEqual(button.text(), text, "The text should match.")
            mocked_check_method.assert_called_once_with(True)
            self.assertEqual(button.isEnabled(), enabled, "The button should be disabled.")
Esempio n. 4
0
class TestShortcutform(TestCase, TestMixin):
    def setUp(self):
        """
        Create the UI
        """
        Registry.create()
        self.setup_application()
        self.main_window = QtWidgets.QMainWindow()
        Registry().register('main_window', self.main_window)
        self.form = ShortcutListForm()

    def tearDown(self):
        """
        Delete all the C++ objects at the end so that we don't have a segfault
        """
        del self.form
        del self.main_window

    def test_adjust_button(self):
        """
        Test the _adjust_button() method
        """
        # GIVEN: A button.
        button = QtWidgets.QPushButton()
        checked = True
        enabled = True
        text = 'new!'

        # WHEN: Call the method.
        with patch('PyQt5.QtWidgets.QPushButton.setChecked'
                   ) as mocked_check_method:
            self.form._adjust_button(button, checked, enabled, text)

            # THEN: The button should be changed.
            assert button.text() == text, 'The text should match.'
            mocked_check_method.assert_called_once_with(True)
            assert button.isEnabled(
            ) == enabled, 'The button should be disabled.'

    def test_space_key_press_event(self):
        """
        Test the keyPressEvent when the spacebar was pressed
        """
        # GIVEN: A key event that is a space
        mocked_event = MagicMock()
        mocked_event.key.return_value = QtCore.Qt.Key_Space

        # WHEN: The event is handled
        with patch.object(self.form,
                          'keyReleaseEvent') as mocked_key_release_event:
            self.form.keyPressEvent(mocked_event)

            # THEN: The key should be released
            mocked_key_release_event.assert_called_with(mocked_event)
            assert 0 == mocked_event.accept.call_count

    def test_primary_push_button_checked_key_press_event(self):
        """
        Test the keyPressEvent when the primary push button is checked
        """
        # GIVEN: The primary push button is checked
        with patch.object(self.form, 'keyReleaseEvent') as mocked_key_release_event, \
                patch.object(self.form.primary_push_button, 'isChecked') as mocked_is_checked:
            mocked_is_checked.return_value = True
            mocked_event = MagicMock()

            # WHEN: The event is handled
            self.form.keyPressEvent(mocked_event)

            # THEN: The key should be released
            mocked_key_release_event.assert_called_with(mocked_event)
            assert 0 == mocked_event.accept.call_count

    def test_alternate_push_button_checked_key_press_event(self):
        """
        Test the keyPressEvent when the alternate push button is checked
        """
        # GIVEN: The primary push button is checked
        with patch.object(self.form, 'keyReleaseEvent') as mocked_key_release_event, \
                patch.object(self.form.alternate_push_button, 'isChecked') as mocked_is_checked:
            mocked_is_checked.return_value = True
            mocked_event = MagicMock()

            # WHEN: The event is handled
            self.form.keyPressEvent(mocked_event)

            # THEN: The key should be released
            mocked_key_release_event.assert_called_with(mocked_event)
            assert 0 == mocked_event.accept.call_count

    def test_escape_key_press_event(self):
        """
        Test the keyPressEvent when the escape key was pressed
        """
        # GIVEN: A key event that is an escape
        mocked_event = MagicMock()
        mocked_event.key.return_value = QtCore.Qt.Key_Escape

        # WHEN: The event is handled
        with patch.object(self.form, 'close') as mocked_close:
            self.form.keyPressEvent(mocked_event)

            # THEN: The key should be released
            mocked_event.accept.assert_called_with()
            mocked_close.assert_called_with()

    def test_on_default_radio_button_not_toggled(self):
        """
        Test that the default radio button method exits early when the button is not toggled
        """
        # GIVEN: A not-toggled custom radio button
        with patch.object(
                self.form,
                '_current_item_action') as mocked_current_item_action:

            # WHEN: The clicked method is called
            self.form.on_default_radio_button_clicked(False)

            # THEN: The method should exit early (i.e. the rest of the methods are not called)
            assert 0 == mocked_current_item_action.call_count

    def test_on_default_radio_button_clicked_no_action(self):
        """
        Test that nothing happens when an action hasn't been selected and you click the default radio button
        """
        # GIVEN: Some mocked out methods, a current action, and some shortcuts
        with patch.object(self.form, '_current_item_action') as mocked_current_item_action, \
                patch.object(self.form, '_action_shortcuts') as mocked_action_shortcuts:
            mocked_current_item_action.return_value = None

            # WHEN: The default radio button is clicked
            self.form.on_default_radio_button_clicked(True)

            # THEN: The method should exit early (i.e. the rest of the methods are not called)
            mocked_current_item_action.assert_called_with()
            assert 0 == mocked_action_shortcuts.call_count

    def test_on_default_radio_button_clicked(self):
        """
        Test that the values are copied across correctly when the default radio button is selected
        """
        # GIVEN: Some mocked out methods, a current action, and some shortcuts
        with patch.object(self.form, '_current_item_action') as mocked_current_item_action, \
                patch.object(self.form, '_action_shortcuts') as mocked_action_shortcuts, \
                patch.object(self.form, 'refresh_shortcut_list') as mocked_refresh_shortcut_list, \
                patch.object(self.form, 'get_shortcut_string') as mocked_get_shortcut_string, \
                patch.object(self.form.primary_push_button, 'setText') as mocked_set_text:
            mocked_action = MagicMock()
            mocked_action.default_shortcuts = [QtCore.Qt.Key_Escape]
            mocked_current_item_action.return_value = mocked_action
            mocked_action_shortcuts.return_value = [QtCore.Qt.Key_Escape]
            mocked_get_shortcut_string.return_value = 'Esc'

            # WHEN: The default radio button is clicked
            self.form.on_default_radio_button_clicked(True)

            # THEN: The shorcuts should be copied across
            mocked_current_item_action.assert_called_with()
            mocked_action_shortcuts.assert_called_with(mocked_action)
            mocked_refresh_shortcut_list.assert_called_with()
            mocked_set_text.assert_called_with('Esc')

    def test_on_custom_radio_button_not_toggled(self):
        """
        Test that the custom radio button method exits early when the button is not toggled
        """
        # GIVEN: A not-toggled custom radio button
        with patch.object(
                self.form,
                '_current_item_action') as mocked_current_item_action:

            # WHEN: The clicked method is called
            self.form.on_custom_radio_button_clicked(False)

            # THEN: The method should exit early (i.e. the rest of the methods are not called)
            assert 0 == mocked_current_item_action.call_count

    def test_on_custom_radio_button_clicked(self):
        """
        Test that the values are copied across correctly when the custom radio button is selected
        """
        # GIVEN: Some mocked out methods, a current action, and some shortcuts
        with patch.object(self.form, '_current_item_action') as mocked_current_item_action, \
                patch.object(self.form, '_action_shortcuts') as mocked_action_shortcuts, \
                patch.object(self.form, 'refresh_shortcut_list') as mocked_refresh_shortcut_list, \
                patch.object(self.form, 'get_shortcut_string') as mocked_get_shortcut_string, \
                patch.object(self.form.primary_push_button, 'setText') as mocked_set_text:
            mocked_action = MagicMock()
            mocked_current_item_action.return_value = mocked_action
            mocked_action_shortcuts.return_value = [QtCore.Qt.Key_Escape]
            mocked_get_shortcut_string.return_value = 'Esc'

            # WHEN: The custom radio button is clicked
            self.form.on_custom_radio_button_clicked(True)

            # THEN: The shorcuts should be copied across
            mocked_current_item_action.assert_called_with()
            mocked_action_shortcuts.assert_called_with(mocked_action)
            mocked_refresh_shortcut_list.assert_called_with()
            mocked_set_text.assert_called_with('Esc')
Esempio n. 5
0
class TestShortcutform(TestCase, TestMixin):

    def setUp(self):
        """
        Create the UI
        """
        Registry.create()
        self.setup_application()
        self.main_window = QtWidgets.QMainWindow()
        Registry().register('main_window', self.main_window)
        self.form = ShortcutListForm()

    def tearDown(self):
        """
        Delete all the C++ objects at the end so that we don't have a segfault
        """
        del self.form
        del self.main_window

    def test_adjust_button(self):
        """
        Test the _adjust_button() method
        """
        # GIVEN: A button.
        button = QtWidgets.QPushButton()
        checked = True
        enabled = True
        text = 'new!'

        # WHEN: Call the method.
        with patch('PyQt5.QtWidgets.QPushButton.setChecked') as mocked_check_method:
            self.form._adjust_button(button, checked, enabled, text)

            # THEN: The button should be changed.
            self.assertEqual(button.text(), text, 'The text should match.')
            mocked_check_method.assert_called_once_with(True)
            self.assertEqual(button.isEnabled(), enabled, 'The button should be disabled.')

    def test_space_key_press_event(self):
        """
        Test the keyPressEvent when the spacebar was pressed
        """
        # GIVEN: A key event that is a space
        mocked_event = MagicMock()
        mocked_event.key.return_value = QtCore.Qt.Key_Space

        # WHEN: The event is handled
        with patch.object(self.form, 'keyReleaseEvent') as mocked_key_release_event:
            self.form.keyPressEvent(mocked_event)

            # THEN: The key should be released
            mocked_key_release_event.assert_called_with(mocked_event)
            self.assertEqual(0, mocked_event.accept.call_count)

    def test_primary_push_button_checked_key_press_event(self):
        """
        Test the keyPressEvent when the primary push button is checked
        """
        # GIVEN: The primary push button is checked
        with patch.object(self.form, 'keyReleaseEvent') as mocked_key_release_event, \
                patch.object(self.form.primary_push_button, 'isChecked') as mocked_is_checked:
            mocked_is_checked.return_value = True
            mocked_event = MagicMock()

            # WHEN: The event is handled
            self.form.keyPressEvent(mocked_event)

            # THEN: The key should be released
            mocked_key_release_event.assert_called_with(mocked_event)
            self.assertEqual(0, mocked_event.accept.call_count)

    def test_alternate_push_button_checked_key_press_event(self):
        """
        Test the keyPressEvent when the alternate push button is checked
        """
        # GIVEN: The primary push button is checked
        with patch.object(self.form, 'keyReleaseEvent') as mocked_key_release_event, \
                patch.object(self.form.alternate_push_button, 'isChecked') as mocked_is_checked:
            mocked_is_checked.return_value = True
            mocked_event = MagicMock()

            # WHEN: The event is handled
            self.form.keyPressEvent(mocked_event)

            # THEN: The key should be released
            mocked_key_release_event.assert_called_with(mocked_event)
            self.assertEqual(0, mocked_event.accept.call_count)

    def test_escape_key_press_event(self):
        """
        Test the keyPressEvent when the escape key was pressed
        """
        # GIVEN: A key event that is an escape
        mocked_event = MagicMock()
        mocked_event.key.return_value = QtCore.Qt.Key_Escape

        # WHEN: The event is handled
        with patch.object(self.form, 'close') as mocked_close:
            self.form.keyPressEvent(mocked_event)

            # THEN: The key should be released
            mocked_event.accept.assert_called_with()
            mocked_close.assert_called_with()

    def test_on_default_radio_button_not_toggled(self):
        """
        Test that the default radio button method exits early when the button is not toggled
        """
        # GIVEN: A not-toggled custom radio button
        with patch.object(self.form, '_current_item_action') as mocked_current_item_action:

            # WHEN: The clicked method is called
            self.form.on_default_radio_button_clicked(False)

            # THEN: The method should exit early (i.e. the rest of the methods are not called)
            self.assertEqual(0, mocked_current_item_action.call_count)

    def test_on_default_radio_button_clicked_no_action(self):
        """
        Test that nothing happens when an action hasn't been selected and you click the default radio button
        """
        # GIVEN: Some mocked out methods, a current action, and some shortcuts
        with patch.object(self.form, '_current_item_action') as mocked_current_item_action, \
                patch.object(self.form, '_action_shortcuts') as mocked_action_shortcuts:
            mocked_current_item_action.return_value = None

            # WHEN: The default radio button is clicked
            self.form.on_default_radio_button_clicked(True)

            # THEN: The method should exit early (i.e. the rest of the methods are not called)
            mocked_current_item_action.assert_called_with()
            self.assertEqual(0, mocked_action_shortcuts.call_count)

    def test_on_default_radio_button_clicked(self):
        """
        Test that the values are copied across correctly when the default radio button is selected
        """
        # GIVEN: Some mocked out methods, a current action, and some shortcuts
        with patch.object(self.form, '_current_item_action') as mocked_current_item_action, \
                patch.object(self.form, '_action_shortcuts') as mocked_action_shortcuts, \
                patch.object(self.form, 'refresh_shortcut_list') as mocked_refresh_shortcut_list, \
                patch.object(self.form, 'get_shortcut_string') as mocked_get_shortcut_string, \
                patch.object(self.form.primary_push_button, 'setText') as mocked_set_text:
            mocked_action = MagicMock()
            mocked_action.default_shortcuts = [QtCore.Qt.Key_Escape]
            mocked_current_item_action.return_value = mocked_action
            mocked_action_shortcuts.return_value = [QtCore.Qt.Key_Escape]
            mocked_get_shortcut_string.return_value = 'Esc'

            # WHEN: The default radio button is clicked
            self.form.on_default_radio_button_clicked(True)

            # THEN: The shorcuts should be copied across
            mocked_current_item_action.assert_called_with()
            mocked_action_shortcuts.assert_called_with(mocked_action)
            mocked_refresh_shortcut_list.assert_called_with()
            mocked_set_text.assert_called_with('Esc')

    def test_on_custom_radio_button_not_toggled(self):
        """
        Test that the custom radio button method exits early when the button is not toggled
        """
        # GIVEN: A not-toggled custom radio button
        with patch.object(self.form, '_current_item_action') as mocked_current_item_action:

            # WHEN: The clicked method is called
            self.form.on_custom_radio_button_clicked(False)

            # THEN: The method should exit early (i.e. the rest of the methods are not called)
            self.assertEqual(0, mocked_current_item_action.call_count)

    def test_on_custom_radio_button_clicked(self):
        """
        Test that the values are copied across correctly when the custom radio button is selected
        """
        # GIVEN: Some mocked out methods, a current action, and some shortcuts
        with patch.object(self.form, '_current_item_action') as mocked_current_item_action, \
                patch.object(self.form, '_action_shortcuts') as mocked_action_shortcuts, \
                patch.object(self.form, 'refresh_shortcut_list') as mocked_refresh_shortcut_list, \
                patch.object(self.form, 'get_shortcut_string') as mocked_get_shortcut_string, \
                patch.object(self.form.primary_push_button, 'setText') as mocked_set_text:
            mocked_action = MagicMock()
            mocked_current_item_action.return_value = mocked_action
            mocked_action_shortcuts.return_value = [QtCore.Qt.Key_Escape]
            mocked_get_shortcut_string.return_value = 'Esc'

            # WHEN: The custom radio button is clicked
            self.form.on_custom_radio_button_clicked(True)

            # THEN: The shorcuts should be copied across
            mocked_current_item_action.assert_called_with()
            mocked_action_shortcuts.assert_called_with(mocked_action)
            mocked_refresh_shortcut_list.assert_called_with()
            mocked_set_text.assert_called_with('Esc')