tumblr_publish_agent_spec.rb 2.7KB

    require 'rails_helper' describe Agents::TumblrPublishAgent do describe "Should create post" do before do @opts = { :blog_name => "huginnbot.tumblr.com", :post_type => "text", :expected_update_period_in_days => "2", :options => { :title => "{{title}}", :body => "{{body}}", }, } @checker = Agents::TumblrPublishAgent.new(:name => "HuginnBot", :options => @opts) @checker.service = services(:generic) @checker.user = users(:bob) @checker.save! @event = Event.new @event.agent = agents(:bob_weather_agent) @event.payload = { :title => "Gonna rain...", :body => 'San Francisco is gonna get wet' } @event.save! @post_body = { "id" => 5, "title" => "Gonna rain...", "link" => "http://huginnbot.tumblr.com/gonna-rain..." } stub.any_instance_of(Agents::TumblrPublishAgent).tumblr { obj = Object.new stub(obj).text(anything, anything) { { "id" => "5" } } stub(obj).posts("huginnbot.tumblr.com", {:id => "5"}) { {"posts" => [@post_body]} } } end describe '#receive' do it 'should publish any payload it receives' do Agents::TumblrPublishAgent.async_receive(@checker.id, [@event.id]) expect(@checker.events.count).to eq(1) expect(@checker.events.first.payload['post_id']).to eq('5') expect(@checker.events.first.payload['published_post']).to eq('[huginnbot.tumblr.com] text') expect(@checker.events.first.payload["post"]).to eq @post_body end end end describe "Should handle tumblr error" do before do @opts = { :blog_name => "huginnbot.tumblr.com", :post_type => "text", :expected_update_period_in_days => "2", :options => { :title => "{{title}}", :body => "{{body}}", }, } @checker = Agents::TumblrPublishAgent.new(:name => "HuginnBot", :options => @opts) @checker.service = services(:generic) @checker.user = users(:bob) @checker.save! @event = Event.new @event.agent = agents(:bob_weather_agent) @event.payload = { :title => "Gonna rain...", :body => 'San Francisco is gonna get wet' } @event.save! stub.any_instance_of(Agents::TumblrPublishAgent).tumblr { stub!.text(anything, anything) { {"status" => 401,"msg" => "Not Authorized"} } } end describe '#receive' do it 'should publish any payload it receives and handle error' do Agents::TumblrPublishAgent.async_receive(@checker.id, [@event.id]) expect(@checker.events.count).to eq(0) end end end end