scaffoldで生成したリソースのdestroy時のconfirmダイアログをテストする
参考: I still get WebkitNoResponseError · Issue #181 · thoughtbot/capybara-webkit · GitHub
scaffoldすると「Destroy」リンクをクリックしたときに
"Are you sure?" というJavaScriptのAlertボックスが表示されますが、
それをハンドリングしてテストしてみます。
def handle_js_confirm(accept=true) page.evaluate_script "window.original_confirm_function = window.confirm" page.evaluate_script "window.confirm = function(msg) { return #{!!accept}; }" yield ensure page.evaluate_script "window.confirm = window.original_confirm_function" end
まずはspecファイルにこんな感じのメソッドを定義します。
(どこに定義するのがベストなのかわかんないけど、spec_helper.rbの周辺が妥当ですかね…)
次に実際のインテグレーションテスト。
describe "Users" do it "shows yes/no dialog when destroy link was clicked", js:true do handle_js_confirm do click_link "削除" end page.should have_content("削除しました") end end
日本語になってますが大体こんな雰囲気で。