Forum: Ruby on Rails Noob test Q

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Elliott G. (Guest)
on 2009-03-26 23:13
(Received via mailing list)
I have been working with restful_authentication. I have made some
changes to it and now I'm trying to get all the default tests that
came with the plugin to pass.

Here's one of the tests that error out:

def test_should_require_login_on_signup
    assert_no_difference 'User.count' do
      create_user(:login => nil)
      assert assigns(:user).errors.on(:login)
      assert_response :success
    end
  end

This is the error:
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.errors

When using running debugger and checking in on assigns(:user) it
returns nil, so I assume this is the trouble.

Finally here's my question, what is "create_user" doing? Is it
creating a new User based upon the users.yml fixture that the test
suit is loading, or is it something else? I couldn't find reference
for this "dynamic??" method anywhere.

Thanks
Elliott G. (Guest)
on 2009-03-27 19:04
(Received via mailing list)
Any thoughts on this?

Basically, I just need to know what "create_user" is doing? Is it
creating a new User based upon the users.yml fixture that the test
suit is loading, or is it something else? I couldn't find reference
for this "dynamic??" method anywhere.

def test_should_require_login_on_signup
    assert_no_difference 'User.count' do
      create_user(:login => nil)
      assert assigns(:user).errors.on(:login)
      assert_response :success
    end
  end
Colin L. (Guest)
on 2009-03-27 19:16
(Received via mailing list)
If you look down the end of the file with that code in you will find the
definition of create_user.  At least in my version anyway.  I found it
by a
global search, but I realised when it found it that I should have looked
in
that file first.

2009/3/27 elliottg <removed_email_address@domain.invalid>
Elliott G. (Guest)
on 2009-03-27 19:28
(Received via mailing list)
Doh... I just found it, right after my last post.

Thanks for getting back to me.

I am assuming that somehow @user is being returned or something?
Because, assigns(:user) is being called on the next line??

Is that the case, and further any ideas why its coming up Nil? Testing
in script/console test shows that creating a new User works fine and I
know the fixture data is in the users table as it should be?

Thanks a ton
Elliott G. (Guest)
on 2009-03-27 20:36
(Received via mailing list)
It looks like I have a "Filter chain halted" error going on that is
not allowing the user to be created.

Thanks for all the help.
Colin L. (Guest)
on 2009-03-27 22:33
(Received via mailing list)
I can't help with this as I have tweaked the create code so it is
non-standard.  Is there a before_filter in UsersController, if so then
it
may be failing in there.

2009/3/27 elliottg <removed_email_address@domain.invalid>
Elliott G. (Guest)
on 2009-03-29 05:52
(Received via mailing list)
A before_filter redirect in role_reqirement_system#access_denied  is
halting things before the create action of the user controller could
be called. Not really sure how test around this as the redirect is a
key part of how r_r works. Any thoughts on getting around situations
like this?

Thanks
Colin L. (Guest)
on 2009-03-29 12:44
(Received via mailing list)
I don't know about role_requirement_system I am afraid, so only
guesswork
follows.  If I understand correctly the problem is that the restful
authentication tests are failing because the role requirement conditions
are
not satisfied by the test conditions.  Possibly you have to adjust the
test
fixtures and possibly test code so that the users in the fixtures have
appropriate roles to satisfy the tests.

2009/3/29 elliottg <removed_email_address@domain.invalid>
This topic is locked and can not be replied to.