New field: Whether or not to include an expandable first post for

embedded content.
This commit is contained in:
Robin Ward 2014-04-01 15:29:15 -04:00
parent eff8b48da9
commit f5c7ccb4e6
4 changed files with 50 additions and 1 deletions

View File

@ -707,6 +707,14 @@ class Topic < ActiveRecord::Base
end end
end end
def has_topic_embed?
TopicEmbed.where(topic_id: id).exists?
end
def expandable_first_post?
SiteSetting.embeddable_host.present? && SiteSetting.embed_truncate? && has_topic_embed?
end
private private
def update_category_topic_count_by(num) def update_category_topic_count_by(num)

View File

@ -37,7 +37,8 @@ class TopicViewSerializer < ApplicationSerializer
:highest_post_number, :highest_post_number,
:last_read_post_number, :last_read_post_number,
:deleted_by, :deleted_by,
:actions_summary :actions_summary,
:expandable_first_post
# Define a delegator for each attribute of the topic we want # Define a delegator for each attribute of the topic we want
attributes *topic_attributes attributes *topic_attributes
@ -164,4 +165,12 @@ class TopicViewSerializer < ApplicationSerializer
result result
end end
def expandable_first_post
true
end
def include_expandable_first_post?
object.topic.expandable_first_post?
end
end end

View File

@ -33,6 +33,7 @@ describe TopicEmbed do
# It converts relative URLs to absolute # It converts relative URLs to absolute
post.cooked.start_with?("hello world new post <a href=\"http://eviltrout.com/hello\">hello</a> <img src=\"http://eviltrout.com/images/wat.jpg\">").should be_true post.cooked.start_with?("hello world new post <a href=\"http://eviltrout.com/hello\">hello</a> <img src=\"http://eviltrout.com/images/wat.jpg\">").should be_true
post.topic.has_topic_embed?.should be_true
TopicEmbed.where(topic_id: post.topic_id).should be_present TopicEmbed.where(topic_id: post.topic_id).should be_present
end end

View File

@ -1320,4 +1320,35 @@ describe Topic do
Topic.calculate_avg_time(1.day.ago) Topic.calculate_avg_time(1.day.ago)
end end
end end
describe "expandable_first_post?" do
let(:topic) { Fabricate.build(:topic) }
before do
SiteSetting.stubs(:embeddable_host).returns("http://eviltrout.com")
SiteSetting.stubs(:embed_truncate?).returns(true)
topic.stubs(:has_topic_embed?).returns(true)
end
it "is true with the correct settings and topic_embed" do
topic.expandable_first_post?.should be_true
end
it "is false if embeddable_host is blank" do
SiteSetting.stubs(:embeddable_host).returns(nil)
topic.expandable_first_post?.should be_false
end
it "is false if embed_truncate? is false" do
SiteSetting.stubs(:embed_truncate?).returns(false)
topic.expandable_first_post?.should be_false
end
it "is false if has_topic_embed? is false" do
topic.stubs(:has_topic_embed?).returns(false)
topic.expandable_first_post?.should be_false
end
end
end end