1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 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
|