how to fix assigns(:user) on controller test

O

OnRails Ruby

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[:eek:ld_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[:eek:ld_password]
end
else
result = _("Your old password is incorrect.")
end
end

the controller_test.rb:

def test_should_allow_password_change
post :change_password, { :eek:ld_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!
 
J

James Hunt

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

def test_should_allow_password_change
post :change_password, { :eek:ld_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

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

Can you post the fixtures?
You're welcome
 
O

OnRails Ruby

James said:
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?
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
 
J

James Hunt

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

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
 
R

Rob Biedenharn

James said:
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 did you try:
assert_equal 'newpassword', assigns:)user).password

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

-Rob

Rob Biedenharn http://agileconsultingllc.com
(e-mail address removed)
 
J

James Hunt

But did you try:
assert_equal 'newpassword', assigns:)user).password

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

-Rob

Rob Biedenharn http://agileconsultingllc.com
(e-mail address removed)

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

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,982
Messages
2,570,186
Members
46,739
Latest member
Clint8040

Latest Threads

Top