From d260e42c8a0060ae9c7a476a27d8b109b2902510 Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Thu, 10 Sep 2020 08:16:57 +1000 Subject: [PATCH] FIX: topic_creator accepts participant_count in import mode (#10632) The issue mentioned here: https://meta.discourse.org/t/imported-private-discussion-doesnt-appear-in-the-author-inbox/163252 `participant_count` is important to attribute for private messages. If they are imported, we should allow them to set that attribute. A workaround would be evaluating `update_statistics` method on each Topic but that is less performant. --- lib/topic_creator.rb | 4 ++++ spec/components/topic_creator_spec.rb | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/topic_creator.rb b/lib/topic_creator.rb index e9a5ad14ccc..cfac39f6b31 100644 --- a/lib/topic_creator.rb +++ b/lib/topic_creator.rb @@ -106,6 +106,10 @@ class TopicCreator topic_params[:views] = @opts[:views].to_i end + if topic_params[:import_mode] && @opts[:participant_count].to_i > 0 + topic_params[:participant_count] = @opts[:participant_count].to_i + end + # Automatically give it a moderator warning subtype if specified topic_params[:subtype] = TopicSubtype.moderator_warning if @opts[:is_warning] diff --git a/spec/components/topic_creator_spec.rb b/spec/components/topic_creator_spec.rb index 9d7230ece14..ba60863cd12 100644 --- a/spec/components/topic_creator_spec.rb +++ b/spec/components/topic_creator_spec.rb @@ -70,6 +70,16 @@ describe TopicCreator do expect(topic).to be_valid expect(topic.category).to eq(category) end + + it "ignores participant_count without raising an error" do + topic = TopicCreator.create(user, Guardian.new(user), valid_attrs.merge(participant_count: 3)) + expect(topic.participant_count).to eq(1) + end + + it "accepts participant_count in import mode" do + topic = TopicCreator.create(user, Guardian.new(user), valid_attrs.merge(import_mode: true, participant_count: 3)) + expect(topic.participant_count).to eq(3) + end end end