Skip to content

Commit 9a34ecd

Browse files
committed
refactor: boxes/buttons/helper/model/ui: Hook semantic style helpers.
Tests amended. Fixes #782.
1 parent 943ae89 commit 9a34ecd

File tree

9 files changed

+34
-36
lines changed

9 files changed

+34
-36
lines changed

tests/helper/test_helper.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -343,14 +343,14 @@ def test_notify_quotes(monkeypatch, mocker, OS, cmd_length, title, text):
343343
)
344344
def test_display_error_if_present(mocker, response, footer_updated):
345345
controller = mocker.Mock()
346-
set_footer_text = controller.view.set_footer_text
346+
report_error = controller.report_error
347347

348348
display_error_if_present(response, controller)
349349

350350
if footer_updated:
351-
set_footer_text.assert_called_once_with(response["msg"], 3)
351+
report_error.assert_called_once_with(response["msg"])
352352
else:
353-
set_footer_text.assert_not_called()
353+
report_error.assert_not_called()
354354

355355

356356
@pytest.mark.parametrize(
@@ -424,17 +424,17 @@ def test_display_error_if_present(mocker, response, footer_updated):
424424
)
425425
def test_notify_if_message_sent_outside_narrow(mocker, req, narrow, footer_updated):
426426
controller = mocker.Mock()
427-
set_footer_text = controller.view.set_footer_text
427+
report_success = controller.report_success
428428
controller.model.narrow = narrow
429429

430430
notify_if_message_sent_outside_narrow(req, controller)
431431

432432
if footer_updated:
433-
set_footer_text.assert_called_once_with(
434-
"Message is sent outside of current narrow.", 3
433+
report_success.assert_called_once_with(
434+
"Message is sent outside of current narrow."
435435
)
436436
else:
437-
set_footer_text.assert_not_called()
437+
report_success.assert_not_called()
438438

439439

440440
@pytest.mark.parametrize(

tests/model/test_model.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -667,11 +667,11 @@ def test_update_stream_message(
667667
self.client.update_message.assert_called_once_with(req)
668668
assert result == return_value
669669
self.display_error_if_present.assert_called_once_with(response, self.controller)
670-
set_footer_text = model.controller.view.set_footer_text
670+
report_success = model.controller.report_success
671671
if result and footer_updated:
672-
set_footer_text.assert_called_once_with("You changed a message's topic.", 3)
672+
report_success.assert_called_once_with("You changed a message's topic.")
673673
else:
674-
set_footer_text.assert_not_called()
674+
report_success.assert_not_called()
675675

676676
# NOTE: This tests only getting next-unread, not a fixed anchor
677677
def test_success_get_messages(

tests/ui/test_ui.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ def test_keypress_autohide_streams(self, view, mocker, autohide, key, widget_siz
356356
def test_keypress_OPEN_DRAFT(self, view, mocker, draft, key, widget_size):
357357
view.body = mocker.Mock()
358358
view.middle_column = mocker.Mock()
359-
view.set_footer_text = mocker.Mock()
359+
view.controller.report_error = mocker.Mock()
360360
view.controller.is_in_editor_mode = lambda: False
361361
view.model.stream_id_from_name.return_value = 10
362362
view.model.session_draft_message.return_value = draft
@@ -383,8 +383,8 @@ def test_keypress_OPEN_DRAFT(self, view, mocker, draft, key, widget_size):
383383
assert view.write_box.msg_write_box.edit_pos == len(draft["content"])
384384
view.middle_column.set_focus.assert_called_once_with("footer")
385385
else:
386-
view.set_footer_text.assert_called_once_with(
387-
"No draft message was saved in this session.", 3
386+
view.controller.report_error.assert_called_once_with(
387+
"No draft message was saved in this session."
388388
)
389389

390390
@pytest.mark.parametrize("key", keys_for_command("SEARCH_PEOPLE"))

tests/ui_tools/test_buttons.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,7 @@ def test__switch_narrow_to(
853853
assert mocked_button.controller.narrow_to_topic.called == narrow_to_topic_called
854854

855855
@pytest.mark.parametrize(
856-
"error, set_footer_text_called, _switch_narrow_to_called, exit_popup_called",
856+
"error, report_error_called, _switch_narrow_to_called, exit_popup_called",
857857
[
858858
("Some Validation Error", True, False, False),
859859
("", False, True, True),
@@ -867,7 +867,7 @@ def test_handle_narrow_link(
867867
self,
868868
mocker,
869869
error,
870-
set_footer_text_called,
870+
report_error_called,
871871
_switch_narrow_to_called,
872872
exit_popup_called,
873873
):
@@ -883,6 +883,6 @@ def test_handle_narrow_link(
883883

884884
assert mocked_button._parse_narrow_link.called
885885
assert mocked_button._validate_narrow_link.called
886-
assert mocked_button.view.set_footer_text.called == set_footer_text_called
886+
assert mocked_button.controller.report_error.called == report_error_called
887887
assert mocked_button._switch_narrow_to.called == _switch_narrow_to_called
888888
assert mocked_button.controller.exit_popup.called == exit_popup_called

zulipterminal/helper.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ def notify(title: str, html_text: str) -> str:
661661

662662
def display_error_if_present(response: Dict[str, Any], controller: Any) -> None:
663663
if response["result"] == "error" and hasattr(controller, "view"):
664-
controller.view.set_footer_text(response["msg"], 3)
664+
controller.report_error(response["msg"])
665665

666666

667667
def check_narrow_and_notify(
@@ -674,7 +674,7 @@ def check_narrow_and_notify(
674674
and current_narrow != outer_narrow
675675
and current_narrow != inner_narrow
676676
):
677-
controller.view.set_footer_text("Message is sent outside of current narrow.", 3)
677+
controller.report_success("Message is sent outside of current narrow.")
678678

679679

680680
def notify_if_message_sent_outside_narrow(

zulipterminal/model.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ def session_draft_message(self) -> Optional[Composition]:
376376

377377
def save_draft(self, draft: Composition) -> None:
378378
self._draft = deepcopy(draft)
379-
self.controller.view.set_footer_text("Saved message as draft", 3)
379+
self.controller.report_success("Saved message as draft")
380380

381381
@asynch
382382
def toggle_message_star_status(self, message: Message) -> None:
@@ -471,9 +471,8 @@ def update_stream_message(
471471
if response["result"] == "success":
472472
old_topic = self.index["messages"][message_id].get("subject", None)
473473
new_topic = request["topic"]
474-
view = self.controller.view
475474
if old_topic != new_topic:
476-
view.set_footer_text("You changed a message's topic.", 3)
475+
self.controller.report_success("You changed a message's topic.")
477476

478477
return response["result"] == "success"
479478

zulipterminal/ui.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,9 @@ def keypress(self, size: urwid_Box, key: str) -> Optional[str]:
269269
self.body.focus_col = 1
270270
self.middle_column.set_focus("footer")
271271
else:
272-
self.set_footer_text("No draft message was saved in this session.", 3)
272+
self.controller.report_error(
273+
"No draft message was saved in this session."
274+
)
273275
return key
274276
elif is_command_key("ABOUT", key):
275277
self.controller.show_about()

zulipterminal/ui_tools/boxes.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -568,8 +568,8 @@ def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
568568
content=self.msg_write_box.edit_text,
569569
)
570570
else:
571-
self.view.set_footer_text(
572-
"Cannot send message without specifying recipients.", 3
571+
self.view.controller.report_error(
572+
"Cannot send message without specifying recipients."
573573
)
574574
success = None
575575
if success:
@@ -624,7 +624,7 @@ def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
624624
primary_key_for_command("AUTOCOMPLETE_REVERSE"),
625625
)
626626
)
627-
self.view.set_footer_text(invalid_stream_error, 3)
627+
self.view.controller.report_error(invalid_stream_error)
628628
return key
629629
user_ids = self.model.get_other_subscribers_in_stream(
630630
stream_name=stream_name
@@ -658,7 +658,7 @@ def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
658658
invalid_emails_error = (
659659
f"Invalid recipient(s) - {', '.join(invalid_emails)}"
660660
)
661-
self.view.set_footer_text(invalid_emails_error, 3)
661+
self.view.controller.report_error(invalid_emails_error)
662662
return key
663663
users = self.model.user_dict
664664
self.recipient_user_ids = [
@@ -1569,15 +1569,13 @@ def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
15691569
self.model.controller.view.middle_column.set_focus("footer")
15701570
elif is_command_key("EDIT_MESSAGE", key):
15711571
if self.message["sender_id"] != self.model.user_id:
1572-
self.model.controller.view.set_footer_text(
1573-
" You can't edit messages sent by other users.", 3
1572+
self.model.controller.report_error(
1573+
" You can't edit messages sent by other users."
15741574
)
15751575
return key
15761576
# Check if editing is allowed in the realm
15771577
elif not self.model.initial_data["realm_allow_message_editing"]:
1578-
self.model.controller.view.set_footer_text(
1579-
" Editing sent message is disabled.", 3
1580-
)
1578+
self.model.controller.report_error(" Editing sent message is disabled.")
15811579
return key
15821580
# Check if message is still editable, i.e. within
15831581
# the time limit. A limit of 0 signifies no limit
@@ -1590,16 +1588,15 @@ def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
15901588
]
15911589
if time_since_msg_sent >= edit_time_limit:
15921590
if self.message["type"] == "private":
1593-
self.model.controller.view.set_footer_text(
1594-
" Time Limit for editing the message has been exceeded.", 3
1591+
self.model.controller.report_error(
1592+
" Time Limit for editing the message has been exceeded."
15951593
)
15961594
return key
15971595
elif self.message["type"] == "stream":
1598-
self.model.controller.view.set_footer_text(
1596+
self.model.controller.report_warning(
15991597
" Only topic editing allowed."
16001598
" Time Limit for editing the message body has"
16011599
" been exceeded.",
1602-
3,
16031600
)
16041601
msg_body_edit_enabled = False
16051602

zulipterminal/ui_tools/buttons.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ def handle_narrow_link(self) -> None:
543543
error = self._validate_narrow_link(parsed_link)
544544

545545
if error:
546-
self.view.set_footer_text(f" {error}", duration=3)
546+
self.controller.report_error(f" {error}")
547547
else:
548548
self._switch_narrow_to(parsed_link)
549549

0 commit comments

Comments
 (0)