More unit test coverage for Completer.
Test completion_item{next,prev} and change_completed_part.
This commit is contained in:
parent
1ea28890b5
commit
7f690c3f3f
@ -376,6 +376,7 @@ class FakeStatusbarCommand(QObject):
|
|||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self._cursor_pos = 0
|
self._cursor_pos = 0
|
||||||
self._text = ""
|
self._text = ""
|
||||||
|
self._focus = False
|
||||||
|
|
||||||
def cursorPosition(self):
|
def cursorPosition(self):
|
||||||
return self._cursor_pos
|
return self._cursor_pos
|
||||||
@ -386,8 +387,11 @@ class FakeStatusbarCommand(QObject):
|
|||||||
def prefix(self):
|
def prefix(self):
|
||||||
return self._text[0]
|
return self._text[0]
|
||||||
|
|
||||||
|
def focus(self):
|
||||||
|
return self._focus
|
||||||
|
|
||||||
def setFocus(self):
|
def setFocus(self):
|
||||||
return None
|
self._focus = True
|
||||||
|
|
||||||
def setText(self, x):
|
def setText(self, x):
|
||||||
self._text = x
|
self._text = x
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
"""Tests for the Completer Object."""
|
"""Tests for the Completer Object."""
|
||||||
|
|
||||||
|
import unittest.mock
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from PyQt5.QtGui import QStandardItemModel
|
from PyQt5.QtGui import QStandardItemModel
|
||||||
|
|
||||||
@ -145,3 +147,42 @@ def test_update_completion(txt, expected, cmd, completer_obj,
|
|||||||
arg = completion_widget_stub.set_model.call_args[0][0]
|
arg = completion_widget_stub.set_model.call_args[0][0]
|
||||||
# the outer model is just for sorting; srcmodel is the completion model
|
# the outer model is just for sorting; srcmodel is the completion model
|
||||||
assert arg.srcmodel.kind == expected
|
assert arg.srcmodel.kind == expected
|
||||||
|
|
||||||
|
def test_completion_item_prev(completer_obj, cmd, completion_widget_stub,
|
||||||
|
config_stub):
|
||||||
|
"""Test that completion_item_prev emits next_prev_item."""
|
||||||
|
cmd.setText(':')
|
||||||
|
slot = unittest.mock.Mock()
|
||||||
|
completer_obj.next_prev_item.connect(slot)
|
||||||
|
completer_obj.completion_item_prev()
|
||||||
|
slot.assert_called_with(True)
|
||||||
|
|
||||||
|
def test_completion_item_next(completer_obj, cmd, completion_widget_stub,
|
||||||
|
config_stub):
|
||||||
|
"""Test that completion_item_next emits next_prev_item."""
|
||||||
|
cmd.setText(':')
|
||||||
|
slot = unittest.mock.Mock()
|
||||||
|
completer_obj.next_prev_item.connect(slot)
|
||||||
|
completer_obj.completion_item_next()
|
||||||
|
slot.assert_called_with(False)
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('before, newtxt, immediate, after', [
|
||||||
|
(':foo |', 'bar', False, ':foo bar|'),
|
||||||
|
(':foo |', 'bar', True, ':foo bar |'),
|
||||||
|
(':foo | bar', 'baz', False, ':foo baz| bar'),
|
||||||
|
(':foo | bar', 'baz', True, ':foo baz |bar'),
|
||||||
|
])
|
||||||
|
def test_change_completed_part(before, newtxt, after, immediate, completer_obj,
|
||||||
|
cmd, completion_widget_stub, config_stub):
|
||||||
|
"""Test that change_completed_part modifies the cmd text properly."""
|
||||||
|
before_pos = before.index('|')
|
||||||
|
after_pos = after.index('|')
|
||||||
|
before_txt = before.replace('|', '')
|
||||||
|
after_txt = after.replace('|', '')
|
||||||
|
cmd.setText(before_txt)
|
||||||
|
cmd.setCursorPosition(before_pos)
|
||||||
|
completer_obj.update_cursor_part()
|
||||||
|
completer_obj.change_completed_part(newtxt, immediate)
|
||||||
|
assert cmd.focus()
|
||||||
|
assert cmd.text() == after_txt
|
||||||
|
assert cmd.cursorPosition() == after_pos
|
||||||
|
Loading…
Reference in New Issue
Block a user