FIX: Topic#invite_group failed to notify users on newly created topic (#12255)

When `PostCreator` creates a new topic it loads the `allowed_groups` of the topic. `Fabricate` doesn't do that and that's why the existing spec worked even though it should have failed, because `PostAlerter#notify_group_summary` didn't create a notification for a non-fabricated topic.

`Topic#invite_group` added a new `TopicAllowedGroup` record without reloading `Topic.allowed_groups`. A subsequent call to `PostAlerter#notify_group_summary` didn't work because it didn't find the invited group in the topic's `allowed_groups` association.
This commit is contained in:
Gerhard Schlager
2021-03-02 15:46:50 +01:00
committed by GitHub
parent 154bfcf750
commit 11ccea5c9a
2 changed files with 11 additions and 1 deletions

View File

@ -909,7 +909,15 @@ describe Topic do
context 'private message' do
let(:coding_horror) { Fabricate(:coding_horror) }
fab!(:evil_trout) { Fabricate(:evil_trout) }
let(:topic) { Fabricate(:private_message_topic, recipient: coding_horror) }
let(:topic) do
PostCreator.new(
Fabricate(:user),
title: "This is a private message",
raw: "This is my message to you-ou-ou",
archetype: Archetype.private_message,
target_usernames: coding_horror.username
).create!.topic
end
it "should integrate correctly" do
expect(Guardian.new(topic.user).can_see?(topic)).to eq(true)