From 4c4f5c6aa4e8ee46c50c865421a31e1b4d89bc21 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Fri, 3 Dec 2010 19:26:12 -0800 Subject: [PATCH] dispatch moved to resque. one failing test, globally stubbed out resque enqueue temporarily. TO AMEND. --- app/models/user.rb | 25 +------------- spec/controllers/publics_controller_spec.rb | 1 - spec/helper_methods.rb | 38 +++++++++++++-------- spec/models/user/posting_spec.rb | 16 ++++++++- spec/spec_helper.rb | 31 ++++++++++++++++- 5 files changed, 69 insertions(+), 42 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 781bf8304..051b1ff5a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -141,17 +141,6 @@ class User end ######## Posting ######## - def post(class_name, opts = {}) - post = build_post(class_name, opts) - - if post.save - raise 'MongoMapper failed to catch a failed save' unless post.id - add_to_streams(post, opts[:to]) - dispatch_post(post, :to => opts[:to]) - end - post - end - def build_post(class_name, opts = {}) opts[:person] = self.person opts[:diaspora_handle] = opts[:person].diaspora_handle @@ -273,7 +262,7 @@ class User # calling nil? performs a necessary evaluation. if person.owner_id Rails.logger.info("event=push_to_person route=local sender=#{self.diaspora_handle} recipient=#{person.diaspora_handle} payload_type=#{post.class}") - Jobs::Receive.perform(person.owner_id, post.to_diaspora_xml, self.person.id) + Resque.enqueue(Jobs::Receive, person.owner_id, post.to_diaspora_xml, self.person.id) else xml = salmon.xml_for person Rails.logger.info("event=push_to_person route=remote sender=#{self.diaspora_handle} recipient=#{person.diaspora_handle} payload_type=#{post.class}") @@ -281,24 +270,12 @@ class User end end - - def salmon(post) created_salmon = Salmon::SalmonSlap.create(self, post.to_diaspora_xml) created_salmon end ######## Commenting ######## - def comment(text, options = {}) - comment = build_comment(text, options) - - if comment.save - raise 'MongoMapper failed to catch a failed save' unless comment.id - dispatch_comment comment - end - comment - end - def build_comment(text, options = {}) comment = Comment.new(:person_id => self.person.id, :diaspora_handle => self.person.diaspora_handle, diff --git a/spec/controllers/publics_controller_spec.rb b/spec/controllers/publics_controller_spec.rb index 52284f429..58a6e1b06 100644 --- a/spec/controllers/publics_controller_spec.rb +++ b/spec/controllers/publics_controller_spec.rb @@ -14,7 +14,6 @@ describe PublicsController do let(:xml) { "" } context 'success cases' do it 'should 200 on successful receipt of a request' do - Resque.should_receive(:enqueue) post :receive, :id =>user.person.id, :xml => xml response.code.should == '200' end diff --git a/spec/helper_methods.rb b/spec/helper_methods.rb index c4718aa1d..036750dea 100644 --- a/spec/helper_methods.rb +++ b/spec/helper_methods.rb @@ -22,27 +22,35 @@ module HelperMethods user.stub!(:push_to_person) end + def fantasy_resque + $process_queue = true + yield + $process_queue = false + end + def connect_users(user1, aspect1, user2, aspect2) - user1.send_contact_request_to(user2.person, aspect1) + fantasy_resque do + user1.send_contact_request_to(user2.person, aspect1) - user1.reload - aspect1.reload - user2.reload - aspect2.reload + user1.reload + aspect1.reload + user2.reload + aspect2.reload - new_request = user2.pending_requests.find_by_from_id!(user1.person.id) + new_request = user2.pending_requests.find_by_from_id!(user1.person.id) - user1.reload - aspect1.reload - user2.reload - aspect2.reload + user1.reload + aspect1.reload + user2.reload + aspect2.reload - user2.accept_and_respond( new_request.id, aspect2.id) + user2.accept_and_respond( new_request.id, aspect2.id) - user1.reload - aspect1.reload - user2.reload - aspect2.reload + user1.reload + aspect1.reload + user2.reload + aspect2.reload + end end def stub_success(address = 'abc@example.com', opts = {}) diff --git a/spec/models/user/posting_spec.rb b/spec/models/user/posting_spec.rb index be42ddbd5..48b8ba604 100644 --- a/spec/models/user/posting_spec.rb +++ b/spec/models/user/posting_spec.rb @@ -203,8 +203,22 @@ describe User do user.push_to_people(post, [user2.person, user3.person, remote_person]) end - end + describe '#push_to_person' do + before do + @salmon = user.salmon(post) + @xml = post.to_diaspora_xml + end + it 'enqueues receive for local contacts' do + Resque.should_receive(:enqueue).with(Jobs::Receive, user2.id, @xml, user.person.id) + user.push_to_person(@salmon, post, user2.person) + end + it 'calls the MessageHandler for remote contacts' do + person = Factory.create(:person) + MessageHandler.should_receive(:add_post_request).once + user.push_to_person(@salmon, post, person) + end + end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index e67237c33..ca877522c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -41,7 +41,11 @@ end module Resque def enqueue(klass, *args) - true + #if $process_queue + klass.send(:perform, *args) + #else + # true + #end end end @@ -59,6 +63,31 @@ end ImageUploader.enable_processing = false +class User + def post(class_name, opts = {}) + p = build_post(class_name, opts) + if p.save! + raise 'MongoMapper failed to catch a failed save' unless p.id + + self.aspects.reload + + add_to_streams(p, opts[:to]) + dispatch_post(p, :to => opts[:to]) + end + p + end + + def comment(text, options = {}) + c = build_comment(text, options) + if c.save! + raise 'MongoMapper failed to catch a failed save' unless c.id + dispatch_comment(c) + end + c + end +end + + class FakeHttpRequest def initialize(callback_wanted)