# frozen_string_literal: true RSpec.describe GroupMentionsUpdater do fab!(:post) before { Jobs.run_immediately! } 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(%w[cool_team pro_team]) end end end