From 8f4d48690b1ebf773670ccb0de0d5551f5536d07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Fuentes?= Date: Tue, 13 Feb 2018 16:13:05 +0100 Subject: [PATCH] Added tests for edit the name of any Budget::Group --- spec/features/admin/budget_groups_spec.rb | 67 +++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 spec/features/admin/budget_groups_spec.rb 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