How to fix assigns(:user) on controller test

Hi everyon,
Thank you for your help!
I did the controller test, but there is a problem when run the test.

Controller.rb:

def change_password
user = current_user
if User.authenticate(user.login, params[:old_password])
if (params[:password] == params[:password_confirmation])
user.password_confirmation = params[:password_confirmation]
user.password = params[:password]
if user.save
result = _(“Password changed!”)
reset_current_user(user.id)
else
(“Could not save change, please try again.”)
end
else
result = _(“Your passwords do not match.”)
@old_password = params[:old_password]
end
else
result = _(“Your old password is incorrect.”)
end
end

the controller_test.rb:

def test_should_allow_password_change
post :change_password, { :old_password => ‘123’, :password =>
‘newpassword’, :password_confirmation => ‘newpassword’},
{:user_id=>users(:user1).id}
assert_equal ‘newpassword’, assigns(:user).password
end

when I run this test, There always said,
NoMetodError: You have a ni object when you didn’t expect it:
the error occurred while evaluating nil.password.

I have try to use:
assert_equal ‘newpassword’, assigns(‘user’).password
assert_equal ‘newpassword’, assigns[:user].password
assert_equal ‘newpassword’, assigns[‘user’].password

but there is same problem. I don’t know why?
Please help1
Thanks!

James Hunt wrote:

On 9/8/07, OnRails R. [email protected] claimed:

when I run this test, There always said,
NoMetodError: You have a ni object when you didn’t expect it:
the error occurred while evaluating nil.password.

I have try to use:
assert_equal ‘newpassword’, assigns(‘user’).password
assert_equal ‘newpassword’, assigns[:user].password
assert_equal ‘newpassword’, assigns[‘user’].password

Are you using fixtures for your tests? (I assume you are, from the
assigns() usage).

Can you post the fixtures?

Thanks!
You’re welcome

the fixtures file is:
user1:
id: 1
login: testuser1
user_name:asb
password: 123
created_at: 2006-04-12 14:30:25
user2:
id: 2
login: testuser2
user_name:asb123
password: 123
created_at: 2006-04-12 14:30:25

On 9/9/07, OnRails R. [email protected] wrote:

user_name:asb
password: 123
created_at: 2006-04-12 14:30:25
user2:
id: 2
login: testuser2
user_name:asb123
password: 123
created_at: 2006-04-12 14:30:25

Therein lies your problem. You don’t have a data item in your
fixture’d database called ‘user’, only ‘user1’ and ‘user2’

Try
assert_equal ‘newpassword’, assigns(:user1).password

On Sep 9, 2007, at 4:56 PM, OnRails R. wrote:

assert_equal ‘newpassword’, assigns[‘user’].password

But did you try:
assert_equal ‘newpassword’, assigns(:user).password

and you actually do assign to @user in the controller, right?

-Rob

Rob B. http://agileconsultingllc.com
[email protected]

But did you try:
assert_equal ‘newpassword’, assigns(:user).password

and you actually do assign to @user in the controller, right?

-Rob

Rob B. http://agileconsultingllc.com
[email protected]

I can’t believe I completely missed the point of this post. No more
posting on < 3 hours of sleep :smiley:

On 9/8/07, OnRails R. [email protected] claimed:

when I run this test, There always said,
NoMetodError: You have a ni object when you didn’t expect it:
the error occurred while evaluating nil.password.

I have try to use:
assert_equal ‘newpassword’, assigns(‘user’).password
assert_equal ‘newpassword’, assigns[:user].password
assert_equal ‘newpassword’, assigns[‘user’].password

Are you using fixtures for your tests? (I assume you are, from the
assigns() usage).

Can you post the fixtures?

Thanks!
You’re welcome

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs