chore: Change the notification text for mention notification type (#2534)

This commit is contained in:
Muhsin Keloth 2021-06-29 14:32:57 +05:30 committed by GitHub
parent 044b6872a4
commit 8027c69c1c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 44 additions and 4 deletions

View file

@ -0,0 +1,6 @@
module MessageFormatHelper
include RegexHelper
def transform_user_mention_content(message_content)
message_content.gsub(MENTION_REGEX, '\1')
end
end

View file

@ -23,6 +23,7 @@
# #
class Notification < ApplicationRecord class Notification < ApplicationRecord
include MessageFormatHelper
belongs_to :account belongs_to :account
belongs_to :user belongs_to :user
@ -73,7 +74,7 @@ class Notification < ApplicationRecord
content: primary_actor.content&.truncate_words(10) content: primary_actor.content&.truncate_words(10)
) )
when 'conversation_mention' when 'conversation_mention'
I18n.t('notifications.notification_title.conversation_mention', display_id: conversation.display_id, name: secondary_actor.name) "[##{conversation.display_id}] #{transform_user_mention_content primary_actor.content}"
else else
'' ''
end end

View file

@ -5,4 +5,5 @@ module RegexHelper
# valid unicode letter, unicode number, underscore, hyphen # valid unicode letter, unicode number, underscore, hyphen
# shouldn't start with a underscore or hyphen # shouldn't start with a underscore or hyphen
UNICODE_CHARACTER_NUMBER_HYPHEN_UNDERSCORE = Regexp.new('\A[\p{L}\p{N}]+[\p{L}\p{N}_-]+\Z') UNICODE_CHARACTER_NUMBER_HYPHEN_UNDERSCORE = Regexp.new('\A[\p{L}\p{N}]+[\p{L}\p{N}_-]+\Z')
MENTION_REGEX = Regexp.new('\[(@[\w_. ]+)\]\(mention://(?:user|team)/\d+/(.*?)+\)')
end end

View file

@ -0,0 +1,11 @@
require 'rails_helper'
describe MessageFormatHelper, type: :helper do
describe '#transform_user_mention_content' do
context 'when transform_user_mention_content called' do
it 'return transormed text correctly' do
expect(helper.transform_user_mention_content('[@john](mention://user/1/John%20K), check this ticket')).to eq '@john, check this ticket'
end
end
end
end

View file

@ -50,11 +50,32 @@ RSpec.describe Notification do
end end
it 'returns appropriate title suited for the notification type conversation_mention' do it 'returns appropriate title suited for the notification type conversation_mention' do
message = create(:message, sender: create(:user)) message = create(:message, sender: create(:user), content: 'Hey [@John](mention://user/1/john), can you check this ticket?')
notification = create(:notification, notification_type: 'conversation_mention', primary_actor: message, secondary_actor: message.sender) notification = create(:notification, notification_type: 'conversation_mention', primary_actor: message, secondary_actor: message.sender)
expect(notification.push_message_title).to eq "You have been mentioned in conversation [ID - #{message.conversation.display_id}] \ expect(notification.push_message_title).to eq "[##{message.conversation.display_id}] Hey @John, can you check this ticket?"
by #{message.sender.name}" end
it 'returns appropriate title suited for the notification type conversation_mention having multiple mentions' do
message = create(
:message, sender:
create(:user),
content: 'Hey [@John](mention://user/1/john), [@Alisha Peter](mention://user/2/alisha) can you check this ticket?'
)
notification = create(:notification, notification_type: 'conversation_mention', primary_actor: message, secondary_actor: message.sender)
expect(notification.push_message_title).to eq "[##{message.conversation.display_id}] Hey @John, @Alisha Peter can you check this ticket?"
end
it 'returns appropriate title suited for the notification type conversation_mention if username contains white space' do
message = create(
:message, sender:
create(:user),
content: 'Hey [@John Peter](mention://user/1/john%20K) please check this?'
)
notification = create(:notification, notification_type: 'conversation_mention', primary_actor: message, secondary_actor: message.sender)
expect(notification.push_message_title).to eq "[##{message.conversation.display_id}] Hey @John Peter please check this?"
end end
end end
end end