diff --git a/app/models/topic_embed.rb b/app/models/topic_embed.rb index 2b2523aa126..61554f6f5cf 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, category_id: nil, cook_method: nil) + def self.import(user, url, title, contents, category_id: nil, cook_method: nil, tags: nil) return unless url =~ /^https?\:\/\// if SiteSetting.embed_truncate && cook_method.nil? @@ -58,7 +58,8 @@ class TopicEmbed < ActiveRecord::Base raw: absolutize_urls(url, contents), skip_validations: true, cook_method: cook_method, - category: category_id || eh.try(:category_id) + category: category_id || eh.try(:category_id), + tags: SiteSetting.tagging_enabled ? tags : nil, } 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 6a4e0025dbb..694ad884248 100644 --- a/spec/models/topic_embed_spec.rb +++ b/spec/models/topic_embed_spec.rb @@ -17,6 +17,7 @@ describe TopicEmbed do let(:contents) { "<p>hello world new post <a href='/hello'>hello</a> <img src='/images/wat.jpg'></p>" } fab!(:embeddable_host) { Fabricate(:embeddable_host) } fab!(:category) { Fabricate(:category) } + fab!(:tag) { Fabricate(:tag) } it "returns nil when the URL is malformed" do expect(TopicEmbed.import(user, "invalid url", title, contents)).to eq(nil) @@ -104,6 +105,13 @@ describe TopicEmbed do expect(imported_post.topic.category).to eq(category) end + it "creates the topic with the tag passed as a parameter" do + Jobs.run_immediately! + SiteSetting.tagging_enabled = true + imported_post = TopicEmbed.import(user, "http://eviltrout.com/abcd", title, "some random content", tags: [tag.name]) + expect(imported_post.topic.tags).to include(tag) + end + it "respects overriding the cook_method when asked" do Jobs.run_immediately! SiteSetting.embed_support_markdown = false