require File.dirname(__FILE__) + '/../spec_helper' describe "A new User" do it "should be created" do lambda{ user = create_user user.should_not be_new_record }.should change(User,:count).by(1) end it "should require login" do lambda{ u = create_user(:login => nil) u.should have_at_least(1).errors_on(:login) }.should_not change(User,:count) end it "should require password" do lambda{ u = create_user(:password => nil) u.should have_at_least(1).errors_on(:password) }.should_not change(User,:count) end it "should require password confirmation" do lambda{ u = create_user(:password_confirmation => nil) u.should have_at_least(1).errors_on(:password_confirmation) }.should_not change(User,:count) end it "should require email" do lambda{ u = create_user(:email => nil) u.should have_at_least(1).errors_on(:email) }.should_not change(User,:count) end #it "should not be activated" do #u = create_user #u.should_not be_activated #end #it "should allow activation" do #u = create_user #u.should_not be_activated #u.activate #u.should be_activated #end it "should have many user roles" do User.reflect_on_association(:user_roles).should_not be_nil end it "should have many roles though user roles" do User.reflect_on_association(:roles).should_not be_nil end it "should know what role it has" do role = Role.create(:name=>'foo') user = create_user user.roles.add(role, user) user.should be_in_role('foo') end protected def create_user(options = {}) User.create({ :login => 'nemo', :email => 'nemo@example.com', :password => 'nemo', :password_confirmation => 'nemo' }.merge(options)) end end =begin describe "User with fixtures loaded" do fixtures :users it "should reset password" do users(:quentin).update_attributes(:password => 'new password', :password_confirmation => 'new password') users(:quentin).should == User.authenticate('quentin','new password') end it "should not rehash password" do users(:quentin).update_attributes(:login => 'quentin2') users(:quentin).should == User.authenticate('quentin2','test') end it "should authenticate user" do users(:quentin).should == User.authenticate('quentin','test') end it "should set remember token" do users(:quentin).remember_me users(:quentin).remember_token.should_not be_nil users(:quentin).remember_token_expires_at.should_not be_nil end it "should unset remember token" do users(:quentin).remember_me users(:quentin).remember_token.should_not be_nil users(:quentin).forget_me users(:quentin).remember_token.should be_nil end it "should remember me for one week" do before = 1.week.from_now.utc users(:quentin).remember_me_for 1.week after = 1.week.from_now.utc users(:quentin).remember_token.should_not be_nil users(:quentin).remember_token_expires_at.should_not be_nil users(:quentin).remember_token_expires_at.should be_between(before, after) end it "should remember me until one week" do time = 1.week.from_now.utc users(:quentin).remember_me_until time users(:quentin).remember_token.should_not be_nil users(:quentin).remember_token_expires_at.should_not be_nil users(:quentin).remember_token_expires_at.should == time end it "should remember me for two week by default" do before = 2.week.from_now.utc users(:quentin).remember_me after = 2.week.from_now.utc users(:quentin).remember_token.should_not be_nil users(:quentin).remember_token_expires_at.should_not be_nil users(:quentin).remember_token_expires_at.should be_between(before, after) end end =end