Files
nairobi/spec/system/admin/budget_groups_spec.rb
Javi Martín 1e305440f8 Change header text in groups and headings section
The text "Groups and headings" might cause users to think both groups
and headings have the same hierarchy, and wonder whether what they
immediately see are groups or headings.

Using "Heading groups" we make it clear that what comes immediately is a
group, and then we see each group has headings.
2021-10-25 18:34:19 +02:00

204 lines
6.8 KiB
Ruby

require "rails_helper"
describe "Admin budget groups", :admin do
let(:budget) { create(:budget, :drafting) }
context "Load" do
let!(:budget) { create(:budget, slug: "budget_slug") }
let!(:group) { create(:budget_group, slug: "group_slug", budget: budget) }
scenario "finds budget and group by slug" do
visit edit_admin_budget_group_path("budget_slug", "group_slug")
expect(page).to have_content(budget.name)
expect(page).to have_field "Group name", with: group.name
end
end
context "List of groups from budget page" do
scenario "Displaying no groups for budget" do
visit admin_budget_path(budget)
within "section", text: "Heading groups" do
expect(page.text).to eq "Heading groups\nAdd group"
end
end
scenario "Displaying groups" do
above = create(:budget_group, budget: budget, name: "Above ground")
below = create(:budget_group, budget: budget, name: "Below ground")
1.times { create(:budget_heading, group: above) }
2.times { create(:budget_heading, group: below) }
visit admin_budget_path(budget)
within "section", text: "Heading groups" do
within "section", text: "Above ground" do
expect(page).to have_css "h4", exact_text: "Above ground"
expect(page).not_to have_content "Maximum number of headings"
end
within "section", text: "Below ground" do
expect(page).to have_css "h4", exact_text: "Below ground"
expect(page).to have_content "Maximum number of headings in which a user can select projects 1"
end
end
end
scenario "Delete a group without headings" do
create(:budget_group, budget: budget, name: "Nowhere")
visit admin_budget_path(budget)
accept_confirm { click_button "Delete Nowhere" }
expect(page).to have_content "Group deleted successfully"
expect(page).not_to have_content "Nowhere"
end
scenario "Try to delete a group with headings" do
group = create(:budget_group, budget: budget, name: "Everywhere")
create(:budget_heading, group: group, name: "Everything")
visit admin_budget_path(budget)
accept_confirm { click_button "Delete Everywhere" }
expect(page).to have_content "You cannot delete a Group that has associated headings"
expect(page).to have_content "Everywhere"
end
end
context "New" do
scenario "Create group" do
visit admin_budget_path(budget)
click_link "Add group"
fill_in "Group name", with: "All City"
click_button "Create new group"
expect(page).to have_content "Group created successfully!"
within "section", text: "Heading groups" do
expect(page).to have_css "h4", exact_text: "All City"
end
end
scenario "Group name is mandatory" do
visit new_admin_budget_group_path(budget)
click_button "Create new group"
expect(page).not_to have_content "Group created successfully!"
expect(page).to have_css(".is-invalid-label", text: "Group name")
expect(page).to have_content "can't be blank"
end
end
context "Edit" do
scenario "Show group information" do
group = create(:budget_group, budget: budget, name: "Everywhere", max_votable_headings: 2)
2.times { create(:budget_heading, group: group) }
visit admin_budget_path(budget)
click_link "Edit Everywhere"
expect(page).to have_field "Group name", with: "Everywhere"
expect(page).to have_field "Maximum number of headings in which a user can select projects", with: "2"
end
describe "Select for maximum number of headings to select projects" do
scenario "is present if there are several headings in the group" do
group = create(:budget_group, budget: budget)
2.times { create(:budget_heading, group: group) }
visit edit_admin_budget_group_path(budget, group)
expect(page).to have_field "Maximum number of headings in which a user can select projects"
end
scenario "is not present if there's only one heading in the group" do
group = create(:budget_group, budget: budget)
create(:budget_heading, group: group)
visit edit_admin_budget_group_path(budget, group)
expect(page).not_to have_field "Maximum number of headings in which a user can select projects"
end
scenario "is not present if there are no headings in the group" do
group = create(:budget_group, budget: budget)
visit edit_admin_budget_group_path(budget, group)
expect(page).not_to have_field "Maximum number of headings in which a user can select projects"
end
end
scenario "Changing name for current locale will update the slug if budget is in draft phase" do
group = create(:budget_group, budget: budget, name: "Old English Name")
visit edit_admin_budget_group_path(budget, group)
select "Español", from: :add_language
fill_in "Group name", with: "Spanish name"
click_button "Save group"
expect(page).to have_content "Group updated successfully"
visit budget_group_path(budget, id: "old-english-name")
expect(page).to have_content "Select a heading"
visit edit_admin_budget_group_path(budget, group)
select "English", from: :select_language
fill_in "Group name", with: "New English Name"
click_button "Save group"
expect(page).to have_content "Group updated successfully"
visit budget_group_path(budget, id: "new-english-name")
expect(page).to have_content "Select a heading"
end
end
context "Update" do
let!(:group) { create(:budget_group, budget: budget, name: "All City") }
scenario "Updates group" do
2.times { create(:budget_heading, group: group) }
visit edit_admin_budget_group_path(budget, group)
expect(page).to have_field "Group name", with: "All City"
fill_in "Group name", with: "Districts"
select "2", from: "Maximum number of headings in which a user can select projects"
click_button "Save group"
expect(page).to have_content "Group updated successfully"
visit edit_admin_budget_group_path(budget, group)
expect(page).to have_field "Group name", with: "Districts"
expect(page).to have_field "Maximum number of headings in which a user can select projects", with: "2"
end
scenario "Group name is already used" do
create(:budget_group, budget: budget, name: "Districts")
visit edit_admin_budget_group_path(budget, group)
expect(page).to have_field "Group name", with: "All City"
fill_in "Group name", with: "Districts"
click_button "Save group"
expect(page).not_to have_content "Group updated successfully"
expect(page).to have_css(".is-invalid-label", text: "Group name")
expect(page).to have_css("small.form-error", text: "has already been taken")
end
end
end