Testing for redirects

I have an app with admin users created with the devise gem.

I have succeeded in redirecting anyone who tries to access an admin
profile
page but is NOT logged in as an admin to the root_path
(http://localhost:3000).

However, I’m having difficulty getting the tests to pass in my
integration
test. (I’m using Capybara and minitest.)

In the admins controller, the first line under “def index” is:
redirect_to(root_path) unless admin_signed_in?

In the integration test, I start with the following code:
test_prepare # From test/test_helper.rb
@u1 = users(:connery) # From test/fixtures/users.yml
@a1 = admins(:vivian_kensington) # From test/fixtures/admin.yml
visit new_user_session_path
fill_in(‘Email’, with: ‘[email protected]’)
fill_in(‘Password’, with: ‘original’)
uncheck(‘Remember me’)
click_button(‘Log in’)
visit admin_path(@a1)

How do I test for the redirect? The path parameter at this point is nil
and NOT root_path or ‘/’.

When the user clicks “Log In”, if log in was successful, it should go to
(be redirected to) some page indicating that success with some content
of
that success.
So I would write something like:

page.should have_content(“successful login”) OR
expect(page).to have_content ‘successful login’
or maybe the username appears somewhere, test for the presence of
that, esp since you already have @u1, which you are evidently not using.
I think that the key is to test for what you ‘expect’ to find on the
following ‘page’.
Look at https://gist.github.com/zhengjia/428105, a capybara cheat sheet.
The Querying section

Hope this helps
Liz

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