From ee13ea57345692e630f10e3cc748ee984b38bc58 Mon Sep 17 00:00:00 2001 From: Jason Stirk Date: Fri, 16 Jul 2010 21:01:23 +1000 Subject: [PATCH] Reuse facebook_session if we can, so as that Mocks are preserved --- lib/facebooker_authentication/model.rb | 29 ++++++++++++++++---------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/lib/facebooker_authentication/model.rb b/lib/facebooker_authentication/model.rb index 1c4ca63..3b5e1ac 100644 --- a/lib/facebooker_authentication/model.rb +++ b/lib/facebooker_authentication/model.rb @@ -3,6 +3,10 @@ module Model def self.included(includer) includer.send(:extend,ClassMethods) includer.send(:include,InstanceMethods) + + # Provide a way to set the facebook_session in cases where for_facebook_id() doesn't suit. + # For example, if the model shouldn't be created... + attr_writer :facebook_session end module InstanceMethods @@ -16,22 +20,25 @@ def facebook_session end def store_session(session_key) - if self.session_key != session_key - update_attribute(:session_key,session_key) - end - end + if self.session_key != session_key + update_attribute(:session_key,session_key) + end + end end module ClassMethods def for_facebook_id(facebook_id,facebook_session=nil) - returning find_or_create_by_facebook_id(facebook_id) do |user| - unless facebook_session.nil? - user.store_session(facebook_session.session_key) - end - end - end + returning find_or_create_by_facebook_id(facebook_id) do |user| + unless facebook_session.nil? + user.store_session(facebook_session.session_key) + # Set the session now - this ensures that Cucumber correctly passes the Facebooker::Mock::Session object, + # rather than letting facebook_session create a standar Facebooker::Session + user.facebook_session=facebook_session + end + end + end end end -end \ No newline at end of file +end