diff --git a/spec/features/admin/budget_groups_spec.rb b/spec/features/admin/budget_groups_spec.rb new file mode 100644 index 000000000..b07e53a46 --- /dev/null +++ b/spec/features/admin/budget_groups_spec.rb @@ -0,0 +1,67 @@ +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(I18n.t("admin.budgets.form.edit_group" )) + end + end + + scenario "Change name", :js do + visit admin_budget_path(group.budget) + within("#budget_group_#{group.id}") do + click_link I18n.t("admin.budgets.form.edit_group" ) + within("#group-form-#{group.id}") do + fill_in 'budget_group_name', with: 'Google' + click_button I18n.t("admin.budgets.form.submit" ) + 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 I18n.t("admin.budgets.form.edit_group" ) + within("#group-form-#{group.id}") do + fill_in 'budget_group_name', with: 'Google' + click_button I18n.t("admin.budgets.form.submit" ) + 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 I18n.t("admin.budgets.form.edit_group" ) + within("#group-form-#{group.id}") do + fill_in 'budget_group_name', with: 'group_name' + click_button I18n.t("admin.budgets.form.submit" ) + end + end + + expect(page).to have_content(I18n.t("errors.messages.taken")) + end + +end