diff --git a/zulipterminal/model.py b/zulipterminal/model.py
index 82d809a..7073e4f 100644
--- a/zulipterminal/model.py
+++ b/zulipterminal/model.py
@@ -2,6 +2,7 @@
 Defines the `Model`, fetching and storing data retrieved from the Zulip server
 """
 
+import bisect
 import itertools
 import json
 import time
@@ -111,7 +112,6 @@ class Model:
         self.stream_id: Optional[int] = None
         self.recipients: FrozenSet[Any] = frozenset()
         self.index = initial_index
-        self._last_unread_topic = None
         self.last_unread_pm = None
 
         self.user_id = -1
@@ -886,23 +886,67 @@ class Model:
         topic_to_search = (stream_name, topic)
         return topic_to_search in self._muted_topics
 
-    def get_next_unread_topic(self) -> Optional[Tuple[int, str]]:
+    def stream_topic_from_message_id(
+        self, message_id: int
+    ) -> Optional[Tuple[int, str]]:
+        """
+        Returns the stream and topic of a message of a given message id.
+        If the message is not a stream message or if it is not present in the index,
+        None is returned.
+        """
+        message = self.index["messages"].get(message_id, None)
+        if message is not None and message["type"] == "stream":
+            stream_id = message["stream_id"]
+            topic = message["subject"]
+            return (stream_id, topic)
+        return None
+
+    def next_unread_topic_from_message_id(
+        self, current_message: Optional[int]
+    ) -> Optional[Tuple[int, str]]:
+        if current_message:
+            current_topic = self.stream_topic_from_message_id(current_message)
+        else:
+            current_topic = (
+                self.stream_id_from_name(self.narrow[0][1]),
+                self.narrow[1][1],
+            )
         unread_topics = sorted(self.unread_counts["unread_topics"].keys())
         next_topic = False
-        if self._last_unread_topic not in unread_topics:
+        stream_start: Optional[Tuple[int, str]] = None
+        if current_topic is None:
             next_topic = True
+        elif current_topic not in unread_topics:
+            # insert current_topic in list of unread_topics for the case where
+            # current_topic is not in unread_topics, and the next unmuted topic
+            # is to be returned. This does not modify the original unread topics
+            # data, and is just used to compute the next unmuted topic to be returned.
+            bisect.insort(unread_topics, current_topic)
         # loop over unread_topics list twice for the case that last_unread_topic was
         # the last valid unread_topic in unread_topics list.
         for unread_topic in unread_topics * 2:
             stream_id, topic_name = unread_topic
-            if (
-                not self.is_muted_topic(stream_id, topic_name)
-                and not self.is_muted_stream(stream_id)
-                and next_topic
-            ):
-                self._last_unread_topic = unread_topic
-                return unread_topic
-            if unread_topic == self._last_unread_topic:
+            if not self.is_muted_topic(
+                stream_id, topic_name
+            ) and not self.is_muted_stream(stream_id):
+                if next_topic:
+                    if unread_topic == current_topic:
+                        return None
+                    if (
+                        current_topic is not None
+                        and unread_topic[0] != current_topic[0]
+                        and stream_start != current_topic
+                    ):
+                        return stream_start
+                    return unread_topic
+
+                if (
+                    stream_start is None
+                    and current_topic is not None
+                    and unread_topic[0] == current_topic[0]
+                ):
+                    stream_start = unread_topic
+            if unread_topic == current_topic:
                 next_topic = True
         return None
 
diff --git a/zulipterminal/ui_tools/views.py b/zulipterminal/ui_tools/views.py
index 64eebeb..6a1e4e6 100644
--- a/zulipterminal/ui_tools/views.py
+++ b/zulipterminal/ui_tools/views.py
@@ -584,9 +584,20 @@ class MiddleColumnView(urwid.Frame):
 
         elif is_command_key("NEXT_UNREAD_TOPIC", key):
             # narrow to next unread topic
-            stream_topic = self.model.get_next_unread_topic()
-            if stream_topic is None:
+            focus = self.view.message_view.focus
+            narrow = self.model.narrow
+            if focus:
+                current_msg_id = focus.original_widget.message["id"]
+                stream_topic = self.model.next_unread_topic_from_message_id(
+                    current_msg_id
+                )
+                if stream_topic is None:
+                    return key
+            elif narrow[0][0] == "stream" and narrow[1][0] == "topic":
+                stream_topic = self.model.next_unread_topic_from_message_id(None)
+            else:
                 return key
+
             stream_id, topic = stream_topic
             self.controller.narrow_to_topic(
                 stream_name=self.model.stream_dict[stream_id]["name"],

diff --git a/tests/model/test_model.py b/tests/model/test_model.py
index 2bf150a..fe2ba55 100644
--- a/tests/model/test_model.py
+++ b/tests/model/test_model.py
@@ -72,7 +72,6 @@ class TestModel:
         assert model.stream_dict == stream_dict
         assert model.recipients == frozenset()
         assert model.index == initial_index
-        assert model._last_unread_topic is None
         assert model.last_unread_pm is None
         model.get_messages.assert_called_once_with(
             num_before=30, num_after=10, anchor=None
@@ -3900,7 +3899,7 @@ class TestModel:
         assert return_value == is_muted
 
     @pytest.mark.parametrize(
-        "unread_topics, last_unread_topic, next_unread_topic",
+        "unread_topics, current_topic, next_unread_topic",
         [
             case(
                 {(1, "topic"), (2, "topic2")},
@@ -3920,10 +3919,10 @@ class TestModel:
                 (1, "topic"),
                 id="unread_present_before_previous_topic",
             ),
-            case(  # TODO Should be None? (2 other cases)
+            case(
                 {(1, "topic")},
                 (1, "topic"),
-                (1, "topic"),
+                None,
                 id="unread_still_present_in_topic",
             ),
             case(
@@ -3993,16 +3992,42 @@ class TestModel:
                 (2, "topic2"),
                 id="unread_present_after_previous_topic_muted",
             ),
+            case(
+                {(1, "topic1"), (2, "topic2"), (2, "topic2 muted")},
+                (2, "topic1"),
+                (2, "topic2"),
+                id="unmuted_unread_present_in_same_stream_as_current_topic_not_in_unread_list",
+            ),
+            case(
+                {(1, "topic1"), (2, "topic2 muted"), (4, "topic4")},
+                (2, "topic1"),
+                (4, "topic4"),
+                id="unmuted_unread_present_in_next_stream_as_current_topic_not_in_unread_list",
+            ),
+            case(
+                {(1, "topic1"), (2, "topic2 muted"), (3, "topic3")},
+                (2, "topic1"),
+                (1, "topic1"),
+                id="unmuted_unread_not_present_in_next_stream_as_current_topic_not_in_unread_list",
+            ),
+            case(
+                {(1, "topic1"), (1, "topic11"), (2, "topic2")},
+                (1, "topic11"),
+                (1, "topic1"),
+                id="unread_present_in_same_stream_wrap_around",
+            ),
         ],
     )
-    def test_get_next_unread_topic(
-        self, model, unread_topics, last_unread_topic, next_unread_topic
+    def test_next_unread_topic_from_message(
+        self, mocker, model, unread_topics, current_topic, next_unread_topic
     ):
         # NOTE Not important how many unreads per topic, so just use '1'
         model.unread_counts = {
             "unread_topics": {stream_topic: 1 for stream_topic in unread_topics}
         }
-        model._last_unread_topic = last_unread_topic
+
+        current_message_id = 10  # Arbitrary value due to mock below
+        model.stream_topic_from_message_id = mocker.Mock(return_value=current_topic)
 
         # Minimal extra streams for muted stream testing (should not exist otherwise)
         assert {3, 4} & set(model.stream_dict) == set()
@@ -4020,7 +4045,38 @@ class TestModel:
             ]
         }
 
-        unread_topic = model.get_next_unread_topic()
+        unread_topic = model.next_unread_topic_from_message_id(current_message_id)
+
+        assert unread_topic == next_unread_topic
+
+    @pytest.mark.parametrize(
+        "unread_topics, empty_narrow, narrow_stream_id, next_unread_topic",
+        [
+            case(
+                {(1, "topic1"), (1, "topic2"), (2, "topic3")},
+                [["stream", "Stream 1"], ["topic", "topic1.5"]],
+                1,
+                (1, "topic2"),
+            ),
+        ],
+    )
+    def test_next_unread_topic_from_message__empty_narrow(
+        self,
+        mocker,
+        model,
+        unread_topics,
+        empty_narrow,
+        narrow_stream_id,
+        next_unread_topic,
+    ):
+        # NOTE Not important how many unreads per topic, so just use '1'
+        model.unread_counts = {
+            "unread_topics": {stream_topic: 1 for stream_topic in unread_topics}
+        }
+        model.stream_id_from_name = mocker.Mock(return_value=narrow_stream_id)
+        model.narrow = empty_narrow
+
+        unread_topic = model.next_unread_topic_from_message_id(None)
 
         assert unread_topic == next_unread_topic
 
@@ -4043,6 +4099,21 @@ class TestModel:
         assert return_value is None
         assert model.last_unread_pm is None
 
+    @pytest.mark.parametrize(
+        "message_id, expected_value",
+        [
+            case(537286, (205, "Test"), id="stream_message"),
+            case(537287, None, id="direct_message"),
+            case(537289, None, id="non-existent message"),
+        ],
+    )
+    def test_stream_topic_from_message_id(
+        self, mocker, model, message_id, expected_value, empty_index
+    ):
+        model.index = empty_index
+        current_topic = model.stream_topic_from_message_id(message_id)
+        assert current_topic == expected_value
+
     @pytest.mark.parametrize(
         "stream_id, expected_response",
         [
diff --git a/tests/ui/test_ui_tools.py b/tests/ui/test_ui_tools.py
index c04c9c3..324ee04 100644
--- a/tests/ui/test_ui_tools.py
+++ b/tests/ui/test_ui_tools.py
@@ -887,9 +887,10 @@ class TestMiddleColumnView:
     ):
         size = widget_size(mid_col_view)
         mocker.patch(MIDCOLVIEW + ".focus_position")
+        mocker.patch.object(self.view, "message_view")
 
         mid_col_view.model.stream_dict = {1: {"name": "stream"}}
-        mid_col_view.model.get_next_unread_topic.return_value = (1, "topic")
+        mid_col_view.model.next_unread_topic_from_message_id.return_value = (1, "topic")
 
         return_value = mid_col_view.keypress(size, key)
 
@@ -904,7 +905,8 @@ class TestMiddleColumnView:
     ):
         size = widget_size(mid_col_view)
         mocker.patch(MIDCOLVIEW + ".focus_position")
-        mid_col_view.model.get_next_unread_topic.return_value = None
+        mocker.patch.object(self.view, "message_view")
+        mid_col_view.model.next_unread_topic_from_message_id.return_value = None
 
         return_value = mid_col_view.keypress(size, key)
 

Improve algorithm for 'next unread topic' (n) to use current message state
This is intended as a first step to resolving #1332. Please focus on this element of that issue first, and if things go well, then extending the algorithm further to resolve the remaining elements would be great as followup PR(s).

The current message is part of the UI, so we likely want to try passing this information as an additional parameter to the `get_next_unread_topic` method. This seems likely to replace the persistent topic state stored in the model right now.

There are existing tests for this method, which will need to be adjusted to account for the change in method signature (new parameter) and possible change in behavior. Depending on the cases covered by the tests, this may also warrant additional cases to demonstrate the code is working well.
tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_after_no_state] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_after_previous_topic] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_before_previous_topic] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_still_present_in_topic] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[no_unreads_with_previous_topic_state] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[no_unreads_with_no_previous_topic_state] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_before_previous_topic_skipping_muted_stream] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_after_previous_topic_skipping_muted_stream] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_only_in_muted_stream] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_starting_in_muted_stream] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_skipping_first_muted_stream_unread] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_only_in_muted_topic] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_starting_in_muted_topic] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_only_in_muted_topic_in_muted_stream] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_after_previous_topic_skipping_muted_topic] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_after_previous_topic_muted] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unmuted_unread_present_in_same_stream_as_current_topic_not_in_unread_list] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unmuted_unread_present_in_next_stream_as_current_topic_not_in_unread_list] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unmuted_unread_not_present_in_next_stream_as_current_topic_not_in_unread_list] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message[unread_present_in_same_stream_wrap_around] tests/model/test_model.py::TestModel::test_next_unread_topic_from_message__empty_narrow[unread_topics0-empty_narrow0-1-next_unread_topic0] tests/model/test_model.py::TestModel::test_stream_topic_from_message_id[stream_message] tests/model/test_model.py::TestModel::test_stream_topic_from_message_id[direct_message] tests/model/test_model.py::TestModel::test_stream_topic_from_message_id[non-existent tests/ui/test_ui_tools.py::TestMiddleColumnView::test_keypress_NEXT_UNREAD_TOPIC_stream[n] tests/ui/test_ui_tools.py::TestMiddleColumnView::test_keypress_NEXT_UNREAD_TOPIC_no_stream[n]
tests/model/test_model.py::TestModel::test_init tests/model/test_model.py::TestModel::test_init_user_settings[None-True] tests/model/test_model.py::TestModel::test_init_user_settings[True-True] tests/model/test_model.py::TestModel::test_init_user_settings[False-False] tests/model/test_model.py::TestModel::test_user_settings_expected_contents tests/model/test_model.py::TestModel::test_init_muted_topics[zulip_feature_level:None] tests/model/test_model.py::TestModel::test_init_muted_topics[zulip_feature_level:1] tests/model/test_model.py::TestModel::test_init_InvalidAPIKey_response tests/model/test_model.py::TestModel::test_init_ZulipError_exception tests/model/test_model.py::TestModel::test_register_initial_desired_events tests/model/test_model.py::TestModel::test_normalize_and_cache_message_retention_text[ZFL=None_no_stream_retention_realm_retention=None] tests/model/test_model.py::TestModel::test_normalize_and_cache_message_retention_text[ZFL=16_no_stream_retention_realm_retention=-1] tests/model/test_model.py::TestModel::test_normalize_and_cache_message_retention_text[ZFL=17_stream_retention_days=30] tests/model/test_model.py::TestModel::test_normalize_and_cache_message_retention_text[ZFL=18_stream_retention_days=[None, tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow0-1] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow0-5] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow0-None] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow1-1] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow1-5] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow1-None] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow2-1] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow2-5] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow2-None] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow3-1] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow3-5] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow3-None] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow4-1] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow4-5] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow4-None] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow5-1] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow5-5] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow5-None] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow6-1] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow6-5] tests/model/test_model.py::TestModel::test_get_focus_in_current_narrow_individually[narrow6-None] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow0-1] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow0-5] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow1-1] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow1-5] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow2-1] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow2-5] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow3-1] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow3-5] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow4-1] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow4-5] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow5-1] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow5-5] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow6-1] tests/model/test_model.py::TestModel::test_set_focus_in_current_narrow[narrow6-5] tests/model/test_model.py::TestModel::test_is_search_narrow[narrow0-False] tests/model/test_model.py::TestModel::test_is_search_narrow[narrow1-True] tests/model/test_model.py::TestModel::test_is_search_narrow[narrow2-False] tests/model/test_model.py::TestModel::test_is_search_narrow[narrow3-True] tests/model/test_model.py::TestModel::test_is_search_narrow[narrow4-True] tests/model/test_model.py::TestModel::test_is_search_narrow[narrow5-False] tests/model/test_model.py::TestModel::test_is_search_narrow[narrow6-True] tests/model/test_model.py::TestModel::test_is_search_narrow[narrow7-False] tests/model/test_model.py::TestModel::test_is_search_narrow[narrow8-True] tests/model/test_model.py::TestModel::test_is_search_narrow[narrow9-True] tests/model/test_model.py::TestModel::test_is_search_narrow[narrow10-True] tests/model/test_model.py::TestModel::test_set_narrow_bad_input[bad_args0] tests/model/test_model.py::TestModel::test_set_narrow_bad_input[bad_args1] tests/model/test_model.py::TestModel::test_set_narrow_bad_input[bad_args2] tests/model/test_model.py::TestModel::test_set_narrow_bad_input[bad_args3] tests/model/test_model.py::TestModel::test_set_narrow_already_set[narrow0-good_args0] tests/model/test_model.py::TestModel::test_set_narrow_already_set[narrow1-good_args1] tests/model/test_model.py::TestModel::test_set_narrow_already_set[narrow2-good_args2] tests/model/test_model.py::TestModel::test_set_narrow_already_set[narrow3-good_args3] tests/model/test_model.py::TestModel::test_set_narrow_already_set[narrow4-good_args4] tests/model/test_model.py::TestModel::test_set_narrow_already_set[narrow5-good_args5] tests/model/test_model.py::TestModel::test_set_narrow_already_set[narrow6-good_args6] tests/model/test_model.py::TestModel::test_set_narrow_not_already_set[initial_narrow0-narrow0-good_args0] tests/model/test_model.py::TestModel::test_set_narrow_not_already_set[initial_narrow1-narrow1-good_args1] tests/model/test_model.py::TestModel::test_set_narrow_not_already_set[initial_narrow2-narrow2-good_args2] tests/model/test_model.py::TestModel::test_set_narrow_not_already_set[initial_narrow3-narrow3-good_args3] tests/model/test_model.py::TestModel::test_set_narrow_not_already_set[initial_narrow4-narrow4-good_args4] tests/model/test_model.py::TestModel::test_set_narrow_not_already_set[initial_narrow5-narrow5-good_args5] tests/model/test_model.py::TestModel::test_set_narrow_not_already_set[initial_narrow6-narrow6-good_args6] tests/model/test_model.py::TestModel::test_get_message_ids_in_current_narrow[narrow0-index0-current_ids0] tests/model/test_model.py::TestModel::test_get_message_ids_in_current_narrow[narrow1-index1-current_ids1] tests/model/test_model.py::TestModel::test_get_message_ids_in_current_narrow[narrow2-index2-current_ids2] tests/model/test_model.py::TestModel::test_get_message_ids_in_current_narrow[narrow3-index3-current_ids3] tests/model/test_model.py::TestModel::test_get_message_ids_in_current_narrow[narrow4-index4-current_ids4] tests/model/test_model.py::TestModel::test_get_message_ids_in_current_narrow[narrow5-index5-current_ids5] tests/model/test_model.py::TestModel::test_get_message_ids_in_current_narrow[narrow6-index6-current_ids6] tests/model/test_model.py::TestModel::test_get_message_ids_in_current_narrow[narrow7-index7-current_ids7] tests/model/test_model.py::TestModel::test_get_message_ids_in_current_narrow[narrow8-index8-current_ids8] tests/model/test_model.py::TestModel::test_get_message_ids_in_current_narrow[narrow9-index9-current_ids9] tests/model/test_model.py::TestModel::test_get_message_ids_in_current_narrow[narrow10-index10-current_ids10] tests/model/test_model.py::TestModel::test__fetch_topics_in_streams[response0-expected_index0-] tests/model/test_model.py::TestModel::test__fetch_topics_in_streams[response1-expected_index1-] tests/model/test_model.py::TestModel::test__fetch_topics_in_streams[response2-expected_index2-Some tests/model/test_model.py::TestModel::test_topics_in_stream[topics_index0-False] tests/model/test_model.py::TestModel::test_topics_in_stream[topics_index1-True] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_unicode_original_no_existing_emoji-user_id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_unicode_original_no_existing_emoji-id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_unicode_original_no_existing_emoji-None] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_realm_original_no_existing_emoji-user_id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_realm_original_no_existing_emoji-id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_realm_original_no_existing_emoji-None] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_unicode_original_mine_existing_different_emoji-user_id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_unicode_original_mine_existing_different_emoji-id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_unicode_original_mine_existing_different_emoji-None] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_zulip_original_mine_existing_different_emoji-user_id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_zulip_original_mine_existing_different_emoji-id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_zulip_original_mine_existing_different_emoji-None] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_unicode_original_others_existing_same_emoji-user_id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_unicode_original_others_existing_same_emoji-id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_unicode_original_others_existing_same_emoji-None] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_unicode_alias_others_existing_same_emoji-user_id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_unicode_alias_others_existing_same_emoji-id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[add_unicode_alias_others_existing_same_emoji-None] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[remove_unicode_original_mine_existing_same_emoji-user_id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[remove_unicode_original_mine_existing_same_emoji-id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[remove_unicode_original_mine_existing_same_emoji-None] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[remove_unicode_alias_mine_existing_same_emoji-user_id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[remove_unicode_alias_mine_existing_same_emoji-id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[remove_unicode_alias_mine_existing_same_emoji-None] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[remove_zulip_original_mine_existing_same_emoji-user_id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[remove_zulip_original_mine_existing_same_emoji-id] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_valid_emoji[remove_zulip_original_mine_existing_same_emoji-None] tests/model/test_model.py::TestModel::test_toggle_message_reaction_with_invalid_emoji tests/model/test_model.py::TestModel::test_has_user_reacted_to_message[id_inside_user_field__user_not_reacted] tests/model/test_model.py::TestModel::test_has_user_reacted_to_message[user_id_inside_user_field__user_has_reacted] tests/model/test_model.py::TestModel::test_has_user_reacted_to_message[no_user_field_with_user_id__user_has_reacted] tests/model/test_model.py::TestModel::test_has_user_reacted_to_message[no_user_field_with_user_id__user_not_reacted] tests/model/test_model.py::TestModel::test_send_typing_status_by_user_ids[start-recipient_user_ids0] tests/model/test_model.py::TestModel::test_send_typing_status_by_user_ids[start-recipient_user_ids1] tests/model/test_model.py::TestModel::test_send_typing_status_by_user_ids[stop-recipient_user_ids0] tests/model/test_model.py::TestModel::test_send_typing_status_by_user_ids[stop-recipient_user_ids1] tests/model/test_model.py::TestModel::test_send_typing_status_with_no_recipients[start] tests/model/test_model.py::TestModel::test_send_typing_status_with_no_recipients[stop] tests/model/test_model.py::TestModel::test_send_typing_status_avoided_due_to_user_setting[start-recipient_user_ids0] tests/model/test_model.py::TestModel::test_send_typing_status_avoided_due_to_user_setting[start-recipient_user_ids1] tests/model/test_model.py::TestModel::test_send_typing_status_avoided_due_to_user_setting[stop-recipient_user_ids0] tests/model/test_model.py::TestModel::test_send_typing_status_avoided_due_to_user_setting[stop-recipient_user_ids1] tests/model/test_model.py::TestModel::test_send_private_message[recipients0-response0-True] tests/model/test_model.py::TestModel::test_send_private_message[recipients0-response1-False] tests/model/test_model.py::TestModel::test_send_private_message[recipients1-response0-True] tests/model/test_model.py::TestModel::test_send_private_message[recipients1-response1-False] tests/model/test_model.py::TestModel::test_send_private_message_with_no_recipients tests/model/test_model.py::TestModel::test_send_stream_message[response0-True] tests/model/test_model.py::TestModel::test_send_stream_message[response1-False] tests/model/test_model.py::TestModel::test_update_private_message[response0-True] tests/model/test_model.py::TestModel::test_update_private_message[response1-False] tests/model/test_model.py::TestModel::test_update_stream_message[topic_passed_but_same_so_not_changed:content_changed-API_success] tests/model/test_model.py::TestModel::test_update_stream_message[topic_passed_but_same_so_not_changed:content_changed-API_error] tests/model/test_model.py::TestModel::test_update_stream_message[topic_changed[one]-API_success] tests/model/test_model.py::TestModel::test_update_stream_message[topic_changed[one]-API_error] tests/model/test_model.py::TestModel::test_update_stream_message[topic_passed_but_same_so_not_changed[all]-API_success] tests/model/test_model.py::TestModel::test_update_stream_message[topic_passed_but_same_so_not_changed[all]-API_error] tests/model/test_model.py::TestModel::test_update_stream_message[topic_passed_but_same_so_not_changed[later]:content_changed-API_success] tests/model/test_model.py::TestModel::test_update_stream_message[topic_passed_but_same_so_not_changed[later]:content_changed-API_error] tests/model/test_model.py::TestModel::test_update_stream_message[topic_changed[later]:content_changed-API_success] tests/model/test_model.py::TestModel::test_update_stream_message[topic_changed[later]:content_changed-API_error] tests/model/test_model.py::TestModel::test_update_stream_message[topic_changed[one]:content_changed-API_success] tests/model/test_model.py::TestModel::test_update_stream_message[topic_changed[one]:content_changed-API_error] tests/model/test_model.py::TestModel::test_update_stream_message[topic_changed[all]:content_changed-API_success] tests/model/test_model.py::TestModel::test_update_stream_message[topic_changed[all]:content_changed-API_error] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args0-False-False-None-False] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args0-False-False-8-False] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args0-False-False-9-True] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args0-False-False-152-True] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args1-False-False-None-False] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args1-False-False-8-False] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args1-False-False-9-True] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args1-False-False-152-True] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args2-False-False-None-False] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args2-False-False-8-False] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args2-False-False-9-True] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args2-False-False-152-True] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args3-True-False-None-False] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args3-True-False-8-False] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args3-True-False-9-True] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args3-True-False-152-True] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args4-False-True-None-False] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args4-False-True-8-False] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args4-False-True-9-True] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args4-False-True-152-True] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args5-True-True-None-False] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args5-True-True-8-False] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args5-True-True-9-True] tests/model/test_model.py::TestModel::test_update_stream_message__notify_thread_vs_ZFL[notify_args5-True-True-152-True] tests/model/test_model.py::TestModel::test_get_latest_message_in_topic[response0-return_value0] tests/model/test_model.py::TestModel::test_get_latest_message_in_topic[response1-None] tests/model/test_model.py::TestModel::test_get_latest_message_in_topic[response2-None] tests/model/test_model.py::TestModel::test_get_latest_message_in_topic[response3-None] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_msg_disabled:PreZulip4.0-None-_] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_msg_disabled:PreZulip4.0-user_role1-_owner] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_msg_disabled:PreZulip4.0-user_role2-_admin] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_msg_disabled:PreZulip4.0-user_role3-_moderator] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_msg_disabled:PreZulip4.0-user_role4-_member] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_msg_disabled:PreZulip4.0-user_role5-_guest] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_topic_disabled:PreZulip4.0-None-_] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_topic_disabled:PreZulip4.0-user_role1-_owner] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_topic_disabled:PreZulip4.0-user_role2-_admin] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_topic_disabled:PreZulip4.0-user_role3-_moderator] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_topic_disabled:PreZulip4.0-user_role4-_member] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_topic_disabled:PreZulip4.0-user_role5-_guest] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_topic_and_msg_enabled:PreZulip4.0-None-_] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_topic_and_msg_enabled:PreZulip4.0-user_role1-_owner] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_topic_and_msg_enabled:PreZulip4.0-user_role2-_admin] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_topic_and_msg_enabled:PreZulip4.0-user_role3-_moderator] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_topic_and_msg_enabled:PreZulip4.0-user_role4-_member] tests/model/test_model.py::TestModel::test_can_user_edit_topic[editing_topic_and_msg_enabled:PreZulip4.0-user_role5-_guest] tests/model/test_model.py::TestModel::test_can_user_edit_topic[all_but_no_editing:Zulip4.0+:ZFL75-None-_] tests/model/test_model.py::TestModel::test_can_user_edit_topic[all_but_no_editing:Zulip4.0+:ZFL75-user_role1-_owner] tests/model/test_model.py::TestModel::test_can_user_edit_topic[all_but_no_editing:Zulip4.0+:ZFL75-user_role2-_admin] tests/model/test_model.py::TestModel::test_can_user_edit_topic[all_but_no_editing:Zulip4.0+:ZFL75-user_role3-_moderator] tests/model/test_model.py::TestModel::test_can_user_edit_topic[all_but_no_editing:Zulip4.0+:ZFL75-user_role4-_member] tests/model/test_model.py::TestModel::test_can_user_edit_topic[all_but_no_editing:Zulip4.0+:ZFL75-user_role5-_guest] tests/model/test_model.py::TestModel::test_can_user_edit_topic[members:Zulip4.0+:ZFL75-None-_] tests/model/test_model.py::TestModel::test_can_user_edit_topic[members:Zulip4.0+:ZFL75-user_role1-_owner] tests/model/test_model.py::TestModel::test_can_user_edit_topic[members:Zulip4.0+:ZFL75-user_role2-_admin] tests/model/test_model.py::TestModel::test_can_user_edit_topic[members:Zulip4.0+:ZFL75-user_role3-_moderator] tests/model/test_model.py::TestModel::test_can_user_edit_topic[members:Zulip4.0+:ZFL75-user_role4-_member] tests/model/test_model.py::TestModel::test_can_user_edit_topic[members:Zulip4.0+:ZFL75-user_role5-_guest] tests/model/test_model.py::TestModel::test_can_user_edit_topic[admins:Zulip4.0+:ZFL75-None-_] tests/model/test_model.py::TestModel::test_can_user_edit_topic[admins:Zulip4.0+:ZFL75-user_role1-_owner] tests/model/test_model.py::TestModel::test_can_user_edit_topic[admins:Zulip4.0+:ZFL75-user_role2-_admin] tests/model/test_model.py::TestModel::test_can_user_edit_topic[admins:Zulip4.0+:ZFL75-user_role3-_moderator] tests/model/test_model.py::TestModel::test_can_user_edit_topic[admins:Zulip4.0+:ZFL75-user_role4-_member] tests/model/test_model.py::TestModel::test_can_user_edit_topic[admins:Zulip4.0+:ZFL75-user_role5-_guest] tests/model/test_model.py::TestModel::test_can_user_edit_topic[full_members:Zulip4.0+:ZFL75-None-_] tests/model/test_model.py::TestModel::test_can_user_edit_topic[full_members:Zulip4.0+:ZFL75-user_role1-_owner] tests/model/test_model.py::TestModel::test_can_user_edit_topic[full_members:Zulip4.0+:ZFL75-user_role2-_admin] tests/model/test_model.py::TestModel::test_can_user_edit_topic[full_members:Zulip4.0+:ZFL75-user_role3-_moderator] tests/model/test_model.py::TestModel::test_can_user_edit_topic[full_members:Zulip4.0+:ZFL75-user_role4-_member] tests/model/test_model.py::TestModel::test_can_user_edit_topic[full_members:Zulip4.0+:ZFL75-user_role5-_guest] tests/model/test_model.py::TestModel::test_can_user_edit_topic[moderators:Zulip4.0+:ZFL75-None-_] tests/model/test_model.py::TestModel::test_can_user_edit_topic[moderators:Zulip4.0+:ZFL75-user_role1-_owner] tests/model/test_model.py::TestModel::test_can_user_edit_topic[moderators:Zulip4.0+:ZFL75-user_role2-_admin] tests/model/test_model.py::TestModel::test_can_user_edit_topic[moderators:Zulip4.0+:ZFL75-user_role3-_moderator] tests/model/test_model.py::TestModel::test_can_user_edit_topic[moderators:Zulip4.0+:ZFL75-user_role4-_member] tests/model/test_model.py::TestModel::test_can_user_edit_topic[moderators:Zulip4.0+:ZFL75-user_role5-_guest] tests/model/test_model.py::TestModel::test_can_user_edit_topic[guests:Zulip4.0+:ZFL75-None-_] tests/model/test_model.py::TestModel::test_can_user_edit_topic[guests:Zulip4.0+:ZFL75-user_role1-_owner] tests/model/test_model.py::TestModel::test_can_user_edit_topic[guests:Zulip4.0+:ZFL75-user_role2-_admin] tests/model/test_model.py::TestModel::test_can_user_edit_topic[guests:Zulip4.0+:ZFL75-user_role3-_moderator] tests/model/test_model.py::TestModel::test_can_user_edit_topic[guests:Zulip4.0+:ZFL75-user_role4-_member] tests/model/test_model.py::TestModel::test_can_user_edit_topic[guests:Zulip4.0+:ZFL75-user_role5-_guest] tests/model/test_model.py::TestModel::test_success_get_messages tests/model/test_model.py::TestModel::test_modernize_message_response[Zulip_4.0+_ZFL46_response_with_topic_links] tests/model/test_model.py::TestModel::test_modernize_message_response[Zulip_3.0+_ZFL1_response_with_topic_links] tests/model/test_model.py::TestModel::test_modernize_message_response[Zulip_3.0+_ZFL1_response_empty_topic_links] tests/model/test_model.py::TestModel::test_modernize_message_response[Zulip_2.1+_response_with_subject_links] tests/model/test_model.py::TestModel::test_modernize_message_response[Zulip_2.1+_response_empty_subject_links] tests/model/test_model.py::TestModel::test__store_content_length_restrictions[Zulip_2.1.x_ZFL_None_no_restrictions] tests/model/test_model.py::TestModel::test__store_content_length_restrictions[Zulip_3.1.x_ZFL_27_no_restrictions] tests/model/test_model.py::TestModel::test__store_content_length_restrictions[Zulip_4.0.x_ZFL_52_no_restrictions] tests/model/test_model.py::TestModel::test__store_content_length_restrictions[Zulip_4.0.x_ZFL_53_with_restrictions] tests/model/test_model.py::TestModel::test_get_message_false_first_anchor tests/model/test_model.py::TestModel::test_fail_get_messages tests/model/test_model.py::TestModel::test_fetch_raw_message_content[response0-Feels tests/model/test_model.py::TestModel::test_fetch_raw_message_content[response1-None-True] tests/model/test_model.py::TestModel::test_toggle_stream_muted_status[muting_205] tests/model/test_model.py::TestModel::test_toggle_stream_muted_status[unmuting_205] tests/model/test_model.py::TestModel::test_toggle_stream_muted_status[first_muted_205] tests/model/test_model.py::TestModel::test_toggle_stream_muted_status[last_unmuted_205] tests/model/test_model.py::TestModel::test_stream_access_type tests/model/test_model.py::TestModel::test_toggle_message_star_status[flags_before0-add] tests/model/test_model.py::TestModel::test_toggle_message_star_status[flags_before1-remove] tests/model/test_model.py::TestModel::test_toggle_message_star_status[flags_before2-add] tests/model/test_model.py::TestModel::test_toggle_message_star_status[flags_before3-remove] tests/model/test_model.py::TestModel::test_toggle_message_star_status[flags_before4-remove] tests/model/test_model.py::TestModel::test_mark_message_ids_as_read tests/model/test_model.py::TestModel::test_mark_message_ids_as_read_empty_message_view tests/model/test_model.py::TestModel::test__update_initial_data tests/model/test_model.py::TestModel::test__group_info_from_realm_user_groups tests/model/test_model.py::TestModel::test__clean_and_order_custom_profile_data tests/model/test_model.py::TestModel::test_get_user_info[user_full_name] tests/model/test_model.py::TestModel::test_get_user_info[user_empty_full_name] tests/model/test_model.py::TestModel::test_get_user_info[user_email] tests/model/test_model.py::TestModel::test_get_user_info[user_empty_email] tests/model/test_model.py::TestModel::test_get_user_info[user_date_joined] tests/model/test_model.py::TestModel::test_get_user_info[user_empty_date_joined] tests/model/test_model.py::TestModel::test_get_user_info[user_timezone] tests/model/test_model.py::TestModel::test_get_user_info[user_empty_timezone] tests/model/test_model.py::TestModel::test_get_user_info[user_bot_type] tests/model/test_model.py::TestModel::test_get_user_info[user_empty_bot_type] tests/model/test_model.py::TestModel::test_get_user_info[user_is_owner:Zulip_4.0+_ZFL59] tests/model/test_model.py::TestModel::test_get_user_info[user_is_admin:Zulip_4.0+_ZFL59] tests/model/test_model.py::TestModel::test_get_user_info[user_is_moderator:Zulip_4.0+_ZFL60] tests/model/test_model.py::TestModel::test_get_user_info[user_is_guest:Zulip_4.0+_ZFL59] tests/model/test_model.py::TestModel::test_get_user_info[user_is_member] tests/model/test_model.py::TestModel::test_get_user_info[user_is_owner:Zulip_3.0+] tests/model/test_model.py::TestModel::test_get_user_info[user_is_admin:preZulip_4.0] tests/model/test_model.py::TestModel::test_get_user_info[user_is_guest:preZulip_4.0] tests/model/test_model.py::TestModel::test_get_user_info[user_is_bot] tests/model/test_model.py::TestModel::test_get_user_info[user_bot_has_owner:Zulip_3.0+_ZFL1] tests/model/test_model.py::TestModel::test_get_user_info[user_bot_has_owner:preZulip_3.0] tests/model/test_model.py::TestModel::test_get_user_info[user_bot_has_no_owner] tests/model/test_model.py::TestModel::test_get_user_info[user_has_custom_profile_data] tests/model/test_model.py::TestModel::test_get_user_info_USER_NOT_FOUND tests/model/test_model.py::TestModel::test_get_user_info_sample_response tests/model/test_model.py::TestModel::test__update_users_data_from_initial_data tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled0-muted0] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled0-muted1] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled0-muted2] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled0-muted3] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled1-muted0] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled1-muted1] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled1-muted2] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled1-muted3] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled2-muted0] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled2-muted1] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled2-muted2] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled2-muted3] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled3-muted0] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled3-muted1] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled3-muted2] tests/model/test_model.py::TestModel::test__subscribe_to_streams[visual_notification_enabled3-muted3] tests/model/test_model.py::TestModel::test__handle_message_event_with_Falsey_log[stream_message] tests/model/test_model.py::TestModel::test__handle_message_event_with_Falsey_log[pm_message] tests/model/test_model.py::TestModel::test__handle_message_event_with_Falsey_log[group_pm_message] tests/model/test_model.py::TestModel::test__handle_message_event_with_valid_log[stream_message] tests/model/test_model.py::TestModel::test__handle_message_event_with_valid_log[pm_message] tests/model/test_model.py::TestModel::test__handle_message_event_with_valid_log[group_pm_message] tests/model/test_model.py::TestModel::test__handle_message_event_with_flags[stream_message] tests/model/test_model.py::TestModel::test__handle_message_event_with_flags[pm_message] tests/model/test_model.py::TestModel::test__handle_message_event_with_flags[group_pm_message] tests/model/test_model.py::TestModel::test__handle_message_event[stream_to_all_messages] tests/model/test_model.py::TestModel::test__handle_message_event[private_to_all_private] tests/model/test_model.py::TestModel::test__handle_message_event[stream_to_stream] tests/model/test_model.py::TestModel::test__handle_message_event[stream_to_topic] tests/model/test_model.py::TestModel::test__handle_message_event[stream_to_different_stream_same_topic] tests/model/test_model.py::TestModel::test__handle_message_event[user_pm_x_appears_in_narrow_with_x] tests/model/test_model.py::TestModel::test__handle_message_event[search] tests/model/test_model.py::TestModel::test__handle_message_event[user_pm_x_does_not_appear_in_narrow_without_x] tests/model/test_model.py::TestModel::test__handle_message_event[mentioned_msg_in_mentioned_msg_narrow] tests/model/test_model.py::TestModel::test__update_topic_index[reorder_topic3] tests/model/test_model.py::TestModel::test__update_topic_index[topic1_discussion_continues] tests/model/test_model.py::TestModel::test__update_topic_index[new_topic4] tests/model/test_model.py::TestModel::test__update_topic_index[first_topic_1] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[stream_message-not_notified_since_self_message] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[stream_message-notified_stream_and_private_since_directly_mentioned] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[stream_message-notified_stream_and_private_since_wildcard_mentioned] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[stream_message-notified_stream_since_stream_has_desktop_notifications] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[stream_message-notified_private_since_private_message] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[pm_message-not_notified_since_self_message] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[pm_message-notified_stream_and_private_since_directly_mentioned] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[pm_message-notified_stream_and_private_since_wildcard_mentioned] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[pm_message-notified_stream_since_stream_has_desktop_notifications] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[pm_message-notified_private_since_private_message] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[group_pm_message-not_notified_since_self_message] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[group_pm_message-notified_stream_and_private_since_directly_mentioned] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[group_pm_message-notified_stream_and_private_since_wildcard_mentioned] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[group_pm_message-notified_stream_since_stream_has_desktop_notifications] tests/model/test_model.py::TestModel::test_notify_users_calling_msg_type[group_pm_message-notified_private_since_private_message] tests/model/test_model.py::TestModel::test_notify_user_transformed_content[stream_message-simple_text] tests/model/test_model.py::TestModel::test_notify_user_transformed_content[stream_message-spoiler_with_title] tests/model/test_model.py::TestModel::test_notify_user_transformed_content[stream_message-spoiler_no_title] tests/model/test_model.py::TestModel::test_notify_user_transformed_content[pm_message-simple_text] tests/model/test_model.py::TestModel::test_notify_user_transformed_content[pm_message-spoiler_with_title] tests/model/test_model.py::TestModel::test_notify_user_transformed_content[pm_message-spoiler_no_title] tests/model/test_model.py::TestModel::test_notify_user_transformed_content[group_pm_message-simple_text] tests/model/test_model.py::TestModel::test_notify_user_transformed_content[group_pm_message-spoiler_with_title] tests/model/test_model.py::TestModel::test_notify_user_transformed_content[group_pm_message-spoiler_no_title] tests/model/test_model.py::TestModel::test_notify_users_enabled[stream_message-True-True] tests/model/test_model.py::TestModel::test_notify_users_enabled[stream_message-False-False] tests/model/test_model.py::TestModel::test_notify_users_enabled[pm_message-True-True] tests/model/test_model.py::TestModel::test_notify_users_enabled[pm_message-False-False] tests/model/test_model.py::TestModel::test_notify_users_enabled[group_pm_message-True-True] tests/model/test_model.py::TestModel::test_notify_users_enabled[group_pm_message-False-False] tests/model/test_model.py::TestModel::test_notify_users_hides_PM_content_based_on_user_setting[pm_template-True-New tests/model/test_model.py::TestModel::test_notify_users_hides_PM_content_based_on_user_setting[pm_template-False-private tests/model/test_model.py::TestModel::test_notify_users_hides_PM_content_based_on_user_setting[group_pm_template-True-New tests/model/test_model.py::TestModel::test_notify_users_hides_PM_content_based_on_user_setting[group_pm_template-False-private tests/model/test_model.py::TestModel::test__handle_update_message_event[Only tests/model/test_model.py::TestModel::test__handle_update_message_event[Subject tests/model/test_model.py::TestModel::test__handle_update_message_event[Message tests/model/test_model.py::TestModel::test__handle_update_message_event[Both tests/model/test_model.py::TestModel::test__handle_update_message_event[Some tests/model/test_model.py::TestModel::test__handle_update_message_event[message_id tests/model/test_model.py::TestModel::test__update_rendered_view[msgbox_updated_in_topic_narrow] tests/model/test_model.py::TestModel::test__update_rendered_view[msgbox_removed_due_to_topic_narrow_mismatch] tests/model/test_model.py::TestModel::test__update_rendered_view[msgbox_updated_in_all_messages_narrow] tests/model/test_model.py::TestModel::test__update_rendered_view_change_narrow[same_topic_narrow] tests/model/test_model.py::TestModel::test__update_rendered_view_change_narrow[previous_topic_narrow_empty_so_change_narrow] tests/model/test_model.py::TestModel::test__update_rendered_view_change_narrow[same_all_messages_narrow] tests/model/test_model.py::TestModel::test__handle_reaction_event_not_in_index[add] tests/model/test_model.py::TestModel::test__handle_reaction_event_not_in_index[remove] tests/model/test_model.py::TestModel::test__handle_reaction_event_for_msg_in_index[add-2] tests/model/test_model.py::TestModel::test__handle_reaction_event_for_msg_in_index[remove-1] tests/model/test_model.py::TestModel::test_update_star_status_no_index[update_message_flags_operation0] tests/model/test_model.py::TestModel::test_update_star_status_no_index[update_message_flags_operation1] tests/model/test_model.py::TestModel::test_update_star_status_no_index[update_message_flags_operation2] tests/model/test_model.py::TestModel::test_update_star_status_invalid_operation[update_message_flags_operation0] tests/model/test_model.py::TestModel::test_update_star_status_invalid_operation[update_message_flags_operation1] tests/model/test_model.py::TestModel::test_update_star_status_invalid_operation[update_message_flags_operation2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before0-flags_after0-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before0-flags_after0-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before0-flags_after0-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before0-flags_after0-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before0-flags_after0-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before0-flags_after0-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before1-flags_after1-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before1-flags_after1-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before1-flags_after1-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before1-flags_after1-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before1-flags_after1-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before1-flags_after1-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before2-flags_after2-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before2-flags_after2-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before2-flags_after2-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before2-flags_after2-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before2-flags_after2-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before2-flags_after2-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before3-flags_after3-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before3-flags_after3-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before3-flags_after3-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before3-flags_after3-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before3-flags_after3-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-add-1-flags_before3-flags_after3-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before4-flags_after4-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before4-flags_after4-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before4-flags_after4-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before4-flags_after4-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before4-flags_after4-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before4-flags_after4-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before5-flags_after5-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before5-flags_after5-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before5-flags_after5-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before5-flags_after5-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before5-flags_after5-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before5-flags_after5-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before6-flags_after6-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before6-flags_after6-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before6-flags_after6-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before6-flags_after6-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before6-flags_after6-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before6-flags_after6-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before7-flags_after7-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before7-flags_after7-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before7-flags_after7-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before7-flags_after7-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before7-flags_after7-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before7-flags_after7-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before8-flags_after8-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before8-flags_after8-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before8-flags_after8-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before8-flags_after8-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before8-flags_after8-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation0-remove--1-flags_before8-flags_after8-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before0-flags_after0-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before0-flags_after0-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before0-flags_after0-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before0-flags_after0-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before0-flags_after0-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before0-flags_after0-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before1-flags_after1-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before1-flags_after1-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before1-flags_after1-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before1-flags_after1-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before1-flags_after1-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before1-flags_after1-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before2-flags_after2-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before2-flags_after2-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before2-flags_after2-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before2-flags_after2-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before2-flags_after2-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before2-flags_after2-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before3-flags_after3-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before3-flags_after3-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before3-flags_after3-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before3-flags_after3-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before3-flags_after3-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-add-1-flags_before3-flags_after3-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before4-flags_after4-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before4-flags_after4-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before4-flags_after4-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before4-flags_after4-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before4-flags_after4-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before4-flags_after4-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before5-flags_after5-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before5-flags_after5-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before5-flags_after5-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before5-flags_after5-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before5-flags_after5-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before5-flags_after5-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before6-flags_after6-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before6-flags_after6-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before6-flags_after6-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before6-flags_after6-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before6-flags_after6-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before6-flags_after6-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before7-flags_after7-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before7-flags_after7-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before7-flags_after7-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before7-flags_after7-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before7-flags_after7-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before7-flags_after7-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before8-flags_after8-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before8-flags_after8-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before8-flags_after8-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before8-flags_after8-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before8-flags_after8-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation1-remove--1-flags_before8-flags_after8-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before0-flags_after0-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before0-flags_after0-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before0-flags_after0-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before0-flags_after0-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before0-flags_after0-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before0-flags_after0-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before1-flags_after1-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before1-flags_after1-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before1-flags_after1-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before1-flags_after1-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before1-flags_after1-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before1-flags_after1-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before2-flags_after2-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before2-flags_after2-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before2-flags_after2-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before2-flags_after2-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before2-flags_after2-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before2-flags_after2-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before3-flags_after3-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before3-flags_after3-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before3-flags_after3-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before3-flags_after3-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before3-flags_after3-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-add-1-flags_before3-flags_after3-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before4-flags_after4-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before4-flags_after4-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before4-flags_after4-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before4-flags_after4-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before4-flags_after4-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before4-flags_after4-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before5-flags_after5-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before5-flags_after5-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before5-flags_after5-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before5-flags_after5-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before5-flags_after5-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before5-flags_after5-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before6-flags_after6-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before6-flags_after6-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before6-flags_after6-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before6-flags_after6-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before6-flags_after6-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before6-flags_after6-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before7-flags_after7-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before7-flags_after7-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before7-flags_after7-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before7-flags_after7-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before7-flags_after7-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before7-flags_after7-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before8-flags_after8-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before8-flags_after8-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before8-flags_after8-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before8-flags_after8-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before8-flags_after8-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_star_status[update_message_flags_operation2-remove--1-flags_before8-flags_after8-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before0-flags_after0-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before0-flags_after0-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before0-flags_after0-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before0-flags_after0-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before0-flags_after0-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before0-flags_after0-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before1-flags_after1-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before1-flags_after1-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before1-flags_after1-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before1-flags_after1-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before1-flags_after1-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before1-flags_after1-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before2-flags_after2-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before2-flags_after2-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before2-flags_after2-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before2-flags_after2-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before2-flags_after2-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before2-flags_after2-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before3-flags_after3-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before3-flags_after3-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before3-flags_after3-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before3-flags_after3-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before3-flags_after3-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-add-flags_before3-flags_after3-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before4-flags_after4-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before4-flags_after4-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before4-flags_after4-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before4-flags_after4-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before4-flags_after4-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before4-flags_after4-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before5-flags_after5-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before5-flags_after5-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before5-flags_after5-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before5-flags_after5-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before5-flags_after5-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before5-flags_after5-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before6-flags_after6-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before6-flags_after6-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before6-flags_after6-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before6-flags_after6-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before6-flags_after6-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before6-flags_after6-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before7-flags_after7-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before7-flags_after7-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before7-flags_after7-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before7-flags_after7-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before7-flags_after7-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before7-flags_after7-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before8-flags_after8-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before8-flags_after8-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before8-flags_after8-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before8-flags_after8-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before8-flags_after8-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation0-remove-flags_before8-flags_after8-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before0-flags_after0-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before0-flags_after0-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before0-flags_after0-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before0-flags_after0-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before0-flags_after0-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before0-flags_after0-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before1-flags_after1-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before1-flags_after1-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before1-flags_after1-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before1-flags_after1-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before1-flags_after1-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before1-flags_after1-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before2-flags_after2-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before2-flags_after2-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before2-flags_after2-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before2-flags_after2-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before2-flags_after2-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before2-flags_after2-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before3-flags_after3-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before3-flags_after3-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before3-flags_after3-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before3-flags_after3-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before3-flags_after3-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-add-flags_before3-flags_after3-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before4-flags_after4-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before4-flags_after4-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before4-flags_after4-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before4-flags_after4-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before4-flags_after4-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before4-flags_after4-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before5-flags_after5-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before5-flags_after5-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before5-flags_after5-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before5-flags_after5-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before5-flags_after5-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before5-flags_after5-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before6-flags_after6-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before6-flags_after6-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before6-flags_after6-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before6-flags_after6-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before6-flags_after6-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before6-flags_after6-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before7-flags_after7-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before7-flags_after7-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before7-flags_after7-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before7-flags_after7-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before7-flags_after7-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before7-flags_after7-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before8-flags_after8-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before8-flags_after8-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before8-flags_after8-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before8-flags_after8-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before8-flags_after8-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation1-remove-flags_before8-flags_after8-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before0-flags_after0-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before0-flags_after0-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before0-flags_after0-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before0-flags_after0-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before0-flags_after0-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before0-flags_after0-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before1-flags_after1-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before1-flags_after1-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before1-flags_after1-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before1-flags_after1-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before1-flags_after1-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before1-flags_after1-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before2-flags_after2-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before2-flags_after2-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before2-flags_after2-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before2-flags_after2-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before2-flags_after2-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before2-flags_after2-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before3-flags_after3-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before3-flags_after3-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before3-flags_after3-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before3-flags_after3-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before3-flags_after3-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-add-flags_before3-flags_after3-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before4-flags_after4-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before4-flags_after4-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before4-flags_after4-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before4-flags_after4-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before4-flags_after4-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before4-flags_after4-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before5-flags_after5-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before5-flags_after5-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before5-flags_after5-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before5-flags_after5-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before5-flags_after5-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before5-flags_after5-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before6-flags_after6-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before6-flags_after6-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before6-flags_after6-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before6-flags_after6-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before6-flags_after6-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before6-flags_after6-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before7-flags_after7-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before7-flags_after7-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before7-flags_after7-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before7-flags_after7-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before7-flags_after7-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before7-flags_after7-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before8-flags_after8-event_message_ids0-indexed_ids0] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before8-flags_after8-event_message_ids1-indexed_ids1] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before8-flags_after8-event_message_ids2-indexed_ids2] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before8-flags_after8-event_message_ids3-indexed_ids3] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before8-flags_after8-event_message_ids4-indexed_ids4] tests/model/test_model.py::TestModel::test_update_read_status[update_message_flags_operation2-remove-flags_before8-flags_after8-event_message_ids5-indexed_ids5] tests/model/test_model.py::TestModel::test_toggle_stream_pinned_status[pinning] tests/model/test_model.py::TestModel::test_toggle_stream_pinned_status[unpinning] tests/model/test_model.py::TestModel::test_toggle_stream_pinned_status[first_pinned] tests/model/test_model.py::TestModel::test_toggle_stream_pinned_status[last_unpinned] tests/model/test_model.py::TestModel::test_toggle_stream_visual_notifications[visual_notification_enable_205] tests/model/test_model.py::TestModel::test_toggle_stream_visual_notifications[visual_notification_disable_205] tests/model/test_model.py::TestModel::test_toggle_stream_visual_notifications[first_notification_enable_205] tests/model/test_model.py::TestModel::test_toggle_stream_visual_notifications[last_notification_disable_205] tests/model/test_model.py::TestModel::test__handle_typing_event[not_in_pm_narrow] tests/model/test_model.py::TestModel::test__handle_typing_event[not_in_pm_narrow_with_sender] tests/model/test_model.py::TestModel::test__handle_typing_event[in_pm_narrow_with_sender_typing:start] tests/model/test_model.py::TestModel::test__handle_typing_event[in_pm_narrow_with_sender_typing:start_while_animation_in_progress] tests/model/test_model.py::TestModel::test__handle_typing_event[in_pm_narrow_with_sender_typing:stop] tests/model/test_model.py::TestModel::test__handle_typing_event[in_pm_narrow_with_other_myself_typing:start] tests/model/test_model.py::TestModel::test__handle_typing_event[in_pm_narrow_with_other_myself_typing:stop] tests/model/test_model.py::TestModel::test__handle_typing_event[in_pm_narrow_with_oneself:start] tests/model/test_model.py::TestModel::test__handle_typing_event[in_pm_narrow_with_oneself:stop] tests/model/test_model.py::TestModel::test__handle_subscription_event_mute_streams[remove_18_in_home_view:already_unmuted:ZFLNone] tests/model/test_model.py::TestModel::test__handle_subscription_event_mute_streams[remove_19_in_home_view:muted:ZFLNone] tests/model/test_model.py::TestModel::test__handle_subscription_event_mute_streams[add_19_in_home_view:already_muted:ZFLNone] tests/model/test_model.py::TestModel::test__handle_subscription_event_mute_streams[add_30_in_home_view:unmuted:ZFLNone] tests/model/test_model.py::TestModel::test__handle_subscription_event_mute_streams[remove_30_is_muted:already_unmutedZFL139] tests/model/test_model.py::TestModel::test__handle_subscription_event_mute_streams[remove_19_is_muted:muted:ZFL139] tests/model/test_model.py::TestModel::test__handle_subscription_event_mute_streams[add_15_is_muted:already_muted:ZFL139] tests/model/test_model.py::TestModel::test__handle_subscription_event_mute_streams[add_30_is_muted:unmuted:ZFL139] tests/model/test_model.py::TestModel::test__handle_subscription_event_pin_streams[pin_stream] tests/model/test_model.py::TestModel::test__handle_subscription_event_pin_streams[unpin_stream] tests/model/test_model.py::TestModel::test__handle_subscription_event_visual_notifications[remove_visual_notified_stream_15:present] tests/model/test_model.py::TestModel::test__handle_subscription_event_visual_notifications[add_visual_notified_stream_19:not_present] tests/model/test_model.py::TestModel::test__handle_subscription_event_visual_notifications[remove_visual_notified_stream_15:not_present] tests/model/test_model.py::TestModel::test__handle_subscription_event_visual_notifications[add_visual_notified_stream_19:present] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers[user_subscribed_to_stream:ZFLNone] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers[user_subscribed_to_stream:ZFL34] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers[user_subscribed_to_stream:ZFL34_should_be_35] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers[user_subscribed_to_stream:ZFL35] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers[user_unsubscribed_from_stream:ZFLNone] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers[user_unsubscribed_from_stream:ZFL34] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers[user_unsubscribed_from_stream:ZFL34_should_be_35] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers[user_unsubscribed_from_stream:ZFL35] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers_to_unsubscribed_streams[peer_subscribed_to_stream_that_user_is_unsubscribed_to] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers_to_unsubscribed_streams[peer_subscribed_to_stream_that_user_is_unsubscribed_to:ZFL35+] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers_to_unsubscribed_streams[peer_unsubscribed_from_stream_that_user_is_unsubscribed_to] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers_to_unsubscribed_streams[peer_unsubscribed_from_stream_that_user_is_unsubscribed_to:ZFL35+] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers_multiple_users_one_stream[users_subscribed_to_stream:ZFL34_should_be_35] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers_multiple_users_one_stream[users_subscribed_to_stream:ZFL35] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers_multiple_users_one_stream[users_unsubscribed_from_stream:ZFL34_should_be_35] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers_multiple_users_one_stream[users_unsubscribed_from_stream:ZFL35] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers_one_user_multiple_streams[user_subscribed_to_streams:ZFL34_should_be_35] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers_one_user_multiple_streams[user_subscribed_to_streams:ZFL35] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers_one_user_multiple_streams[user_unsubscribed_from_streams:ZFL34_should_be_35] tests/model/test_model.py::TestModel::test__handle_subscription_event_subscribers_one_user_multiple_streams[user_unsubscribed_from_streams:ZFL35] tests/model/test_model.py::TestModel::test__handle_realm_user_event__general[full_name] tests/model/test_model.py::TestModel::test__handle_realm_user_event__general[timezone] tests/model/test_model.py::TestModel::test__handle_realm_user_event__general[billing_admin_role] tests/model/test_model.py::TestModel::test__handle_realm_user_event__general[role] tests/model/test_model.py::TestModel::test__handle_realm_user_event__general[avatar] tests/model/test_model.py::TestModel::test__handle_realm_user_event__general[display_email] tests/model/test_model.py::TestModel::test__handle_realm_user_event__general[delivery_email] tests/model/test_model.py::TestModel::test__handle_realm_user_event__custom_profile_data__update_data[Short tests/model/test_model.py::TestModel::test__handle_realm_user_event__custom_profile_data__update_data[Long tests/model/test_model.py::TestModel::test__handle_realm_user_event__custom_profile_data__update_data[List tests/model/test_model.py::TestModel::test__handle_realm_user_event__custom_profile_data__update_data[Date tests/model/test_model.py::TestModel::test__handle_realm_user_event__custom_profile_data__update_data[Link-no_custom] tests/model/test_model.py::TestModel::test__handle_realm_user_event__custom_profile_data__update_data[Link-many_custom] tests/model/test_model.py::TestModel::test__handle_realm_user_event__custom_profile_data__update_data[Person tests/model/test_model.py::TestModel::test__handle_realm_user_event__custom_profile_data__update_data[External tests/model/test_model.py::TestModel::test__handle_realm_user_event__custom_profile_data__update_data[Pronouns-no_custom] tests/model/test_model.py::TestModel::test__handle_realm_user_event__custom_profile_data__update_data[Pronouns-many_custom] tests/model/test_model.py::TestModel::test__handle_realm_user_event__custom_profile_data__remove_data[update_data0-8-no_custom] tests/model/test_model.py::TestModel::test__handle_realm_user_event__custom_profile_data__remove_data[update_data0-8-many_custom] tests/model/test_model.py::TestModel::test__handle_user_settings_event[True] tests/model/test_model.py::TestModel::test__handle_user_settings_event[False] tests/model/test_model.py::TestModel::test_update_pm_content_in_desktop_notifications[True] tests/model/test_model.py::TestModel::test_update_pm_content_in_desktop_notifications[False] tests/model/test_model.py::TestModel::test_update_twenty_four_hour_format[True] tests/model/test_model.py::TestModel::test_update_twenty_four_hour_format[False] tests/model/test_model.py::TestModel::test_is_muted_stream[muted_stream] tests/model/test_model.py::TestModel::test_is_muted_stream[unmuted_stream] tests/model/test_model.py::TestModel::test_is_muted_stream[unmuted_stream_nostreamsmuted] tests/model/test_model.py::TestModel::test_is_visual_notifications_enabled[notifications_enabled] tests/model/test_model.py::TestModel::test_is_visual_notifications_enabled[notifications_disabled] tests/model/test_model.py::TestModel::test_is_visual_notifications_enabled[notifications_disabled_no_streams_to_notify] tests/model/test_model.py::TestModel::test_is_muted_topic[zulip_feature_level:None-topic0-False] tests/model/test_model.py::TestModel::test_is_muted_topic[zulip_feature_level:None-topic1-True] tests/model/test_model.py::TestModel::test_is_muted_topic[zulip_feature_level:None-topic2-True] tests/model/test_model.py::TestModel::test_is_muted_topic[zulip_feature_level:None-topic3-False] tests/model/test_model.py::TestModel::test_is_muted_topic[zulip_feature_level:1-topic0-False] tests/model/test_model.py::TestModel::test_is_muted_topic[zulip_feature_level:1-topic1-True] tests/model/test_model.py::TestModel::test_is_muted_topic[zulip_feature_level:1-topic2-True] tests/model/test_model.py::TestModel::test_is_muted_topic[zulip_feature_level:1-topic3-False] tests/model/test_model.py::TestModel::test_get_next_unread_pm tests/model/test_model.py::TestModel::test_get_next_unread_pm_again tests/model/test_model.py::TestModel::test_get_next_unread_pm_no_unread tests/model/test_model.py::TestModel::test_is_user_subscribed_to_stream[subscribed_stream] tests/model/test_model.py::TestModel::test_is_user_subscribed_to_stream[unsubscribed_stream] tests/model/test_model.py::TestModel::test_fetch_message_history_success[unedited_message-response0] tests/model/test_model.py::TestModel::test_fetch_message_history_success[edited_message-response0] tests/model/test_model.py::TestModel::test_fetch_message_history_error[response0] tests/model/test_model.py::TestModel::test_user_name_from_id_valid[1001-Human tests/model/test_model.py::TestModel::test_user_name_from_id_invalid[-1] tests/model/test_model.py::TestModel::test_generate_all_emoji_data tests/model/test_model.py::TestModel::test__handle_update_emoji_event[realm_emoji_with_same_name_as_unicode_emoji_added] tests/model/test_model.py::TestModel::test__handle_update_emoji_event[realm_emoji_with_same_name_as_unicode_emoji_removed] tests/model/test_model.py::TestModel::test__handle_update_emoji_event[realm_emoji_with_name_as_zulip_added] tests/model/test_model.py::TestModel::test__handle_update_emoji_event[realm_emoji_with_name_as_zulip_removed] tests/model/test_model.py::TestModel::test__handle_update_emoji_event[realm_emoji_added] tests/model/test_model.py::TestModel::test__handle_update_emoji_event[realm_emoji_removed] tests/model/test_model.py::TestModel::test_poll_for_events__no_disconnect tests/model/test_model.py::TestModel::test_poll_for_events__reconnect_ok[reconnect_on_1st_attempt] tests/model/test_model.py::TestModel::test_poll_for_events__reconnect_ok[reconnect_on_2nd_attempt] tests/model/test_model.py::TestModel::test_poll_for_events__reconnect_ok[reconnect_on_3rd_attempt] tests/ui/test_ui_tools.py::TestModListWalker::test_extend[5-0] tests/ui/test_ui_tools.py::TestModListWalker::test_extend[0-0] tests/ui/test_ui_tools.py::TestModListWalker::test__set_focus tests/ui/test_ui_tools.py::TestModListWalker::test_set_focus tests/ui/test_ui_tools.py::TestMessageView::test_init tests/ui/test_ui_tools.py::TestMessageView::test_main_view[None-1] tests/ui/test_ui_tools.py::TestMessageView::test_main_view[0-0] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_empty_log[ids_in_narrow0-messages_fetched0] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_empty_log[ids_in_narrow0-messages_fetched1] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_empty_log[ids_in_narrow0-messages_fetched2] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_empty_log[ids_in_narrow1-messages_fetched0] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_empty_log[ids_in_narrow1-messages_fetched1] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_empty_log[ids_in_narrow1-messages_fetched2] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_mocked_log[99-other_ids_in_narrow0-messages_fetched0] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_mocked_log[99-other_ids_in_narrow0-messages_fetched1] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_mocked_log[99-other_ids_in_narrow0-messages_fetched2] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_mocked_log[99-other_ids_in_narrow1-messages_fetched0] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_mocked_log[99-other_ids_in_narrow1-messages_fetched1] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_mocked_log[99-other_ids_in_narrow1-messages_fetched2] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_mocked_log[99-other_ids_in_narrow2-messages_fetched0] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_mocked_log[99-other_ids_in_narrow2-messages_fetched1] tests/ui/test_ui_tools.py::TestMessageView::test_load_old_messages_mocked_log[99-other_ids_in_narrow2-messages_fetched2] tests/ui/test_ui_tools.py::TestMessageView::test_load_new_messages_empty_log[ids_in_narrow0] tests/ui/test_ui_tools.py::TestMessageView::test_load_new_messages_mocked_log[ids_in_narrow0] tests/ui/test_ui_tools.py::TestMessageView::test_mouse_event[mouse_scroll_up] tests/ui/test_ui_tools.py::TestMessageView::test_mouse_event[mouse_scroll_down] tests/ui/test_ui_tools.py::TestMessageView::test_keypress_GO_DOWN[down] tests/ui/test_ui_tools.py::TestMessageView::test_keypress_GO_DOWN[j] tests/ui/test_ui_tools.py::TestMessageView::test_keypress_GO_DOWN_exception[down-True] tests/ui/test_ui_tools.py::TestMessageView::test_keypress_GO_DOWN_exception[down-False] tests/ui/test_ui_tools.py::TestMessageView::test_keypress_GO_DOWN_exception[j-True] tests/ui/test_ui_tools.py::TestMessageView::test_keypress_GO_DOWN_exception[j-False] tests/ui/test_ui_tools.py::TestMessageView::test_keypress_GO_UP[up] tests/ui/test_ui_tools.py::TestMessageView::test_keypress_GO_UP[k] tests/ui/test_ui_tools.py::TestMessageView::test_keypress_GO_UP_exception[up-True] tests/ui/test_ui_tools.py::TestMessageView::test_keypress_GO_UP_exception[up-False] tests/ui/test_ui_tools.py::TestMessageView::test_keypress_GO_UP_exception[k-True] tests/ui/test_ui_tools.py::TestMessageView::test_keypress_GO_UP_exception[k-False] tests/ui/test_ui_tools.py::TestMessageView::test_read_message tests/ui/test_ui_tools.py::TestMessageView::test_message_calls_search_and_header_bar tests/ui/test_ui_tools.py::TestMessageView::test_read_message_no_msgw tests/ui/test_ui_tools.py::TestMessageView::test_read_message_in_explore_mode tests/ui/test_ui_tools.py::TestMessageView::test_read_message_search_narrow tests/ui/test_ui_tools.py::TestMessageView::test_read_message_last_unread_message_focused[stream_message] tests/ui/test_ui_tools.py::TestMessageView::test_read_message_last_unread_message_focused[pm_message] tests/ui/test_ui_tools.py::TestMessageView::test_read_message_last_unread_message_focused[group_pm_message] tests/ui/test_ui_tools.py::TestStreamsViewDivider::test_init tests/ui/test_ui_tools.py::TestStreamsView::test_init tests/ui/test_ui_tools.py::TestStreamsView::test_update_streams[f-expected_log0-to_pin0] tests/ui/test_ui_tools.py::TestStreamsView::test_update_streams[bar-expected_log1-to_pin1] tests/ui/test_ui_tools.py::TestStreamsView::test_update_streams[foo-expected_log2-to_pin2] tests/ui/test_ui_tools.py::TestStreamsView::test_update_streams[FOO-expected_log3-to_pin3] tests/ui/test_ui_tools.py::TestStreamsView::test_update_streams[test-expected_log4-to_pin4] tests/ui/test_ui_tools.py::TestStreamsView::test_update_streams[here-expected_log5-to_pin5] tests/ui/test_ui_tools.py::TestStreamsView::test_update_streams[test tests/ui/test_ui_tools.py::TestStreamsView::test_update_streams[f-expected_log7-to_pin7] tests/ui/test_ui_tools.py::TestStreamsView::test_update_streams[FOO-expected_log8-to_pin8] tests/ui/test_ui_tools.py::TestStreamsView::test_update_streams[bar-expected_log9-to_pin9] tests/ui/test_ui_tools.py::TestStreamsView::test_update_streams[baar-search tests/ui/test_ui_tools.py::TestStreamsView::test_mouse_event[mouse_scroll_up] tests/ui/test_ui_tools.py::TestStreamsView::test_mouse_event[mouse_scroll_down] tests/ui/test_ui_tools.py::TestStreamsView::test_keypress_SEARCH_STREAMS[q] tests/ui/test_ui_tools.py::TestStreamsView::test_keypress_GO_BACK[esc] tests/ui/test_ui_tools.py::TestTopicsView::test_init tests/ui/test_ui_tools.py::TestTopicsView::test_update_topics[f-expected_log0] tests/ui/test_ui_tools.py::TestTopicsView::test_update_topics[a-expected_log1] tests/ui/test_ui_tools.py::TestTopicsView::test_update_topics[bar-expected_log2] tests/ui/test_ui_tools.py::TestTopicsView::test_update_topics[foo-expected_log3] tests/ui/test_ui_tools.py::TestTopicsView::test_update_topics[FOO-expected_log4] tests/ui/test_ui_tools.py::TestTopicsView::test_update_topics[(no-expected_log5] tests/ui/test_ui_tools.py::TestTopicsView::test_update_topics[topic-expected_log6] tests/ui/test_ui_tools.py::TestTopicsView::test_update_topics[cc-search tests/ui/test_ui_tools.py::TestTopicsView::test_update_topics_list[reorder_topic3] tests/ui/test_ui_tools.py::TestTopicsView::test_update_topics_list[topic1_discussion_continues] tests/ui/test_ui_tools.py::TestTopicsView::test_update_topics_list[new_topic4] tests/ui/test_ui_tools.py::TestTopicsView::test_update_topics_list[first_topic_1] tests/ui/test_ui_tools.py::TestTopicsView::test_keypress_SEARCH_TOPICS[q] tests/ui/test_ui_tools.py::TestTopicsView::test_keypress_GO_BACK[esc] tests/ui/test_ui_tools.py::TestTopicsView::test_mouse_event[mouse_scroll_up] tests/ui/test_ui_tools.py::TestTopicsView::test_mouse_event[mouse_scroll_down] tests/ui/test_ui_tools.py::TestUsersView::test_mouse_event[mouse_scroll_up] tests/ui/test_ui_tools.py::TestUsersView::test_mouse_event[mouse_scroll_down] tests/ui/test_ui_tools.py::TestUsersView::test_mouse_event_left_click[ignore_mouse_click] tests/ui/test_ui_tools.py::TestUsersView::test_mouse_event_left_click[handle_mouse_click] tests/ui/test_ui_tools.py::TestUsersView::test_mouse_event_invalid[unsupported_mouse_release_action] tests/ui/test_ui_tools.py::TestUsersView::test_mouse_event_invalid[unsupported_right_click_mouse_press_action] tests/ui/test_ui_tools.py::TestUsersView::test_mouse_event_invalid[invalid_event_button_combination] tests/ui/test_ui_tools.py::TestMiddleColumnView::test_init tests/ui/test_ui_tools.py::TestMiddleColumnView::test_keypress_focus_header[/] tests/ui/test_ui_tools.py::TestMiddleColumnView::test_keypress_SEARCH_MESSAGES[/] tests/ui/test_ui_tools.py::TestMiddleColumnView::test_keypress_REPLY_MESSAGE[r] tests/ui/test_ui_tools.py::TestMiddleColumnView::test_keypress_REPLY_MESSAGE[enter] tests/ui/test_ui_tools.py::TestMiddleColumnView::test_keypress_STREAM_MESSAGE[c] tests/ui/test_ui_tools.py::TestMiddleColumnView::test_keypress_REPLY_AUTHOR[R] tests/ui/test_ui_tools.py::TestMiddleColumnView::test_keypress_NEXT_UNREAD_PM_stream[p] tests/ui/test_ui_tools.py::TestMiddleColumnView::test_keypress_NEXT_UNREAD_PM_no_pm[p] tests/ui/test_ui_tools.py::TestMiddleColumnView::test_keypress_PRIVATE_MESSAGE[x] tests/ui/test_ui_tools.py::TestRightColumnView::test_init tests/ui/test_ui_tools.py::TestRightColumnView::test_update_user_list_editor_mode tests/ui/test_ui_tools.py::TestRightColumnView::test_update_user_list[user tests/ui/test_ui_tools.py::TestRightColumnView::test_update_user_list[no tests/ui/test_ui_tools.py::TestRightColumnView::test_update_user_presence tests/ui/test_ui_tools.py::TestRightColumnView::test_users_view[None-1-False-active] tests/ui/test_ui_tools.py::TestRightColumnView::test_users_view[users1-1-True-active] tests/ui/test_ui_tools.py::TestRightColumnView::test_users_view[None-0-False-inactive] tests/ui/test_ui_tools.py::TestRightColumnView::test_keypress_SEARCH_PEOPLE[w] tests/ui/test_ui_tools.py::TestRightColumnView::test_keypress_GO_BACK[esc] tests/ui/test_ui_tools.py::TestLeftColumnView::test_menu_view tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned0] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned1] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned2] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned3] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned4] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned5] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned6] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned7] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned8] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned9] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned10] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned11] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned12] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned13] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned14] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned15] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned16] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned17] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned18] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned19] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned20] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned21] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned22] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned23] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned24] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned25] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned26] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned27] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned28] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned29] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned30] tests/ui/test_ui_tools.py::TestLeftColumnView::test_streams_view[pinned31] tests/ui/test_ui_tools.py::TestLeftColumnView::test_topics_view tests/ui/test_ui_tools.py::TestTabView::test_tab_render[3-10-expected_output0]