123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- 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..."
- }
- allow_any_instance_of(Agents::TumblrPublishAgent).to receive(:tumblr) {
- double.tap { |obj|
- allow(obj).to receive(:text).with(anything, anything) { { "id" => "5" } }
- allow(obj).to receive(:posts).with("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!
- allow_any_instance_of(Agents::TumblrPublishAgent).to receive(:tumblr) {
- double.tap { |obj|
- allow(obj).to receive(:text).with(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
|