diff --git a/app/assets/javascripts/budget_edit_associations.js b/app/assets/javascripts/budget_edit_associations.js index e37c6e27a..83c7ae3a6 100644 --- a/app/assets/javascripts/budget_edit_associations.js +++ b/app/assets/javascripts/budget_edit_associations.js @@ -2,13 +2,13 @@ "use strict"; App.BudgetEditAssociations = { initialize: function() { - $(".js-budget-list-checkbox-user").on({ - click: function() { + $(".js-budget-users-list [type='checkbox']").on({ + change: function() { var admin_count, tracker_count, valuator_count; - admin_count = $(".js-budget-list-checkbox-administrators:checkbox:checked").length; - valuator_count = $(".js-budget-list-checkbox-valuators:checkbox:checked").length; - tracker_count = $(".js-budget-list-checkbox-trackers:checkbox:checked").length; + admin_count = $("#administrators_list :checked").length; + valuator_count = $("#valuators_list :checked").length; + tracker_count = $("#trackers_list :checked").length; App.I18n.set_pluralize($(".js-budget-show-administrators-list"), admin_count); App.I18n.set_pluralize($(".js-budget-show-valuators-list"), valuator_count); diff --git a/app/views/admin/budgets/_association.html.erb b/app/views/admin/budgets/_association.html.erb index 72b852ac2..026a47ca6 100644 --- a/app/views/admin/budgets/_association.html.erb +++ b/app/views/admin/budgets/_association.html.erb @@ -3,23 +3,9 @@

<%= t("admin.budgets.edit.empty_#{assignable_type}") %>

<% else %>

<%= t("admin.budgets.edit.#{assignable_type}", count: 0) %>

- - - - - - - - - <% assignables.each do |assignable| %> - - - - - <% end %> - -
<%= t("admin.budgets.edit.name") %><%= t("admin.budgets.edit.selected") %>
<%= assignable.name %> - class="js-budget-list-checkbox-<%= assignable_type %> js-budget-list-checkbox-user"> -
+ <% field = "#{assignable_type.chomp("s")}_ids" %> + <%= form.collection_check_boxes field, assignables, :id, :name do |box| %> + <%= box.label { box.check_box + box.text } %> + <% end %> <% end %> diff --git a/app/views/admin/budgets/_form.html.erb b/app/views/admin/budgets/_form.html.erb index ea8624a2a..c1d81fc09 100644 --- a/app/views/admin/budgets/_form.html.erb +++ b/app/views/admin/budgets/_form.html.erb @@ -33,9 +33,9 @@
- <%= render "/admin/budgets/association", assignable_type: "administrators", assignables: @admins, budget: @budget %> - <%= render "/admin/budgets/association", assignable_type: "valuators", assignables: @valuators, budget: @budget %> - <%= render "/admin/budgets/association", assignable_type: "trackers", assignables: @trackers, budget: @budget %> + <%= render "/admin/budgets/association", assignable_type: "administrators", assignables: @admins, form: f %> + <%= render "/admin/budgets/association", assignable_type: "valuators", assignables: @valuators, form: f %> + <%= render "/admin/budgets/association", assignable_type: "trackers", assignables: @trackers, form: f %>
diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index b684b81d9..b0492af8d 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -109,8 +109,6 @@ en: empty_administrators: "There are no administrators" empty_valuators: "There are no valuators" empty_trackers: "There are no trackers" - name: "Name" - selected: "Selected" destroy: success_notice: Budget deleted successfully unable_notice: You cannot delete a budget that has associated investments diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index 502d5aa34..6c33aed7b 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -109,8 +109,6 @@ es: empty_administrators: "No hay administradores" empty_valuators: "No hay evaluadores" empty_trackers: "No hay gestores de seguimiento" - name: "Nombre" - selected: "Seleccionado" destroy: success_notice: Presupuesto eliminado correctamente unable_notice: No se puede eliminar un presupuesto con proyectos asociados diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb index 3bb12abdb..9345919a5 100644 --- a/spec/features/admin/budget_investments_spec.rb +++ b/spec/features/admin/budget_investments_spec.rb @@ -1086,14 +1086,15 @@ describe "Admin budget investments" do expect(page).not_to have_content "Mark as incompatible" end - scenario "Add administrator" do + scenario "Add administrator", :js do budget_investment = create(:budget_investment) user = create(:user, username: "Marta", email: "marta@admins.org") create(:administrator, user: user, description: "Marta desc") visit edit_admin_budget_path(budget_investment.budget) - check "administrator_#{user.id}" + click_link "Select administrators" + check "Marta" click_button "Update Budget" visit admin_budget_budget_investment_path(budget_investment.budget, budget_investment) @@ -1119,8 +1120,8 @@ describe "Admin budget investments" do visit edit_admin_budget_path(budget_investment.budget) - check "valuator_#{user1.id}" - check "valuator_#{user3.id}" + check "Valentina" + check "Val" click_button "Update Budget" visit admin_budget_budget_investment_path(budget_investment.budget, budget_investment) diff --git a/spec/features/admin/budgets_spec.rb b/spec/features/admin/budgets_spec.rb index f9da1414a..fa1f747a4 100644 --- a/spec/features/admin/budgets_spec.rb +++ b/spec/features/admin/budgets_spec.rb @@ -232,13 +232,8 @@ describe "Admin budgets" do end context "Update" do - before do - create(:budget) - end - scenario "Update budget" do - visit admin_budgets_path - click_link "Edit budget" + visit edit_admin_budget_path(create(:budget)) fill_in "Name", with: "More trees on the streets" click_button "Update Budget" @@ -246,6 +241,37 @@ describe "Admin budgets" do expect(page).to have_content("More trees on the streets") expect(page).to have_current_path(admin_budgets_path) end + + scenario "Deselect all selected staff", :js do + admin = Administrator.first + valuator = create(:valuator) + tracker = create(:tracker) + + budget = create(:budget, administrators: [admin], valuators: [valuator], trackers: [tracker]) + + visit edit_admin_budget_path(budget) + click_link "1 administrator selected" + uncheck admin.name + + expect(page).to have_link "Select administrators" + + click_link "1 valuator selected" + uncheck valuator.name + + expect(page).to have_link "Select valuators" + + click_link "1 tracker selected" + uncheck tracker.name + + expect(page).to have_link "Select trackers" + + click_button "Update Budget" + visit edit_admin_budget_path(budget) + + expect(page).to have_link "Select administrators" + expect(page).to have_link "Select valuators" + expect(page).to have_link "Select trackers" + end end context "Calculate Budget's Winner Investments" do