From 5818227904d4baa6c49505252026990f35d96d76 Mon Sep 17 00:00:00 2001 From: maxwell Date: Thu, 6 Jan 2011 13:13:09 -0800 Subject: [PATCH] adding job for posting to services --- app/models/jobs/post_to_service.rb | 16 ++++++++++++++++ spec/models/jobs/post_to_service_spec.rb | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 app/models/jobs/post_to_service.rb create mode 100644 spec/models/jobs/post_to_service_spec.rb diff --git a/app/models/jobs/post_to_service.rb b/app/models/jobs/post_to_service.rb new file mode 100644 index 000000000..20b695fd2 --- /dev/null +++ b/app/models/jobs/post_to_service.rb @@ -0,0 +1,16 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. +# +module Jobs + class PostToService + extend ResqueJobLogging + @queue = :http + + def self.perform(service_id, post_id, url) + service = Service.find_by_id(service_id) + post = Post.find_by_id(post_id) + service.post(post, url) + end + end +end diff --git a/spec/models/jobs/post_to_service_spec.rb b/spec/models/jobs/post_to_service_spec.rb new file mode 100644 index 000000000..59cb062c6 --- /dev/null +++ b/spec/models/jobs/post_to_service_spec.rb @@ -0,0 +1,16 @@ +require 'spec_helper' + +describe Jobs::PostToService do + it 'calls service#post with the given service' do + user = make_user + aspect = user.aspects.create(:name => "yeah") + post = user.post(:status_message, :message => 'foo', :to => aspect.id) + User.stub!(:find_by_id).with(user.id.to_s).and_return(user) + m = mock() + url = "foobar" + m.should_receive(:post).with(anything, url) + Service.stub!(:find_by_id).and_return(m) + Jobs::PostToService.perform("123", post.id.to_s, url) + end +end +