From 560c13211a70370a0ab93bfa2ea0af3578ddf4bd Mon Sep 17 00:00:00 2001 From: Rafael dos Santos Silva Date: Tue, 17 Aug 2021 18:17:07 -0300 Subject: [PATCH] DEV: Allow passing a category parameter when importing a topic (#14069) This will be used in the rss pooling plugin to address the feature request at https://meta.discourse.org/t/-/200644?u=falco --- app/models/topic_embed.rb | 4 ++-- spec/models/topic_embed_spec.rb | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/models/topic_embed.rb b/app/models/topic_embed.rb index 69279394d26..380daafb5b1 100644 --- a/app/models/topic_embed.rb +++ b/app/models/topic_embed.rb @@ -27,7 +27,7 @@ class TopicEmbed < ActiveRecord::Base end # Import an article from a source (RSS/Atom/Other) - def self.import(user, url, title, contents) + def self.import(user, url, title, contents, category_id: nil) return unless url =~ /^https?\:\/\// if SiteSetting.embed_truncate @@ -58,7 +58,7 @@ class TopicEmbed < ActiveRecord::Base raw: absolutize_urls(url, contents), skip_validations: true, cook_method: cook_method, - category: eh.try(:category_id) + category: category_id || eh.try(:category_id) } if SiteSetting.embed_unlisted? create_args[:visible] = false diff --git a/spec/models/topic_embed_spec.rb b/spec/models/topic_embed_spec.rb index d73135a333a..decb5028061 100644 --- a/spec/models/topic_embed_spec.rb +++ b/spec/models/topic_embed_spec.rb @@ -16,6 +16,7 @@ describe TopicEmbed do let(:url) { 'http://eviltrout.com/123' } let(:contents) { "

hello world new post hello

" } fab!(:embeddable_host) { Fabricate(:embeddable_host) } + fab!(:category) { Fabricate(:category) } it "returns nil when the URL is malformed" do expect(TopicEmbed.import(user, "invalid url", title, contents)).to eq(nil) @@ -95,6 +96,14 @@ describe TopicEmbed do imported_post = TopicEmbed.import(user, "http://eviltrout.com/abcd", title, "some random content") expect(imported_post.topic).to be_visible end + + it "creates the topic in the category passed as a parameter" do + Jobs.run_immediately! + SiteSetting.embed_unlisted = false + imported_post = TopicEmbed.import(user, "http://eviltrout.com/abcd", title, "some random content", category_id: category.id) + expect(imported_post.topic.category).not_to eq(embeddable_host.category) + expect(imported_post.topic.category).to eq(category) + end end context "post creation supports markdown rendering" do