72 lines
1.8 KiB
Ruby
72 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe GroupMentionsUpdater do
|
|
fab!(:post) { Fabricate(:post) }
|
|
|
|
before do
|
|
Jobs.run_immediately!
|
|
end
|
|
|
|
describe '.update' do
|
|
it 'should update valid group mentions' do
|
|
new_group_name = 'awesome_team'
|
|
old_group_name = 'team'
|
|
|
|
[
|
|
["@#{old_group_name} is awesome!", "@#{new_group_name} is awesome!"],
|
|
["This @#{old_group_name} is awesome!", "This @#{new_group_name} is awesome!"],
|
|
["Mention us @ @#{old_group_name}", "Mention us @ @#{new_group_name}"],
|
|
].each do |raw, expected_raw|
|
|
group = Fabricate(:group,
|
|
name: old_group_name,
|
|
mentionable_level: Group::ALIAS_LEVELS[:everyone]
|
|
)
|
|
|
|
post.update!(raw: raw)
|
|
group.update!(name: new_group_name)
|
|
post.reload
|
|
|
|
expect(post.raw_mentions).to eq([new_group_name])
|
|
expect(post.raw).to eq(expected_raw)
|
|
|
|
group.destroy!
|
|
end
|
|
end
|
|
|
|
it 'should not update invalid group mentions' do
|
|
group = Fabricate(:group,
|
|
name: 'team',
|
|
mentionable_level: Group::ALIAS_LEVELS[:everyone]
|
|
)
|
|
|
|
post.update!(raw: 'This is not valid@team.com')
|
|
|
|
expect(post.reload.raw_mentions).to eq([])
|
|
|
|
group.update!(name: 'new_team_name')
|
|
|
|
expect(post.reload.raw_mentions).to eq([])
|
|
end
|
|
|
|
it "should ignore validations" do
|
|
everyone_mention_level = Group::ALIAS_LEVELS[:everyone]
|
|
|
|
%w{
|
|
awesome_team
|
|
pro_team
|
|
}.each do |name|
|
|
Fabricate(:group, name: name, mentionable_level: everyone_mention_level)
|
|
end
|
|
|
|
post.update!(raw: "@awesome_team is cool and so is @pro_team")
|
|
|
|
SiteSetting.max_mentions_per_post = 1
|
|
GroupMentionsUpdater.update('cool_team', 'awesome_team')
|
|
|
|
post.reload
|
|
expect(post.raw_mentions).to match_array(['cool_team', 'pro_team'])
|
|
end
|
|
|
|
end
|
|
end
|