summaryrefslogtreecommitdiff
path: root/tests/unit/mainwindow/test_messageview.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/mainwindow/test_messageview.py')
-rw-r--r--tests/unit/mainwindow/test_messageview.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/unit/mainwindow/test_messageview.py b/tests/unit/mainwindow/test_messageview.py
index 0f9dc9ea9..32bd638c7 100644
--- a/tests/unit/mainwindow/test_messageview.py
+++ b/tests/unit/mainwindow/test_messageview.py
@@ -17,6 +17,8 @@
# You should have received a copy of the GNU General Public License
# along with qutebrowser. If not, see <https://www.gnu.org/licenses/>.
+import contextlib
+
import pytest
from PyQt5.QtCore import Qt
@@ -63,6 +65,7 @@ def test_word_wrap(view, qtbot):
"""A long message should be wrapped."""
with qtbot.wait_signal(view._clear_timer.timeout):
view.show_message(message.MessageInfo(usertypes.MessageLevel.info, 'short'))
+ assert len(view._messages) == 1
height1 = view.sizeHint().height()
assert height1 > 0
@@ -73,12 +76,52 @@ def test_word_wrap(view, qtbot):
"island deep in the sea.")
view.show_message(message.MessageInfo(usertypes.MessageLevel.info, text))
+ assert len(view._messages) == 1
height2 = view.sizeHint().height()
assert height2 > height1
assert view._messages[0].wordWrap()
+@pytest.mark.parametrize("rich, higher, expected_format", [
+ (True, True, Qt.TextFormat.RichText),
+ (False, False, Qt.TextFormat.PlainText),
+ (None, False, Qt.TextFormat.PlainText),
+])
+@pytest.mark.parametrize("replace", ["test", None])
+def test_rich_text(view, qtbot, rich, higher, expected_format, replace):
+ """Rich text should be rendered appropriately."""
+ level = usertypes.MessageLevel.info
+ text = 'with <h1>markup</h1>'
+ text2 = 'with <h1>markup</h1> 2'
+
+ info1 = message.MessageInfo(level, text, replace=replace)
+ info2 = message.MessageInfo(level, text2, replace=replace, rich=rich)
+
+ ctx = (
+ qtbot.wait_signal(view._clear_timer.timeout) if replace is None
+ else contextlib.nullcontext()
+ )
+ with ctx:
+ view.show_message(info1)
+ assert len(view._messages) == 1
+
+ height1 = view.sizeHint().height()
+ assert height1 > 0
+
+ assert view._messages[0].textFormat() == Qt.TextFormat.PlainText # default
+
+ view.show_message(info2)
+ height2 = view.sizeHint().height()
+ assert len(view._messages) == 1
+
+ assert view._messages[0].textFormat() == expected_format
+ if higher:
+ assert height2 > height1
+ else:
+ assert height2 == height1
+
+
def test_show_message_twice(view):
"""Show the same message twice -> only one should be shown."""
view.show_message(message.MessageInfo(usertypes.MessageLevel.info, 'test'))