Skip to content

Commit 13f3eb0

Browse files
author
Subhasish-Behera
committed
model/api_types: Update after alert_words event.Test adapted/added.
Tests are added for _handle_alert_words_event.
1 parent b2a5683 commit 13f3eb0

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

tests/model/test_model.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ def test_register_initial_desired_events(self, mocker, initial_data):
227227
model = Model(self.controller)
228228

229229
event_types = [
230+
"alert_words",
230231
"message",
231232
"update_message",
232233
"reaction",
@@ -2623,6 +2624,49 @@ def test__handle_reaction_event_for_msg_in_index(
26232624
def update_message_flags_operation(self, request):
26242625
return request.param
26252626

2627+
@pytest.mark.parametrize(
2628+
"event,initial_alerted_words, expected_alert_words",
2629+
[
2630+
case(
2631+
{"type": "alert_words", "alert_words": ["word1", "word2", "word3"]},
2632+
["word1"],
2633+
["word1", "word2", "word3"],
2634+
id="Add multiple alert words",
2635+
),
2636+
case(
2637+
{"type": "alert_words", "alert_words": []},
2638+
["word1"],
2639+
[],
2640+
id="Empty alert words",
2641+
),
2642+
case(
2643+
{"type": "alert_words", "alert_words": ["word1", "word4"]},
2644+
["word1"],
2645+
["word1", "word4"],
2646+
id="Add single new alert words",
2647+
),
2648+
case(
2649+
{"type": "alert_words", "alert_words": ["word1", "word2"]},
2650+
["word1", "word2", "word3"],
2651+
["word1", "word2"],
2652+
id="Delete an alert word",
2653+
),
2654+
case(
2655+
{"type": "alert_words", "alert_words": ["word1", "word3"]},
2656+
["word1", "word2"],
2657+
["word1", "word3"],
2658+
id="Add and delete alert words",
2659+
),
2660+
],
2661+
)
2662+
def test__handle_alert_words_event(
2663+
self, mocker, model, event, initial_alerted_words, expected_alert_words
2664+
):
2665+
model._handle_alert_words_event(event)
2666+
2667+
assert model._alert_words != initial_alerted_words
2668+
assert model._alert_words == expected_alert_words
2669+
26262670
def test_update_star_status_no_index(
26272671
self, mocker, model, update_message_flags_operation
26282672
):

zulipterminal/api_types.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,11 @@ class UpdateGlobalNotificationsEvent(TypedDict):
344344
setting: Any
345345

346346

347+
class AlertWordEvent(TypedDict):
348+
type: Literal["alert_words"]
349+
alert_words: List[str]
350+
351+
347352
Event = Union[
348353
MessageEvent,
349354
UpdateMessageEvent,
@@ -356,6 +361,7 @@ class UpdateGlobalNotificationsEvent(TypedDict):
356361
UpdateUserSettingsEvent,
357362
UpdateGlobalNotificationsEvent,
358363
RealmUserEvent,
364+
AlertWordEvent,
359365
]
360366

361367
###############################################################################

zulipterminal/model.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ def __init__(self, controller: Any) -> None:
143143

144144
# Events desired with their corresponding callback
145145
self.event_actions: Dict[str, Callable[[Event], None]] = {
146+
"alert_words": self._handle_alert_words_event,
146147
"message": self._handle_message_event,
147148
"update_message": self._handle_update_message_event,
148149
"reaction": self._handle_reaction_event,
@@ -1369,6 +1370,13 @@ def get_stream_by_id(streams: List[StreamData], stream_id: int) -> StreamData:
13691370
for user_id in user_ids:
13701371
subscribers.remove(user_id)
13711372

1373+
def _handle_alert_words_event(self, event: Event) -> None:
1374+
"""
1375+
Handle alert_words events
1376+
"""
1377+
assert event["type"] == "alert_words"
1378+
self._alert_words = event["alert_words"]
1379+
13721380
def _handle_typing_event(self, event: Event) -> None:
13731381
"""
13741382
Handle typing notifications (in private messages)

0 commit comments

Comments
 (0)