Hey,
This isn't doing much to test the *behavior* of the object. Why do
you want to encrypt the password? Probably so you can authenticate,
right? I would probably start off with
describe "authenticate" do
it "finds the user with the given credentials" do
u = User.create!(:login => "pat", :password => "password")
User.authenticate("pat", "password").should == u
end
end
That might be a bit much to chew at first though. So you can write
some interim tests that you then throw away. For example, you might
do
describe User, "when saved" do
it "should create a salt" do
u = User.create(:login => "pat", :password => "password")
u.salt.should_not be_blank
end
it "should create a hashed pass" do
u = User.create(:login => "pat", :password => "password")
u.hashed_pass.should_not be_blank
end
end
Once you have those passing, you can move to the User.authenticate
spec. Once *that* passes, you can throw away the salt/hashed_pass
specs, because they're no longer useful. They're testing
implementation at this point, and were just a tool to get you where
you wanted to go in small steps.
Pat
On Fri, Jun 20, 2008 at 8:15 AM, Yi Wen <[EMAIL PROTECTED]> wrote:
> user.should_receive(:encrypt_password).with(your_password)
> user.save
>
> Is this what you want?
>
> On Fri, Jun 20, 2008 at 10:12 AM, Csongor Bartus <[EMAIL PROTECTED]> wrote:
>> hi all,
>>
>> i'm learning rspec and i can't figure out how to test if a callback is
>> executed in a model.
>>
>> my model code is:
>>
>> class User < ActiveRecord::Base
>> before_save :encrypt_password
>>
>> ...
>>
>> def encrypt(password)
>> self.class.encrypt(password, salt)
>> end
>>
>>
>> thanks a lot,
>> cs.
>> --
>> Posted via http://www.ruby-forum.com/.
>> _______________________________________________
>> rspec-users mailing list
>> [email protected]
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
> _______________________________________________
> rspec-users mailing list
> [email protected]
> http://rubyforge.org/mailman/listinfo/rspec-users
>
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users