woshidan/sample_app — pull request #4 by woshidan (2014-02-28 14:47:02+00:00)
Title: アクションに新しくリダイレクトを書き加えたらこれまでのサインインテストがバグった？

状況

既にサインインしている状態でサインイン、あるいはサインアップのアドレスを入力したらホーム画面へリダイレクトするように書き加えたら、

管理者ユーザまわりのテストがエラーを吐く
サインインしている状態の判定はcurrent_user.nil?を使って行う(ユーザコントローラで扱っているUserオブジェクトの値がnilでないか)

ローカルサーバで動かしたときは上で書いたようにきちんと動作する

テストではユーザのデータを与える、ユーザのデータをもとにフォームに入力させてログインさせている、という手順を踏んでいる

ので、

フォームに入力する前にリダイレクトされてホームへ飛ばされている

のだと思われる。

このテストコメントアウトして進めたい……。

テスト

describe "delete links" do

it { should_not have_link('delete') }

describe "as an admin user" do
let(:admin) { FactoryGirl.create(:admin) }
before do
sign_in admin
visit users_path
end

it { should have_link('delete', href: user_path(User.first)) }
it "should be able to delete another user" do
expect do
click_link('delete', match: :first)
end.to change(User, :count).by(-1)
end
it { should_not have_link('delete', href: user_path(admin)) }
end
end

エラーメッセージ

Failures:

1) UserPages index delete links as an admin user
Failure/Error: valid_signin admin
Capybara::ElementNotFound:
Unable to find field "Email"
# ./spec/support/utilities.rb:18:in `valid_signin'
# ./spec/requests/user_pages_spec.rb:40:in `block (5 levels) in '

2) UserPages index delete links as an admin user should be able to delete another user
Failure/Error: valid_signin admin
Capybara::ElementNotFound:
Unable to find field "Email"
# ./spec/support/utilities.rb:18:in `valid_signin'
# ./spec/requests/user_pages_spec.rb:40:in `block (5 levels) in '

3) UserPages index delete links as an admin user
Failure/Error: valid_signin admin
Capybara::ElementNotFound:
Unable to find field "Email"
# ./spec/support/utilities.rb:18:in `valid_signin'
# ./spec/requests/user_pages_spec.rb:40:in `block (5 levels) in '

Finished in 3.1 seconds
82 examples, 3 failures

Failed examples:

rspec ./spec/requests/user_pages_spec.rb:50 # UserPages index delete links as an admin user
rspec ./spec/requests/user_pages_spec.rb:45 # UserPages index delete links as an admin user should be able to delete another user
rspec ./spec/requests/user_pages_spec.rb:44 # UserPages index delete links as an admin user