Files
nairobi/spec/system/admin/legislation/draft_versions_spec.rb
Javi Martín 40e339d23d Fix flaky legislation draft version spec
The test was failing sometimes, probably because the "Edit" link within
the "An example legislation process" row is already present before
clicking the "All" link. This can lead to simultaneous requests.

Just removing the unnecessary click on the "All" link solves the issue.
2021-08-29 02:43:42 +02:00

140 lines
4.0 KiB
Ruby

require "rails_helper"
describe "Admin legislation draft versions", :admin do
context "Index" do
scenario "Displaying legislation process draft versions" do
process = create(:legislation_process, title: "An example legislation process")
draft_version = create(:legislation_draft_version, process: process, title: "Version 1")
visit admin_legislation_processes_path(filter: "all")
within("tr", text: "An example legislation process") { click_link "Edit" }
click_link "Drafting"
click_link "Version 1"
expect(page).to have_content(draft_version.title)
expect(page).to have_content(draft_version.changelog)
end
end
context "Create" do
scenario "Valid legislation draft version" do
create(:legislation_process, title: "An example legislation process")
visit admin_root_path
within("#side_menu") do
click_link "Collaborative Legislation"
end
within("tr", text: "An example legislation process") { click_link "Edit" }
click_link "Drafting"
click_link "Create version"
fill_in "Version title", with: "Version 3"
fill_in "Changes", with: "Version 3 changes"
fill_in_markdown_editor "Text", with: "Version 3 body"
within("form .end") do
click_button "Create version"
end
expect(page).to have_content "An example legislation process"
expect(page).to have_content "Version 3"
end
end
context "Update" do
scenario "Valid legislation draft version" do
process = create(:legislation_process, title: "An example legislation process")
create(:legislation_draft_version, title: "Version 1", process: process)
visit admin_root_path
within("#side_menu") do
click_link "Collaborative Legislation"
end
click_link "All"
expect(page).not_to have_link "All"
within("tr", text: "An example legislation process") { click_link "Edit" }
click_link "Drafting"
click_link "Version 1"
fill_in "Version title", with: "Version 1b"
fill_in_markdown_editor "Text", with: "# Version 1 body\r\n\r\nParagraph\r\n\r\n>Quote"
click_button "Save changes"
expect(page).to have_content "Version 1b"
end
end
context "Changing content with the markdown editor" do
let(:prompt) { "You've edited the text without saving it. Do you confirm to leave the page?" }
let(:version) { create(:legislation_draft_version, body: "Version 1") }
let(:path) do
edit_admin_legislation_process_draft_version_path(version.process, version)
end
scenario "asks for confimation when the content is modified" do
visit path
fill_in_markdown_editor "Text", with: "Version 1b"
expect(page).to have_content "You've edited the text"
dismiss_confirm(prompt) do
click_link "Proposals", match: :first
end
expect(page).to have_current_path(path)
end
scenario "asks for confimation after the page is restored from browser history" do
visit path
fill_in_markdown_editor "Text", with: "Version 1b"
accept_confirm(prompt) do
click_link "Proposals", match: :first
end
expect(page).to have_css("h2", text: "Proposals")
go_back
expect(page).to have_content version.process.title
accept_confirm(prompt) do
click_link "Proposals", match: :first
end
expect(page).to have_css("h2", text: "Proposals")
end
scenario "does not ask for confirmation when restoring the original content" do
visit path
fill_in_markdown_editor "Text", with: "Version 1b"
accept_confirm(prompt) do
click_link "Proposals", match: :first
end
expect(page).to have_css("h2", text: "Proposals")
go_back
fill_in_markdown_editor "Text", with: "Version 1"
expect(page).not_to have_content "You've edited the text"
click_link "Proposals", match: :first
expect(page).to have_css("h2", text: "Proposals")
end
end
end