Files
nairobi/spec/system/admin/poll/questions/answers/answers_spec.rb
Julian Herrero 3a6e99cb8c Don't allow changing answers if the poll has started
Just like we did with questions.
2022-09-20 17:50:49 +02:00

90 lines
2.8 KiB
Ruby

require "rails_helper"
describe "Answers", :admin do
let(:future_poll) { create(:poll, :future) }
let(:current_poll) { create(:poll) }
describe "Create" do
scenario "Is possible for a not started poll" do
question = create(:poll_question, poll: future_poll)
visit admin_question_path(question)
click_link "Add answer"
expect(page).to have_link "Go back", href: admin_question_path(question)
fill_in "Answer", with: "The answer is always 42"
fill_in_ckeditor "Description", with: "The Hitchhiker's Guide To The Universe"
click_button "Save"
expect(page).to have_content "Answer created successfully"
expect(page).to have_content "The answer is always 42"
expect(page).to have_content "The Hitchhiker's Guide To The Universe"
end
scenario "Is not possible for an already started poll" do
question = create(:poll_question, poll: current_poll)
visit admin_question_path(question)
expect(page).not_to have_link "Add answer"
expect(page).to have_content "Once the poll has started it will not be possible to create, edit or"
end
scenario "Create second answer and place after the first one" do
question = create(:poll_question, poll: future_poll)
create(:poll_question_answer, title: "First", question: question, given_order: 1)
visit admin_question_path(question)
click_link "Add answer"
fill_in "Answer", with: "Second"
fill_in_ckeditor "Description", with: "Description"
click_button "Save"
expect("First").to appear_before("Second")
end
end
scenario "Update" do
question = create(:poll_question, poll: future_poll)
create(:poll_question_answer, question: question, title: "Answer title", given_order: 2)
create(:poll_question_answer, question: question, title: "Another title", given_order: 1)
visit admin_question_path(question)
within("tr", text: "Answer title") { click_link "Edit" }
expect(page).to have_link "Go back", href: admin_question_path(question)
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).not_to have_content "Answer title"
expect("Another title").to appear_before("New title")
end
scenario "Reorder" do
question = create(:poll_question)
create(:poll_question_answer, question: question, title: "First", given_order: 1)
create(:poll_question_answer, question: question, title: "Last", given_order: 2)
visit admin_question_path(question)
within("tbody.sortable") do
expect("First").to appear_before("Last")
find("tr", text: "Last").drag_to(find("tr", text: "First"))
expect("Last").to appear_before("First")
end
end
end