|
5 | 5 | import pytz
|
6 | 6 | from bs4 import BeautifulSoup
|
7 | 7 | from pytest import param as case
|
8 |
| -from urwid import Columns, Divider, Padding, Text |
| 8 | +from urwid import AttrMap, Columns, Divider, Padding, Text |
9 | 9 |
|
10 | 10 | from zulipterminal.config.keys import keys_for_command
|
11 | 11 | from zulipterminal.config.symbols import (
|
@@ -814,7 +814,7 @@ class TestMiddleColumnView:
|
814 | 814 | @pytest.fixture(autouse=True)
|
815 | 815 | def mock_external_classes(self, mocker):
|
816 | 816 | mocker.patch(VIEWS + ".MessageView", return_value="MSG_LIST")
|
817 |
| - self.model = mocker.Mock() |
| 817 | + self.model = mocker.MagicMock() |
818 | 818 | self.view = mocker.Mock()
|
819 | 819 | self.write_box = mocker.Mock()
|
820 | 820 | self.search_box = mocker.Mock()
|
@@ -887,6 +887,47 @@ def test_get_next_unread_pm_no_unread(self, mid_col_view):
|
887 | 887 | assert return_value is None
|
888 | 888 | assert mid_col_view.last_unread_pm is None
|
889 | 889 |
|
| 890 | + @pytest.mark.parametrize('message', [ |
| 891 | + { |
| 892 | + 'id': 4, |
| 893 | + 'type': 'stream', |
| 894 | + 'display_recipient': 'Verona', |
| 895 | + 'stream_id': 5, |
| 896 | + 'subject': 'Test topic', |
| 897 | + 'is_me_message': True, |
| 898 | + 'flags': [], |
| 899 | + 'content': '', |
| 900 | + 'reactions': [], |
| 901 | + 'sender_full_name': 'Human 1', # this message name |
| 902 | + 'timestamp': 1532103879, |
| 903 | + } |
| 904 | + ]) |
| 905 | + @pytest.mark.parametrize('differences, header_needed, update_required', [ |
| 906 | + ({'subject': 'Test topic 2'}, True, True), |
| 907 | + ({}, False, False), |
| 908 | + ({'sender_full_name': 'Human 2'}, False, True), |
| 909 | + ({'timestamp': 1532103869}, False, False), |
| 910 | + ], ids=[ |
| 911 | + 'recipient_header_present', |
| 912 | + 'recipient_header_not_present', |
| 913 | + 'content_header_present', |
| 914 | + 'content_header_not_present', |
| 915 | + ]) |
| 916 | + def test_update_msg_box_presence_markers(self, mid_col_view, message, |
| 917 | + update_required, mocker, |
| 918 | + differences, header_needed): |
| 919 | + last_msg = dict(message, **differences) |
| 920 | + |
| 921 | + msg_box = MessageBox(message, mid_col_view.model, last_msg) |
| 922 | + |
| 923 | + mid_col_view.body = mocker.Mock() |
| 924 | + mocker.patch.object(mid_col_view.body, 'log', |
| 925 | + [AttrMap(msg_box, None)]) |
| 926 | + |
| 927 | + mid_col_view.update_msg_box_presence_markers() |
| 928 | + |
| 929 | + assert self.model._update_rendered_view.called == update_required |
| 930 | + |
890 | 931 | @pytest.mark.parametrize('key', keys_for_command('GO_BACK'))
|
891 | 932 | def test_keypress_GO_BACK(self, mid_col_view, mocker, key, widget_size):
|
892 | 933 | size = widget_size(mid_col_view)
|
|
0 commit comments