2014-03-04 140 views
0

喜IM在軌道上完成this of rubyRuby on Rails的教程由邁克爾·哈特爾11章

我只是想用,所以我熬了一點點來完成它拿到過來。 瞧編碼而累我已經做了愚蠢的錯誤的地方,現在我不能找到它。它可能很簡單,但我不能看到它。

我的部分11.2.5

當我運行包的exec rspec的投機/我收到以下錯誤

1) Authentication authorization for non-signed-in users in the Users controlle 
r visiting the following page 
    Failure/Error: it { should have_title('Sign in') } 
     expected #has_title?("Sign in") to return true, got false 
    # ./spec/requests/authentication_pages_spec.rb:55:in `block (6 levels) in < 
top (required)>' 

    2) Authentication authorization for non-signed-in users in the Users controlle 
r visiting the followers page 
    Failure/Error: it { should have_title('Sign in') } 
     expected #has_title?("Sign in") to return true, got false 
    # ./spec/requests/authentication_pages_spec.rb:60:in `block (6 levels) in < 
top (required)>' 

Finished in 16.24 seconds 
142 examples, 2 failures 

Failed examples: 

rspec ./spec/requests/authentication_pages_spec.rb:55 # Authentication authoriza 
tion for non-signed-in users in the Users controller visiting the following page 

rspec ./spec/requests/authentication_pages_spec.rb:60 # Authentication authoriza 
tion for non-signed-in users in the Users controller visiting the followers page 

這裏經過的地方作出的錯誤是我authentication_pages_spec.rb:

require 'spec_helper' 

describe "Authentication" do 

    subject { page } 

    describe "signin page" do 
    before { visit signin_path } 

    describe "with invalid information" do 
     before { click_button "Sign in" } 

     it { should have_title('Sign in') } 
     it { should have_selector('div.alert.alert-error') } 

     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_title(user.name) } 
     it { should have_link('Users',  href: users_path) } 
     it { should have_link('Profile',  href: user_path(user)) } 
     it { should have_link('Settings', href: edit_user_path(user)) } 
     it { should have_link('Sign out', href: signout_path) } 
     it { should_not have_link('Sign in', href: signin_path) } 
    end 
    end 
    describe "authorization" do 

    describe "for non-signed-in users" do 
     let(:user) { FactoryGirl.create(:user) } 

     describe "in the Users controller" do 

     describe "visiting the edit page" do 
      before { visit edit_user_path(user) } 
      it { should have_title('Sign in') } 
     end 

     describe "submitting to the update action" do 
      before { patch user_path(user) } 
      specify { expect(response).to redirect_to(signin_path) } 
     end 
     describe "visiting the user index" do 
      before { visit users_path } 
      it { should have_title('Sign in') } 
     end 
     describe "visiting the following page" do 
      before { visit following_user_path(user) } 
      it { should have_title('Sign in') } 
     end 

     describe "visiting the followers page" do 
      before { visit followers_user_path(user) } 
      it { should have_title('Sign in') } 
     end 
    end 


    describe "when attempting to visit a protected page" do 
     before do 
      visit edit_user_path(user) 
      fill_in "Email", with: user.email 
      fill_in "Password", with: user.password 
      click_button "Sign in" 
     end 

     describe "after signing in" do 
      it "should render the desired protected page" do 
      expect(page).to have_title('Edit user') 
      end 
     end 
    end 



    describe "in the Microposts controller" do 

     describe "submitting to the create action" do 
      before { post microposts_path } 
      specify { expect(response).to redirect_to(signin_path) } 
     end 

     describe "submitting to the destroy action" do 
      before { delete micropost_path(FactoryGirl.create(:micropost)) } 
      specify { expect(response).to redirect_to(signin_path) } 
     end 
    end 

    describe "in the Relationships controller" do 
     describe "submitting to the create action" do 
      before { post relationships_path } 
      specify { expect(response).to redirect_to(signin_path) } 
    end 

    describe "submitting to the destroy action" do 
      before { delete relationship_path(1) } 
      specify { expect(response).to redirect_to(signin_path) } 
    end 
    end 
    end 


    describe "as wrong user" do 
     let(:user) { FactoryGirl.create(:user) } 
     let(:wrong_user) { FactoryGirl.create(:user, email: "[email protected]") } 
     before { sign_in user, no_capybara: true } 

     describe "submitting a GET request to the Users#edit action" do 
     before { get edit_user_path(wrong_user) } 
     specify { expect(response.body).not_to match(full_title('Edit user')) } 
     specify { expect(response).to redirect_to(root_url) } 
     end 

     describe "submitting a PATCH request to the Users#update action" do 
     before { patch user_path(wrong_user) } 
     specify { expect(response).to redirect_to(root_url) } 
     end 
    end 
     describe "as non-admin user" do 
     let(:user) { FactoryGirl.create(:user) } 
     let(:non_admin) { FactoryGirl.create(:user) } 

     before { sign_in non_admin, no_capybara: true } 

     describe "submitting a DELETE request to the Users#destroy action" do 
     before { delete user_path(user) } 
     specify { expect(response).to redirect_to(root_url) } 
     end 
    end 
end 
end 

我認爲它是一個問題,此文件,但如果你想看到我的其他文件,只是在這裏發表評論,生病後的代碼。

回答

3

你加:以下和:追隨者到before_action在UsersController?

before_action :signed_in_user, 
      only: [:index, :edit, :update, :destroy, :following, :followers] 
+0

漂亮你很快速。謝謝! – Xitcod13

相關問題