Hi i’m working through the Hartl’s Ruby on Rails Tutorial and i’m stuck with one failing test in Chapter 9.1 of. When I run spec in terminal it returns:
sis-macbook-pro:sample_app Lagaspi$ bundle exec rspec spec/
...............................F................................
Failures:
1) AuthenticationPages signin with valid information
Failure/Error: it { should have_link('Users', href: users_path) }
expected link "Users" to return something
# ./spec/requests/authentication_pages_spec.rb:37:in `block (4 levels) in <top (required)>'
Finished in 1.42 seconds
64 examples, 1 failure
Failed examples:
rspec ./spec/requests/authentication_pages_spec.rb:37 # AuthenticationPages signin with valid information
Here’s my code – authentication_pages_spec.rb
require 'spec_helper'
describe "AuthenticationPages" do
subject { page }
describe "signin page" do
before { visit signin_path }
it { should have_selector('h1', text: 'Sign in') }
it { should have_selector('title', text: 'Sign in') }
end
describe "signin" do
before { visit signin_path }
describe "with invalid information" do
before { click_button "Sign in" }
it { should have_selector('title', text: 'Sign in') }
it { should have_selector('div.alert.alert-error', text: 'Invalid') }
describe "after visiting another page" do
before { click_link "Home" }
it { should_not have_selector('div.alert.alert-error') }
end
end
describe "with valid information" do
let(:user) { FactoryGirl.create(:user) }
before { sign_in user }
it { should have_selector('title', text: user.name) }
it { should have_link('Profile', href: user_path(user)) }
it { should have_link('Sign out', href: signout_path) }
it { should have_link('Settings', href: edit_user_path(user)) }
it { should have_link('Users', href: users_path) }
it { should_not have_link('Sign in', href: signin_path) }
describe "followed by signout" do
before { click_link "Sign out" }
it { should have_link('Sign in') }
end
end
end
end
And I think this is the problem line (37):
it { should have_link('Users', href: users_path) }
But what should I do? I’m a newbie and can’t figure it out. Thanks Si.
If you’re following the tutorial, the link should only be visible if a user is logged in. You haven’t eluded to any of the other tests failing when the user is logged in, ie
And so with that in mind I’m inclined to think that the issue is in the view, not the spec. At a glance, the spec looks fine.
Does your _header.html.erb include this