Skip to content

Commit 94a3afe

Browse files
committed
model: Improve reporting upon moving/spliting topic.
1 parent 431043e commit 94a3afe

File tree

2 files changed

+74
-7
lines changed

2 files changed

+74
-7
lines changed

tests/model/test_model.py

Lines changed: 54 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,7 @@ def test_update_private_message(
834834
],
835835
)
836836
@pytest.mark.parametrize(
837-
"req, old_topic, footer_updated",
837+
"req, old_topic, new_topic, stream_name, propagate_mode, footer_updated",
838838
[
839839
(
840840
{
@@ -844,6 +844,9 @@ def test_update_private_message(
844844
"topic": "Some topic",
845845
},
846846
"Some topic",
847+
"Some topic",
848+
"stream",
849+
"change_one",
847850
False,
848851
),
849852
(
@@ -853,11 +856,21 @@ def test_update_private_message(
853856
"topic": "Topic change",
854857
},
855858
"Old topic",
859+
"Topic change",
860+
"stream",
861+
"change_one",
856862
True,
857863
),
858864
(
859-
{"message_id": 1, "propagate_mode": "change_all", "topic": "Old topic"},
865+
{
866+
"message_id": 1,
867+
"propagate_mode": "change_all",
868+
"topic": "Old topic",
869+
},
870+
"Old topic",
860871
"Old topic",
872+
"stream",
873+
"change_one",
861874
False,
862875
),
863876
(
@@ -868,6 +881,9 @@ def test_update_private_message(
868881
"topic": "terminal",
869882
},
870883
"terminal",
884+
"terminal",
885+
"stream",
886+
"change_later",
871887
False,
872888
),
873889
(
@@ -878,6 +894,9 @@ def test_update_private_message(
878894
"topic": "grett",
879895
},
880896
"greet",
897+
"grett",
898+
"stream",
899+
"change_one",
881900
True,
882901
),
883902
(
@@ -888,24 +907,54 @@ def test_update_private_message(
888907
"topic": "party",
889908
},
890909
"lets_party",
910+
"party",
911+
"stream",
912+
"change_all",
891913
True,
892914
),
893915
],
894916
)
895917
def test_update_stream_message(
896-
self, mocker, model, response, return_value, req, old_topic, footer_updated
918+
self,
919+
mocker,
920+
model,
921+
response,
922+
return_value,
923+
req,
924+
old_topic,
925+
new_topic,
926+
stream_name,
927+
propagate_mode,
928+
footer_updated,
897929
):
898930
self.client.update_message = mocker.Mock(return_value=response)
899931
model.index["messages"][req["message_id"]]["subject"] = old_topic
932+
req["topic"] = new_topic
933+
model.index["messages"][req["message_id"]]["display_recipient"] = stream_name
934+
req["propagate_mode"] = propagate_mode
935+
936+
recent_moved_msgs = ""
937+
if propagate_mode == "change_all":
938+
recent_moved_msgs = "all"
939+
if propagate_mode == "change_later":
940+
recent_moved_msgs = "some"
941+
if propagate_mode == "change_one":
942+
recent_moved_msgs = "one"
900943

901944
result = model.update_stream_message(**req)
902-
903945
self.client.update_message.assert_called_once_with(req)
904946
assert result == return_value
905947
self.display_error_if_present.assert_called_once_with(response, self.controller)
906948
report_success = model.controller.report_success
907949
if result and footer_updated:
908-
report_success.assert_called_once_with("You changed a message's topic.")
950+
if recent_moved_msgs == "one":
951+
report_success.assert_called_once_with(
952+
f"You changed {recent_moved_msgs} message's topic from #{stream_name} > {old_topic} to #{stream_name} > {new_topic}."
953+
)
954+
else:
955+
report_success.assert_called_once_with(
956+
f"You changed {recent_moved_msgs} messages' topic from #{stream_name} > {old_topic} to #{stream_name} > {new_topic}."
957+
)
909958
else:
910959
report_success.assert_not_called()
911960

zulipterminal/model.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -576,10 +576,28 @@ def update_stream_message(
576576
response = self.client.update_message(request)
577577
display_error_if_present(response, self.controller)
578578
if response["result"] == "success":
579-
old_topic = self.index["messages"][message_id].get("subject", None)
579+
get_message = self.index["messages"]
580+
old_topic = get_message[message_id].get("subject", None)
580581
new_topic = request["topic"]
582+
stream_name = get_message[message_id].get("display_recipient", None)
583+
584+
recent_moved_msgs = ""
585+
if propagate_mode == "change_all":
586+
recent_moved_msgs = "all"
587+
if propagate_mode == "change_later":
588+
recent_moved_msgs = "some"
589+
if propagate_mode == "change_one":
590+
recent_moved_msgs = "one"
591+
581592
if old_topic != new_topic:
582-
self.controller.report_success("You changed a message's topic.")
593+
if recent_moved_msgs == "one":
594+
self.controller.report_success(
595+
f"You changed {recent_moved_msgs} message's topic from #{stream_name} > {old_topic} to #{stream_name} > {new_topic}."
596+
)
597+
else:
598+
self.controller.report_success(
599+
f"You changed {recent_moved_msgs} messages' topic from #{stream_name} > {old_topic} to #{stream_name} > {new_topic}."
600+
)
583601

584602
return response["result"] == "success"
585603

0 commit comments

Comments
 (0)