This way we finish what we started in commit 1046ec5e7, making the menu
easier to customize.
178 lines
6.2 KiB
Ruby
178 lines
6.2 KiB
Ruby
require "rails_helper"
|
|
|
|
describe "Budgets wizard, headings step", :admin do
|
|
let(:budget) { create(:budget, :drafting) }
|
|
let(:group) { create(:budget_group, budget: budget, name: "Default group") }
|
|
|
|
describe "Index" do
|
|
scenario "back to a previous step" do
|
|
visit admin_budgets_wizard_budget_group_headings_path(budget, group)
|
|
|
|
within "#side_menu" do
|
|
expect(page).to have_css "[aria-current]", exact_text: "Participatory budgets"
|
|
end
|
|
|
|
click_link "Go back to groups"
|
|
|
|
expect(page).to have_css "tr", text: "Default group"
|
|
expect(page).to have_css ".creation-timeline"
|
|
end
|
|
|
|
scenario "change to another group" do
|
|
economy = create(:budget_group, budget: budget, name: "Economy")
|
|
health = create(:budget_group, budget: budget, name: "Health")
|
|
create(:budget_group, budget: budget, name: "Technology")
|
|
|
|
create(:budget_heading, group: economy, name: "Banking")
|
|
create(:budget_heading, group: health, name: "Hospitals")
|
|
|
|
visit admin_budgets_wizard_budget_group_headings_path(budget, economy)
|
|
|
|
within(".heading") do
|
|
expect(page).to have_content "Banking"
|
|
expect(page).not_to have_content "Hospitals"
|
|
end
|
|
|
|
expect(page).not_to have_link "Health"
|
|
|
|
click_button "Manage headings from a different group"
|
|
click_link "Health"
|
|
|
|
within(".heading") do
|
|
expect(page).to have_content "Hospitals"
|
|
expect(page).not_to have_content "Banking"
|
|
end
|
|
expect(page).to have_css ".creation-timeline"
|
|
end
|
|
end
|
|
|
|
describe "New" do
|
|
scenario "cancel creating a heading" do
|
|
visit admin_budgets_wizard_budget_group_headings_path(budget, group)
|
|
|
|
expect(page).not_to have_field "Heading name"
|
|
expect(page).not_to have_button "Cancel"
|
|
expect(page).to have_content "Continue to phases"
|
|
|
|
click_button "Add new heading"
|
|
|
|
expect(page).to have_field "Heading name"
|
|
expect(page).not_to have_button "Add new heading"
|
|
expect(page).not_to have_content "Continue to phases"
|
|
|
|
click_button "Cancel"
|
|
|
|
expect(page).to have_button "Add new heading"
|
|
expect(page).not_to have_field "Heading name"
|
|
expect(page).not_to have_button "Cancel"
|
|
expect(page).to have_content "Continue to phases"
|
|
end
|
|
|
|
scenario "submit the form with errors" do
|
|
visit admin_budgets_wizard_budget_group_headings_path(budget, group)
|
|
click_button "Add new heading"
|
|
|
|
click_button "Create new heading"
|
|
|
|
expect(page).not_to have_content "Heading created successfully!"
|
|
expect(page).to have_css(".is-invalid-label", text: "Heading name")
|
|
expect(page).to have_content "can't be blank"
|
|
expect(page).to have_button "Create new heading"
|
|
expect(page).to have_button "Cancel"
|
|
expect(page).not_to have_button "Add new heading"
|
|
expect(page).not_to have_content "Continue to phases"
|
|
|
|
within ".budgets-help" do
|
|
expect(page).to have_content "Headings are meant"
|
|
expect(page).not_to have_content "{"
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "Edit" do
|
|
scenario "update heading" do
|
|
create(:budget_heading, group: group, name: "Heading wiht a typo")
|
|
|
|
visit admin_budgets_wizard_budget_group_headings_path(budget, group)
|
|
|
|
expect(page).to have_css ".creation-timeline"
|
|
|
|
within("tr", text: "Heading wiht a typo") { click_link "Edit" }
|
|
fill_in "Heading name", with: "Heading without typos"
|
|
click_button "Save heading"
|
|
|
|
expect(page).to have_content "Heading updated successfully"
|
|
expect(page).to have_css ".creation-timeline"
|
|
expect(page).to have_css "td", exact_text: "Heading without typos"
|
|
end
|
|
|
|
scenario "submit the form with errors and then without errors" do
|
|
heading = create(:budget_heading, group: group, name: "Heading wiht a typo")
|
|
|
|
visit edit_admin_budgets_wizard_budget_group_heading_path(budget, group, heading)
|
|
fill_in "Heading name", with: ""
|
|
click_button "Save heading"
|
|
|
|
expect(page).to have_css "#error_explanation"
|
|
expect(page).to have_css ".creation-timeline"
|
|
|
|
fill_in "Heading name", with: "Heading without typos"
|
|
click_button "Save heading"
|
|
|
|
expect(page).to have_content "Heading updated successfully"
|
|
expect(page).to have_css ".creation-timeline"
|
|
expect(page).to have_css "td", exact_text: "Heading without typos"
|
|
end
|
|
|
|
scenario "update heading in single heading budget" do
|
|
visit admin_budgets_wizard_budget_group_headings_path(budget, group, mode: "single")
|
|
fill_in "Heading name", with: "Heading wiht typo"
|
|
fill_in "Money amount", with: "300000"
|
|
click_button "Continue to phases"
|
|
|
|
expect(page).to have_content "Heading created successfully"
|
|
|
|
click_link "Go back to edit heading"
|
|
|
|
expect(page).to have_field "Heading name", with: "Heading wiht typo"
|
|
|
|
fill_in "Heading name", with: "Heading without typos"
|
|
click_button "Continue to phases"
|
|
|
|
expect(page).to have_content "Heading updated successfully"
|
|
|
|
visit admin_budget_path(budget)
|
|
|
|
within "section", text: "Heading groups" do
|
|
within("tbody tr") { expect(page).to have_content "Heading without typos" }
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "Destroy" do
|
|
scenario "delete a heading without investments" do
|
|
create(:budget_heading, group: group, name: "Delete me!")
|
|
|
|
visit admin_budgets_wizard_budget_group_headings_path(budget, group)
|
|
within("tr", text: "Delete me!") { accept_confirm { click_button "Delete" } }
|
|
|
|
expect(page).to have_content "Heading deleted successfully"
|
|
expect(page).not_to have_content "Delete me!"
|
|
expect(page).to have_css ".creation-timeline"
|
|
end
|
|
|
|
scenario "try to delete a heading with investments" do
|
|
heading = create(:budget_heading, group: group, name: "Don't delete me!")
|
|
create(:budget_investment, heading: heading)
|
|
|
|
visit admin_budgets_wizard_budget_group_headings_path(budget, group)
|
|
|
|
within("tr", text: "Don't delete me!") { accept_confirm { click_button "Delete" } }
|
|
|
|
expect(page).to have_content "You cannot delete a Heading that has associated investments"
|
|
expect(page).to have_content "Don't delete me!"
|
|
expect(page).to have_css ".creation-timeline"
|
|
end
|
|
end
|
|
end
|