diff --git a/app/models/post_analyzer.rb b/app/models/post_analyzer.rb index 5431a16ce38..29790bcaf92 100644 --- a/app/models/post_analyzer.rb +++ b/app/models/post_analyzer.rb @@ -20,7 +20,8 @@ class PostAnalyzer # wait for the post processor. dirty = false result = Oneboxer.apply(cooked) do |url, elem| - Oneboxer.render_from_cache(url) + Oneboxer.invalidate(url) if args.last[:invalidate_oneboxes] + Oneboxer.onebox url end cooked = result.to_html if result.changed? diff --git a/spec/models/post_analyzer_spec.rb b/spec/models/post_analyzer_spec.rb index 8b161c01682..22ed5eba86a 100644 --- a/spec/models/post_analyzer_spec.rb +++ b/spec/models/post_analyzer_spec.rb @@ -2,10 +2,39 @@ require 'spec_helper' describe PostAnalyzer do - let(:topic) { Fabricate(:topic) } - let(:default_topic_id) { topic.id } - let(:post_args) do - {user: topic.user, topic: topic} + let(:default_topic_id) { 12 } + + describe '#cook' do + let(:post_analyzer) { described_class.new nil, nil } + + let(:args) { [raw, options] } + let(:raw) { "Here's a tweet:\n#{url}" } + let(:options) { {} } + + let(:url) { + 'https://twitter.com/evil_trout/status/345954894420787200' + } + + before { Oneboxer.stubs(:onebox) } + + it 'fetches the onebox for any urls in the post' do + Oneboxer.expects(:onebox).with url + post_analyzer.cook(*args) + end + + it 'does not invalidate the onebox cache' do + Oneboxer.expects(:invalidate).with(url).never + post_analyzer.cook(*args) + end + + context 'when invalidating oneboxes' do + let(:options) {{ invalidate_oneboxes: true }} + + it 'invalidates the oneboxes for urls in the post' do + Oneboxer.expects(:invalidate).with url + post_analyzer.cook(*args) + end + end end context "links" do @@ -115,6 +144,7 @@ describe PostAnalyzer do end it "finds links from markdown" do + Oneboxer.stubs :onebox post_analyzer = PostAnalyzer.new(raw_post_one_link_md, default_topic_id) post_analyzer.link_count.should == 1 end diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb index 2a8b5dd3fed..bd2bc0411cb 100644 --- a/spec/models/post_spec.rb +++ b/spec/models/post_spec.rb @@ -2,6 +2,8 @@ require 'spec_helper' require_dependency 'post_destroyer' describe Post do + before { Oneboxer.stubs :onebox } + # Help us build a post with a raw body def post_with_body(body, user=nil) args = post_args.merge(raw: body)