Are you sure? を削除する

はじめに

10月からRunteqの課題取組中
駆け出しエンジニアです.
日々の学びをアウトプットします.

概要

  • 削除できない?
  • 原因
  • 解決策 

    削除できない?

    下のコードを実行したところ、削除ができていなかった.

  it 'Taskが削除されること' do
    visit project_tasks_path(task.project)
    click_link 'Destroy'
    expect(page).not_to have_selector '#task_list', text: task.title
    expect(Task.count).to eq 0
    expect(current_path).to eq project_tasks_path(task.project)
  end

ブラウザを確認しても削除できていない

原因

  • エラーメッセージ
Selenium::WebDriver::Error::UnexpectedAlertOpenError:
       unexpected alert open: {Alert text : Are you sure?}

エラーメッセージからDestroyリンクをクリックすると、アラートが出てきたといっている.
リンクのコードからも読み取れるように、削除する前に確認のダイアログが実装されている.

<%= link_to 'Destroy', [@project, task], method: :delete, data: { confirm: 'Are you sure?' } %>

つまりアラートに対応するコードを記述すれば解決しそうだ.

解決策

# 確認タイアログを実行するコード
  accept_confirm do
    click_link 'Destroy'
  end
  • 参考サイト

www.rubydoc.info