diff --git a/spec/components/onebox/engine/discourse_local_onebox_spec.rb b/spec/components/onebox/engine/discourse_local_onebox_spec.rb index 2121100cf..627eaba4b 100644 --- a/spec/components/onebox/engine/discourse_local_onebox_spec.rb +++ b/spec/components/onebox/engine/discourse_local_onebox_spec.rb @@ -94,4 +94,61 @@ describe Onebox::Engine::DiscourseLocalOnebox do expect(html).to eq("") end end + + context "When deployed to a subfolder" do + let(:base_url) { "http://test.localhost/subfolder" } + let(:base_uri) { "/subfolder" } + + before do + Discourse.stubs(:base_url).returns(base_url) + Discourse.stubs(:base_uri).returns(base_uri) + end + + it "matches for a topic url" do + url = "#{Discourse.base_url}/t/hot-topic" + expect(Onebox.has_matcher?(url)).to eq(true) + expect(Onebox::Matcher.new(url).oneboxed).to eq(described_class) + end + + it "matches for a post url" do + url = "#{Discourse.base_url}/t/hot-topic/23/2" + expect(Onebox.has_matcher?(url)).to eq(true) + expect(Onebox::Matcher.new(url).oneboxed).to eq(described_class) + end + + context "for a link to a post" do + let(:post) { Fabricate(:post) } + let(:post2) { Fabricate(:post, topic: post.topic, post_number: 2) } + + it "returns a link if post isn't found" do + url = "#{Discourse.base_url}/t/not-exist/3/2" + expect(Onebox.preview(url).to_s).to eq("#{url}") + end + + it "returns a link if not allowed to see the post" do + url = "#{Discourse.base_url}#{post2.url}" + Guardian.any_instance.stubs(:can_see?).returns(false) + expect(Onebox.preview(url).to_s).to eq("#{url}") + end + + it "returns a link if post is hidden" do + hidden_post = Fabricate(:post, topic: post.topic, post_number: 2, hidden: true, hidden_reason_id: Post.hidden_reasons[:flag_threshold_reached]) + url = "#{Discourse.base_url}#{hidden_post.url}" + expect(Onebox.preview(url).to_s).to eq("#{url}") + end + + it "returns some onebox goodness if post exists and can be seen" do + url = "#{Discourse.base_url}#{post2.url}?source_topic_id=#{post2.topic_id+1}" + Guardian.any_instance.stubs(:can_see?).returns(true) + html = Onebox.preview(url).to_s + expect(html).to include(post2.excerpt) + expect(html).to include(post2.topic.title) + + url = "#{Discourse.base_url}#{post2.url}" + html = Onebox.preview(url).to_s + expect(html).to include(post2.user.username) + expect(html).to include(post2.excerpt) + end + end + end end