[rspec-users] Problems with plugins?

Lance Ball lance at electricsheepcompany.com
Mon Feb 4 13:57:10 EST 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi there

I've run into a bit of a problem that I can't seem to figure out.  I  
have a model class User which includes our acts_as_role_context  
library.  This lib acts like most other acts_as libs, evaluating  
class and instance methods at runtime.  When I try to stub methods  
that are defined in acts_as_role_context, I get strange behavior.   
Perhaps it's just me.  I am a bit under the weather, and the Nyquil  
could be clouding my thinking.  :)

Here is my spec.  It's pretty simple, I just want to ensure that the  
correct redirect happens when it should.  For the record, the  
controller works as expected outside of rspec.

- ---------
require File.dirname(__FILE__) + '/../spec_helper'

describe MemberNetworkController do
   before(:each) do
     controller.should_receive(:beta_lockdown).and_return true
     login
   end

   after(:each) do
     logout
   end

   describe "on GET to add_as_friend" do
     it "should redirect to /network/friends" do
       logged_in_user.stub!(:add_user_to_role)
       controller.stub!(:make_friend_activity)
       get :add_as_friend, :key => logged_in_user.key
       response.should redirect_to("/members/#{logged_in_user.id}/ 
network/friends")
     end
   end
end
- --------

The line in question is logged_in_user.stub!(:add_user_to_role).   
User#add_user_to_role is defined in acts_as_role_context.rb.  I'll  
not paste the entire file unless requested.  It's fairly large.  the  
instance method #add_user_to_role looks like this.

- --------
         def add_user_to_role(user, role_or_key)
           role = self.class.sanitize_role( role_or_key )
           binding = role_bindings.find( :first, :conditions=> 
[ 'role_id=? AND user_id=?', role.id, user.id ] )
           if ( binding.nil? )
             role_bindings.create 
( :context=>self, :user=>user, :role=>role )
           end
         end
- --------

When #add_user_to_role is called in the controller during my spec,  
the method is run, rather than being a stub as I would expect.  Is  
this expected and/or known behavior?  Any comments and direction are  
very much appreciated.

Thanks
Lance!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)

iD8DBQFHp2AG+EgDjU0WSaoRArYDAJ92Wpp1Nkybqk7lb8fY+of+tcIawACaAyRk
y6Lo0iCvWS8/afBDTx42XiY=
=dfEK
-----END PGP SIGNATURE-----


More information about the rspec-users mailing list