114 lines
2.9 KiB
Ruby
114 lines
2.9 KiB
Ruby
require 'rails_helper'
|
|
|
|
feature 'Admin can change the groups name' do
|
|
|
|
let(:budget) { create(:budget, phase: 'drafting') }
|
|
let(:group) { create(:budget_group, budget: budget) }
|
|
|
|
background do
|
|
admin = create(:administrator)
|
|
login_as(admin.user)
|
|
end
|
|
|
|
scenario "Show button" do
|
|
visit admin_budget_path(group.budget)
|
|
|
|
within("#budget_group_#{group.id}") do
|
|
expect(page).to have_content('Edit group')
|
|
end
|
|
end
|
|
|
|
scenario "Change name", :js do
|
|
visit admin_budget_path(group.budget)
|
|
within("#budget_group_#{group.id}") do
|
|
click_link 'Edit group'
|
|
within("#group-form-#{group.id}") do
|
|
fill_in 'budget_group_name', with: 'Google'
|
|
click_button 'Save group'
|
|
end
|
|
end
|
|
|
|
expect(page).to have_content('Google')
|
|
end
|
|
|
|
scenario "Can change name when the budget isn't drafting, but the slug remains", :js do
|
|
old_slug = group.slug
|
|
budget.update(phase: 'reviewing')
|
|
visit admin_budget_path(group.budget)
|
|
|
|
within("#budget_group_#{group.id}") do
|
|
click_link 'Edit group'
|
|
within("#group-form-#{group.id}") do
|
|
fill_in 'budget_group_name', with: 'Google'
|
|
click_button 'Save group'
|
|
end
|
|
end
|
|
|
|
group.reload
|
|
|
|
expect(page).to have_content('Google')
|
|
expect(group.slug).to eq old_slug
|
|
end
|
|
|
|
scenario "Can't repeat names", :js do
|
|
group.budget.groups << create(:budget_group, name: 'group_name')
|
|
visit admin_budget_path(group.budget)
|
|
|
|
within("#budget_group_#{group.id}") do
|
|
click_link 'Edit group'
|
|
within("#group-form-#{group.id}") do
|
|
fill_in 'budget_group_name', with: 'group_name'
|
|
click_button 'Save group'
|
|
end
|
|
end
|
|
|
|
expect(page).to have_content('has already been taken')
|
|
end
|
|
|
|
context "Maximum votable headings" do
|
|
|
|
background do
|
|
3.times { create(:budget_heading, group: group) }
|
|
end
|
|
|
|
scenario "Defaults to 1 heading per group", :js do
|
|
visit admin_budget_path(group.budget)
|
|
|
|
within("#budget_group_#{group.id}") do
|
|
click_link 'Edit group'
|
|
|
|
expect(page).to have_select('budget_group_max_votable_headings', selected: '1')
|
|
end
|
|
end
|
|
|
|
scenario "Update", :js do
|
|
visit admin_budget_path(group.budget)
|
|
|
|
within("#budget_group_#{group.id}") do
|
|
click_link 'Edit group'
|
|
|
|
select '2', from: 'budget_group_max_votable_headings'
|
|
click_button 'Save group'
|
|
end
|
|
|
|
visit admin_budget_path(group.budget)
|
|
|
|
within("#budget_group_#{group.id}") do
|
|
click_link 'Edit group'
|
|
|
|
expect(page).to have_select('budget_group_max_votable_headings', selected: '2')
|
|
end
|
|
end
|
|
|
|
scenario "Do not display maxium votable headings' select in new form", :js do
|
|
visit admin_budget_path(group.budget)
|
|
|
|
click_link 'Add new group'
|
|
|
|
expect(page).to have_field('budget_group_name')
|
|
expect(page).to_not have_field('budget_group_max_votable_headings')
|
|
end
|
|
|
|
end
|
|
end
|