These feature tests were taking too long, we can't run them for every single model. I'm taking the approach of using one different model for each test, but in theory only using a few models covering every possible scenario would be enough.
72 lines
1.8 KiB
Ruby
72 lines
1.8 KiB
Ruby
require "rails_helper"
|
|
|
|
describe "Answers" do
|
|
|
|
before do
|
|
admin = create(:administrator)
|
|
login_as admin.user
|
|
end
|
|
|
|
scenario "Create" do
|
|
question = create(:poll_question)
|
|
title = "Whatever the question may be, the answer is always 42"
|
|
description = "The Hitchhiker's Guide To The Universe"
|
|
|
|
visit admin_question_path(question)
|
|
click_link "Add answer"
|
|
|
|
fill_in "Answer", with: title
|
|
fill_in "Description", with: description
|
|
|
|
click_button "Save"
|
|
|
|
expect(page).to have_content(title)
|
|
expect(page).to have_content(description)
|
|
end
|
|
|
|
scenario "Create second answer and place after the first one" do
|
|
question = create(:poll_question)
|
|
answer = create(:poll_question_answer, title: "First", question: question, given_order: 1)
|
|
title = "Second"
|
|
description = "Description"
|
|
|
|
visit admin_question_path(question)
|
|
click_link "Add answer"
|
|
|
|
fill_in "Answer", with: title
|
|
fill_in "Description", with: description
|
|
|
|
click_button "Save"
|
|
|
|
expect(page.body.index("First")).to be < page.body.index("Second")
|
|
end
|
|
|
|
scenario "Update" do
|
|
question = create(:poll_question)
|
|
answer = create(:poll_question_answer, question: question, title: "Answer title", given_order: 2)
|
|
answer2 = create(:poll_question_answer, question: question, title: "Another title", given_order: 1)
|
|
|
|
visit admin_answer_path(answer)
|
|
|
|
click_link "Edit answer"
|
|
|
|
old_title = answer.title
|
|
new_title = "Ex Machina"
|
|
|
|
fill_in "Answer", with: new_title
|
|
|
|
click_button "Save"
|
|
|
|
expect(page).to have_content("Changes saved")
|
|
expect(page).to have_content(new_title)
|
|
|
|
visit admin_question_path(question)
|
|
|
|
expect(page).to have_content(new_title)
|
|
expect(page).not_to have_content(old_title)
|
|
|
|
expect(answer2.title).to appear_before(new_title)
|
|
end
|
|
|
|
end
|