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) %>
-
+ <% 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