mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
api: Guess emoji_type when adding a reaction.
This changes add_reaction in zerver.views.reactions to allow
calling POST ../messages/{message_id}/reactions api endpoint with
emoji_name only, even in the case of a custom emoji.
This commit is contained in:
@@ -62,10 +62,21 @@ class ReactionEmojiTest(ZulipTestCase):
|
|||||||
'emoji_name': 'smile'
|
'emoji_name': 'smile'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
base_query = Reaction.objects.filter(user_profile=sender,
|
||||||
|
message=Message.objects.get(id=1),
|
||||||
|
)
|
||||||
result = self.api_post(sender, '/api/v1/messages/1/reactions',
|
result = self.api_post(sender, '/api/v1/messages/1/reactions',
|
||||||
reaction_info)
|
reaction_info)
|
||||||
self.assert_json_success(result)
|
self.assert_json_success(result)
|
||||||
self.assertEqual(200, result.status_code)
|
self.assertEqual(200, result.status_code)
|
||||||
|
self.assertTrue(base_query.filter(emoji_name=reaction_info['emoji_name']).exists())
|
||||||
|
|
||||||
|
reaction_info['emoji_name'] = 'green_tick'
|
||||||
|
result = self.api_post(sender, '/api/v1/messages/1/reactions',
|
||||||
|
reaction_info)
|
||||||
|
self.assert_json_success(result)
|
||||||
|
self.assertEqual(200, result.status_code)
|
||||||
|
self.assertTrue(base_query.filter(emoji_name=reaction_info['emoji_name']).exists())
|
||||||
|
|
||||||
def test_zulip_emoji(self) -> None:
|
def test_zulip_emoji(self) -> None:
|
||||||
"""
|
"""
|
||||||
@@ -76,11 +87,21 @@ class ReactionEmojiTest(ZulipTestCase):
|
|||||||
'emoji_name': 'zulip',
|
'emoji_name': 'zulip',
|
||||||
'reaction_type': 'zulip_extra_emoji'
|
'reaction_type': 'zulip_extra_emoji'
|
||||||
}
|
}
|
||||||
|
base_query = Reaction.objects.filter(user_profile=sender,
|
||||||
|
emoji_name=reaction_info['emoji_name'])
|
||||||
|
|
||||||
result = self.api_post(sender, '/api/v1/messages/1/reactions',
|
result = self.api_post(sender, '/api/v1/messages/1/reactions',
|
||||||
reaction_info)
|
reaction_info)
|
||||||
self.assert_json_success(result)
|
self.assert_json_success(result)
|
||||||
self.assertEqual(200, result.status_code)
|
self.assertEqual(200, result.status_code)
|
||||||
|
self.assertTrue(base_query.filter(message=Message.objects.get(id=1)).exists())
|
||||||
|
|
||||||
|
reaction_info.pop('reaction_type')
|
||||||
|
result = self.api_post(sender, '/api/v1/messages/2/reactions',
|
||||||
|
reaction_info)
|
||||||
|
self.assert_json_success(result)
|
||||||
|
self.assertEqual(200, result.status_code)
|
||||||
|
self.assertTrue(base_query.filter(message=Message.objects.get(id=2)).exists())
|
||||||
|
|
||||||
def test_valid_emoji_react_historical(self) -> None:
|
def test_valid_emoji_react_historical(self) -> None:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ def create_historical_message(user_profile: UserProfile, message: Message) -> No
|
|||||||
def add_reaction(request: HttpRequest, user_profile: UserProfile, message_id: int,
|
def add_reaction(request: HttpRequest, user_profile: UserProfile, message_id: int,
|
||||||
emoji_name: str=REQ(),
|
emoji_name: str=REQ(),
|
||||||
emoji_code: Optional[str]=REQ(default=None),
|
emoji_code: Optional[str]=REQ(default=None),
|
||||||
reaction_type: str=REQ(default="unicode_emoji")) -> HttpResponse:
|
reaction_type: Optional[str]=REQ(default=None)) -> HttpResponse:
|
||||||
message, user_message = access_message(user_profile, message_id)
|
message, user_message = access_message(user_profile, message_id)
|
||||||
|
|
||||||
if emoji_code is None:
|
if emoji_code is None:
|
||||||
@@ -37,6 +37,10 @@ def add_reaction(request: HttpRequest, user_profile: UserProfile, message_id: in
|
|||||||
emoji_code = emoji_name_to_emoji_code(message.sender.realm,
|
emoji_code = emoji_name_to_emoji_code(message.sender.realm,
|
||||||
emoji_name)[0]
|
emoji_name)[0]
|
||||||
|
|
||||||
|
if reaction_type is None:
|
||||||
|
reaction_type = emoji_name_to_emoji_code(message.sender.realm,
|
||||||
|
emoji_name)[1]
|
||||||
|
|
||||||
if Reaction.objects.filter(user_profile=user_profile,
|
if Reaction.objects.filter(user_profile=user_profile,
|
||||||
message=message,
|
message=message,
|
||||||
emoji_code=emoji_code,
|
emoji_code=emoji_code,
|
||||||
|
|||||||
Reference in New Issue
Block a user