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
>> rspec-users@rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
> _______________________________________________
> rspec-users mailing list
> rspec-users@rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to