From c9f31b8e1eac7a0c407eb1ca2e29765332ee0da6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Fuentes?= Date: Thu, 15 Feb 2018 16:03:44 +0100 Subject: [PATCH 1/7] Refactor Admin::Budget::Investment search form to use one form tag --- .../_advanced_filters.html.erb | 45 ------------ .../budget_investments/_search_form.html.erb | 72 ++++++++++++++++--- .../admin/budget_investments/index.html.erb | 36 ---------- 3 files changed, 62 insertions(+), 91 deletions(-) delete mode 100644 app/views/admin/budget_investments/_advanced_filters.html.erb diff --git a/app/views/admin/budget_investments/_advanced_filters.html.erb b/app/views/admin/budget_investments/_advanced_filters.html.erb deleted file mode 100644 index 017d8e63f..000000000 --- a/app/views/admin/budget_investments/_advanced_filters.html.erb +++ /dev/null @@ -1,45 +0,0 @@ -<%= link_to "#advanced_filters_content", - data: {toggle: "advanced_filters"}, - class: "advanced-filters float-right clear" do %> - <%= t("admin.budget_investments.index.advanced_filters") %> -<% end %> - -
- <%= form_tag(admin_budget_budget_investments_path(budget: @budget, - filter: params[:filter], - sort_by: params[:sort_by], - max_per_heading: params[:max_per_heading], - advanced_filters: params[:advanced_filters], - page: 1), method: :get, remote: true, enforce_utf8: false) do %> -
- - <%= check_box_tag "advanced_filters[]", "feasible" %> - <%= t("#{i18n_namespace}.filters.feasible") %> - - - - <%= check_box_tag "advanced_filters[]", "selected" %> - <%= t("#{i18n_namespace}.filters.selected") %> - - - - <%= check_box_tag "advanced_filters[]", "undecided" %> - <%= t("#{i18n_namespace}.filters.undecided") %> - - - - <%= check_box_tag "advanced_filters[]", "unfeasible" %> - <%= t("#{i18n_namespace}.filters.unfeasible") %> - - - - <%= t("#{i18n_namespace}.filters.max_per_heading") %> - <%= text_field_tag :max_per_heading %> - -
- -
- <%= submit_tag t("admin.budget_investments.index.buttons.filter"), class: "button expanded" %> -
- <% end %> -
diff --git a/app/views/admin/budget_investments/_search_form.html.erb b/app/views/admin/budget_investments/_search_form.html.erb index 11f99e221..c28fbb70a 100644 --- a/app/views/admin/budget_investments/_search_form.html.erb +++ b/app/views/admin/budget_investments/_search_form.html.erb @@ -1,12 +1,64 @@ -
- <%= form_for(Budget::Investment.new, url: admin_budget_budget_investments_path(budget: @budget), - method: :get, - remote: true) do |f| %> -
- <%= text_field_tag :title_or_id, "", placeholder: t("admin.budget_investments.index.placeholder") %> -
- <%= f.submit t("admin.budget_investments.index.buttons.search"), class: "button" %> +<% i18n_namespace = "admin.budget_investments.index" %> + +<%= form_tag(admin_budget_budget_investments_path(budget: @budget), method: :get, enforce_utf8: false) do %> +
+
+ <%= link_to "#advanced_filters_content", + data: {toggle: "advanced_filters"}, + class: "advanced-filters float-right clear" do %> + <%= t("#{i18n_namespace}.advanced_filters") %> + <% end %> +
+
+
+ <% ["feasible", "selected", "undecided", "unfeasible"].each do |option| %> +
+
+ <%= check_box_tag "advanced_filters[]", option, false, id: "advanced_filters_#{option}" %> + <%= t("#{i18n_namespace}.filters.#{option}") %> +
+
+ <% end %> +
+
+ <%= text_field_tag :max_per_heading, "", placeholder: t("#{i18n_namespace}.filters.max_per_heading") %>
- <% end %> -
+
+
+
+ <%= select_tag :administrator_id, + options_for_select(admin_select_options, params[:administrator_id]), + { prompt: t("#{i18n_namespace}.administrator_filter_all"), + label: false} %> +
+
+ <%= select_tag :valuator_or_group_id, + options_for_select(valuator_or_group_select_options, params[:valuator_or_group_id]), + { prompt: t("#{i18n_namespace}.valuator_filter_all"), + label: false} %> +
+
+ <%= select_tag :heading_id, + options_for_select(budget_heading_select_options(@budget), params[:heading_id]), + { prompt: t("#{i18n_namespace}.heading_filter_all"), + label: false} %> +
+
+ <%= select_tag :tag_name, + options_for_select(investment_tags_select_options(@budget), params[:tag_name]), + { prompt: t("#{i18n_namespace}.tags_filter_all"), + label: false} %> +
+
+
+
+
+ <%= text_field_tag :title_or_id, "", placeholder: t("#{i18n_namespace}.placeholder") %> +
+
+
+ <%= submit_tag t("#{i18n_namespace}.buttons.filter"), class: "button expanded" %> +
+
+<% end %> diff --git a/app/views/admin/budget_investments/index.html.erb b/app/views/admin/budget_investments/index.html.erb index f2672f564..09b6e875b 100644 --- a/app/views/admin/budget_investments/index.html.erb +++ b/app/views/admin/budget_investments/index.html.erb @@ -8,42 +8,6 @@ <%= render "search_form" %> -<%= form_tag(admin_budget_budget_investments_path(budget: @budget), method: :get, enforce_utf8: false) do %> -
- <%= select_tag :administrator_id, - options_for_select(admin_select_options, params[:administrator_id]), - { prompt: t("admin.budget_investments.index.administrator_filter_all"), - label: false, - class: "js-submit-on-change" } %> -
- -
- <%= select_tag :valuator_or_group_id, - options_for_select(valuator_or_group_select_options, params[:valuator_or_group_id]), - { prompt: t("admin.budget_investments.index.valuator_filter_all"), - label: false, - class: "js-submit-on-change" } %> -
- -
- <%= select_tag :heading_id, - options_for_select(budget_heading_select_options(@budget), params[:heading_id]), - { prompt: t("admin.budget_investments.index.heading_filter_all"), - label: false, - class: "js-submit-on-change" } %> -
- -
- <%= select_tag :tag_name, - options_for_select(investment_tags_select_options(@budget), params[:tag_name]), - { prompt: t("admin.budget_investments.index.tags_filter_all"), - label: false, - class: "js-submit-on-change" } %> -
-<% end %> - -<%= render "advanced_filters", i18n_namespace: "admin.budget_investments.index" %> - <%= render "/shared/filter_subnav", i18n_namespace: "admin.budget_investments.index" %>
From 4cd2f11723f343a89c0e1d5afe4c22bc5daf8e4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Fuentes?= Date: Thu, 15 Feb 2018 18:11:06 +0100 Subject: [PATCH 2/7] Fixed test for the refactored form --- .../features/admin/budget_investments_spec.rb | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb index 1cc2c36a3..c513a18c3 100644 --- a/spec/features/admin/budget_investments_spec.rb +++ b/spec/features/admin/budget_investments_spec.rb @@ -137,11 +137,13 @@ feature 'Admin budget investments' do expect(page).to have_link("Plant trees") select "Central Park", from: "heading_id" + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).not_to have_link("Realocate visitors") expect(page).not_to have_link("Change name") expect(page).to have_link("Plant trees") + click_button I18n.t("admin.budget_investments.index.buttons.filter") select "All headings", from: "heading_id" expect(page).to have_link("Realocate visitors") @@ -149,6 +151,7 @@ feature 'Admin budget investments' do expect(page).to have_link("Plant trees") select "Streets: Main Avenue", from: "heading_id" + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).to have_link("Realocate visitors") expect(page).not_to have_link("Change name") @@ -173,18 +176,22 @@ feature 'Admin budget investments' do expect(page).to have_link("Destroy the city") select "Admin 1", from: "administrator_id" + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).to have_content('There is 1 investment') expect(page).not_to have_link("Destroy the city") expect(page).to have_link("Realocate visitors") select "All administrators", from: "administrator_id" + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).to have_content('There are 2 investments') expect(page).to have_link("Destroy the city") expect(page).to have_link("Realocate visitors") select "Admin 1", from: "administrator_id" + click_button I18n.t("admin.budget_investments.index.buttons.filter") + expect(page).to have_content('There is 1 investment') expect(page).not_to have_link("Destroy the city") expect(page).to have_link("Realocate visitors") @@ -204,18 +211,21 @@ feature 'Admin budget investments' do expect(page).to have_link("Destroy the city") select "Valuator 1", from: "valuator_or_group_id" + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).to have_content('There is 1 investment') expect(page).not_to have_link("Destroy the city") expect(page).to have_link("Realocate visitors") select "All valuators", from: "valuator_or_group_id" + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).to have_content('There are 2 investments') expect(page).to have_link("Destroy the city") expect(page).to have_link("Realocate visitors") select "Valuator 1", from: "valuator_or_group_id" + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).to have_content('There is 1 investment') expect(page).not_to have_link("Destroy the city") expect(page).to have_link("Realocate visitors") @@ -237,18 +247,22 @@ feature 'Admin budget investments' do expect(page).to have_link("Build a theatre") select "Health", from: "valuator_or_group_id" + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).to have_content('There is 1 investment') expect(page).to have_link("Build a hospital") expect(page).not_to have_link("Build a theatre") select "All valuators", from: "valuator_or_group_id" + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).to have_content('There are 2 investments') expect(page).to have_link("Build a hospital") expect(page).to have_link("Build a theatre") select "Culture", from: "valuator_or_group_id" + click_button I18n.t("admin.budget_investments.index.buttons.filter") + expect(page).to have_content('There is 1 investment') expect(page).to have_link("Build a theatre") expect(page).not_to have_link("Build a hospital") @@ -418,7 +432,7 @@ feature 'Admin budget investments' do click_link 'Advanced filters' fill_in "max_per_heading", with: 5 - click_button 'Filter' + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).to have_content('There are 15 investments') expect(page).not_to have_link("Park with 2 supports") @@ -456,7 +470,7 @@ feature 'Admin budget investments' do expect(page).to have_content('Some other investment') fill_in 'title_or_id', with: 'Some investment' - click_button 'Search' + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).to have_content('Some investment') expect(page).not_to have_content('Some other investment') @@ -468,8 +482,13 @@ feature 'Admin budget investments' do expect(page).to have_content('Some investment') expect(page).to have_content('Some other investment') +<<<<<<< HEAD fill_in 'title_or_id', with: first_investment.id click_button 'Search' +======= + fill_in 'title_or_id', with: 999999 + click_button I18n.t("admin.budget_investments.index.buttons.filter") +>>>>>>> 901dbf6... Fixed test for the refactored form expect(page).to have_content('Some other investment') expect(page).not_to have_content('Some investment') @@ -851,7 +870,7 @@ feature 'Admin budget investments' do click_link 'Advanced filters' within('#advanced_filters') { find(:css, "#advanced_filters_[value='feasible']").set(true) } - click_button 'Filter' + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).not_to have_content(unfeasible_bi.title) expect(page).not_to have_content(feasible_bi.title) @@ -861,7 +880,7 @@ feature 'Admin budget investments' do within('#advanced_filters') { find(:css, "#advanced_filters_[value='selected']").set(true) } within('#advanced_filters') { find(:css, "#advanced_filters_[value='feasible']").set(false) } - click_button 'Filter' + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).not_to have_content(unfeasible_bi.title) expect(page).not_to have_content(feasible_bi.title) @@ -882,7 +901,7 @@ feature 'Admin budget investments' do click_link 'Advanced filters' within('#advanced_filters') { find(:css, "#advanced_filters_[value='undecided']").set(true) } - click_button 'Filter' + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).to have_content(undecided_bi.title) expect(page).not_to have_content(winner_bi.title) @@ -892,7 +911,7 @@ feature 'Admin budget investments' do expect(page).not_to have_content(feasible_vf_bi.title) within('#advanced_filters') { find(:css, "#advanced_filters_[value='unfeasible']").set(true) } - click_button 'Filter' + click_button I18n.t("admin.budget_investments.index.buttons.filter") expect(page).to have_content(undecided_bi.title) expect(page).to have_content(unfeasible_bi.title) @@ -936,7 +955,7 @@ feature 'Admin budget investments' do click_link 'Advanced filters' within('#advanced_filters') { find(:css, "#advanced_filters_[value='selected']").set(true) } - click_button 'Filter' + click_button I18n.t("admin.budget_investments.index.buttons.filter") within("#budget_investment_#{feasible_vf_bi.id}") do expect(page).not_to have_link('Select') @@ -948,7 +967,12 @@ feature 'Admin budget investments' do visit admin_budget_budget_investments_path(budget) click_link 'Advanced filters' within('#advanced_filters') { find(:css, "#advanced_filters_[value='selected']").set(true) } +<<<<<<< HEAD click_button 'Filter' +======= + + click_button I18n.t("admin.budget_investments.index.buttons.filter") +>>>>>>> 901dbf6... Fixed test for the refactored form expect(page).to have_content('There are 2 investments') From df899cde6e4b3bc683523f9c06344c32c2091975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Fuentes?= Date: Fri, 16 Feb 2018 10:58:59 +0100 Subject: [PATCH 3/7] Fixed html, now it reflects the current search also added serach by name or id to the Budget::Invesment search function --- .../admin/budget_investments_controller.rb | 8 +--- .../admin_budget_investments_helper.rb | 11 ++++++ app/models/budget/investment.rb | 28 +++++++------- .../budget_investments/_search_form.html.erb | 37 +++++++++---------- .../features/admin/budget_investments_spec.rb | 5 --- 5 files changed, 45 insertions(+), 44 deletions(-) create mode 100644 app/helpers/admin_budget_investments_helper.rb diff --git a/app/controllers/admin/budget_investments_controller.rb b/app/controllers/admin/budget_investments_controller.rb index 2c27259ee..0258c23a6 100644 --- a/app/controllers/admin/budget_investments_controller.rb +++ b/app/controllers/admin/budget_investments_controller.rb @@ -84,12 +84,8 @@ class Admin::BudgetInvestmentsController < Admin::BaseController end def load_investments - @investments = if params[:title_or_id].present? - Budget::Investment.search_by_title_or_id(params) - else - Budget::Investment.scoped_filter(params, @current_filter) - .order(sort_by(params[:sort_by])) - end + @investments = Budget::Investment.scoped_filter(params, @current_filter) + .order(sort_by(params[:sort_by])) @investments = @investments.page(params[:page]) unless request.format.csv? end diff --git a/app/helpers/admin_budget_investments_helper.rb b/app/helpers/admin_budget_investments_helper.rb new file mode 100644 index 000000000..742ff5bac --- /dev/null +++ b/app/helpers/admin_budget_investments_helper.rb @@ -0,0 +1,11 @@ +module AdminBudgetInvestmentsHelper + + def advanced_menu_visibility + (params[:advanced_filters].empty? && params["max_per_heading"].blank?) ? 'hide' : '' + end + + def init_advanced_menu + params[:advanced_filters] = [] unless params[:advanced_filters] + end + +end diff --git a/app/models/budget/investment.rb b/app/models/budget/investment.rb index 6a9b95cd4..ee3292fcd 100644 --- a/app/models/budget/investment.rb +++ b/app/models/budget/investment.rb @@ -109,14 +109,15 @@ class Budget budget = Budget.find_by(slug: params[:budget_id]) || Budget.find_by(id: params[:budget_id]) results = Investment.by_budget(budget) - results = limit_results(budget, params, results) if params[:max_per_heading].present? - results = results.where(group_id: params[:group_id]) if params[:group_id].present? - results = results.by_tag(params[:tag_name]) if params[:tag_name].present? - results = results.by_heading(params[:heading_id]) if params[:heading_id].present? - results = results.by_valuator(params[:valuator_id]) if params[:valuator_id].present? - results = results.by_valuator_group(params[:valuator_group_id]) if params[:valuator_group_id].present? - results = results.by_admin(params[:administrator_id]) if params[:administrator_id].present? - results = advanced_filters(params, results) if params[:advanced_filters].present? + results = limit_results(budget, params, results) if params[:max_per_heading].present? + results = results.where(group_id: params[:group_id]) if params[:group_id].present? + results = results.by_tag(params[:tag_name]) if params[:tag_name].present? + results = results.by_heading(params[:heading_id]) if params[:heading_id].present? + results = results.by_valuator(params[:valuator_id]) if params[:valuator_id].present? + results = results.by_valuator_group(params[:valuator_group_id]) if params[:valuator_group_id].present? + results = results.by_admin(params[:administrator_id]) if params[:administrator_id].present? + results = advanced_filters(params, results) if params[:advanced_filters].present? + results = search_by_title_or_id(params[:title_or_id].strip, results) if params[:title_or_id] results = results.send(current_filter) if current_filter.present? results.includes(:heading, :group, :budget, administrator: :user, valuators: :user) @@ -143,11 +144,12 @@ class Budget results.where("budget_investments.id IN (?)", ids) end - def self.search_by_title_or_id(params) - results = Investment.where(budget_id: params[:budget_id]) - - return results.where(id: params[:title_or_id]) if params[:title_or_id] =~ /\A[0-9]+\z/ - results.where("title ILIKE ?", "%#{params[:title_or_id].strip}%") + def self.search_by_title_or_id(title_or_id, results) + if title_or_id =~ /^[0-9]+$/ + results.where(id: title_or_id) + else + results.where("title ILIKE ?", "%#{title_or_id}%") + end end def searchable_values diff --git a/app/views/admin/budget_investments/_search_form.html.erb b/app/views/admin/budget_investments/_search_form.html.erb index c28fbb70a..0f3090c60 100644 --- a/app/views/admin/budget_investments/_search_form.html.erb +++ b/app/views/admin/budget_investments/_search_form.html.erb @@ -1,27 +1,24 @@ -<% i18n_namespace = "admin.budget_investments.index" %> - +<% init_advanced_menu %> <%= form_tag(admin_budget_budget_investments_path(budget: @budget), method: :get, enforce_utf8: false) do %>
<%= link_to "#advanced_filters_content", data: {toggle: "advanced_filters"}, class: "advanced-filters float-right clear" do %> - <%= t("#{i18n_namespace}.advanced_filters") %> + <%= t("admin.budget_investments.index.advanced_filters") %> <% end %>
-
- <% ["feasible", "selected", "undecided", "unfeasible"].each do |option| %> -
-
- <%= check_box_tag "advanced_filters[]", option, false, id: "advanced_filters_#{option}" %> - <%= t("#{i18n_namespace}.filters.#{option}") %> +
+
+ <% ["feasible", "selected", "undecided", "unfeasible"].each do |option| %> +
+ <%= check_box_tag "advanced_filters[]", option, params[:advanced_filters].index(option), id: "advanced_filters_#{option}" %> + <%= t("admin.budget_investments.index.filters.#{option}") %>
-
- <% end %> -
-
- <%= text_field_tag :max_per_heading, "", placeholder: t("#{i18n_namespace}.filters.max_per_heading") %> + <% end %> +
+ <%= text_field_tag :max_per_heading, params["max_per_heading"], placeholder: t("admin.budget_investments.index.filters.max_per_heading") %>
@@ -29,36 +26,36 @@
<%= select_tag :administrator_id, options_for_select(admin_select_options, params[:administrator_id]), - { prompt: t("#{i18n_namespace}.administrator_filter_all"), + { prompt: t("admin.budget_investments.index.administrator_filter_all"), label: false} %>
<%= select_tag :valuator_or_group_id, options_for_select(valuator_or_group_select_options, params[:valuator_or_group_id]), - { prompt: t("#{i18n_namespace}.valuator_filter_all"), + { prompt: t("admin.budget_investments.index.valuator_filter_all"), label: false} %>
<%= select_tag :heading_id, options_for_select(budget_heading_select_options(@budget), params[:heading_id]), - { prompt: t("#{i18n_namespace}.heading_filter_all"), + { prompt: t("admin.budget_investments.index.heading_filter_all"), label: false} %>
<%= select_tag :tag_name, options_for_select(investment_tags_select_options(@budget), params[:tag_name]), - { prompt: t("#{i18n_namespace}.tags_filter_all"), + { prompt: t("admin.budget_investments.index.tags_filter_all"), label: false} %>
- <%= text_field_tag :title_or_id, "", placeholder: t("#{i18n_namespace}.placeholder") %> + <%= text_field_tag :title_or_id, params["title_or_id"], placeholder: t("admin.budget_investments.index.placeholder") %>
- <%= submit_tag t("#{i18n_namespace}.buttons.filter"), class: "button expanded" %> + <%= submit_tag t("admin.budget_investments.index.buttons.filter"), class: "button expanded" %>
<% end %> diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb index c513a18c3..46dee4119 100644 --- a/spec/features/admin/budget_investments_spec.rb +++ b/spec/features/admin/budget_investments_spec.rb @@ -482,13 +482,8 @@ feature 'Admin budget investments' do expect(page).to have_content('Some investment') expect(page).to have_content('Some other investment') -<<<<<<< HEAD - fill_in 'title_or_id', with: first_investment.id - click_button 'Search' -======= fill_in 'title_or_id', with: 999999 click_button I18n.t("admin.budget_investments.index.buttons.filter") ->>>>>>> 901dbf6... Fixed test for the refactored form expect(page).to have_content('Some other investment') expect(page).not_to have_content('Some investment') From ee19c2fef051cfe59bcdb33928939f23a7e2f445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Fuentes?= Date: Fri, 16 Feb 2018 12:33:09 +0100 Subject: [PATCH 4/7] Fixed test for updated form --- .../features/admin/budget_investments_spec.rb | 62 +++++++++---------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb index 46dee4119..18336493c 100644 --- a/spec/features/admin/budget_investments_spec.rb +++ b/spec/features/admin/budget_investments_spec.rb @@ -137,27 +137,28 @@ feature 'Admin budget investments' do expect(page).to have_link("Plant trees") select "Central Park", from: "heading_id" - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).not_to have_link("Realocate visitors") expect(page).not_to have_link("Change name") expect(page).to have_link("Plant trees") - click_button I18n.t("admin.budget_investments.index.buttons.filter") select "All headings", from: "heading_id" + click_button 'Filter' expect(page).to have_link("Realocate visitors") expect(page).to have_link("Change name") expect(page).to have_link("Plant trees") select "Streets: Main Avenue", from: "heading_id" - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_link("Realocate visitors") expect(page).not_to have_link("Change name") expect(page).not_to have_link("Plant trees") select "Streets: Mercy Street", from: "heading_id" + click_button 'Filter' expect(page).not_to have_link("Realocate visitors") expect(page).to have_link("Change name") @@ -176,21 +177,21 @@ feature 'Admin budget investments' do expect(page).to have_link("Destroy the city") select "Admin 1", from: "administrator_id" - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_content('There is 1 investment') expect(page).not_to have_link("Destroy the city") expect(page).to have_link("Realocate visitors") select "All administrators", from: "administrator_id" - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_content('There are 2 investments') expect(page).to have_link("Destroy the city") expect(page).to have_link("Realocate visitors") select "Admin 1", from: "administrator_id" - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_content('There is 1 investment') expect(page).not_to have_link("Destroy the city") @@ -211,21 +212,21 @@ feature 'Admin budget investments' do expect(page).to have_link("Destroy the city") select "Valuator 1", from: "valuator_or_group_id" - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_content('There is 1 investment') expect(page).not_to have_link("Destroy the city") expect(page).to have_link("Realocate visitors") select "All valuators", from: "valuator_or_group_id" - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_content('There are 2 investments') expect(page).to have_link("Destroy the city") expect(page).to have_link("Realocate visitors") select "Valuator 1", from: "valuator_or_group_id" - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_content('There is 1 investment') expect(page).not_to have_link("Destroy the city") expect(page).to have_link("Realocate visitors") @@ -247,21 +248,21 @@ feature 'Admin budget investments' do expect(page).to have_link("Build a theatre") select "Health", from: "valuator_or_group_id" - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_content('There is 1 investment') expect(page).to have_link("Build a hospital") expect(page).not_to have_link("Build a theatre") select "All valuators", from: "valuator_or_group_id" - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_content('There are 2 investments') expect(page).to have_link("Build a hospital") expect(page).to have_link("Build a theatre") select "Culture", from: "valuator_or_group_id" - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_content('There is 1 investment') expect(page).to have_link("Build a theatre") @@ -432,7 +433,7 @@ feature 'Admin budget investments' do click_link 'Advanced filters' fill_in "max_per_heading", with: 5 - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_content('There are 15 investments') expect(page).not_to have_link("Park with 2 supports") @@ -470,7 +471,7 @@ feature 'Admin budget investments' do expect(page).to have_content('Some other investment') fill_in 'title_or_id', with: 'Some investment' - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_content('Some investment') expect(page).not_to have_content('Some other investment') @@ -483,7 +484,7 @@ feature 'Admin budget investments' do expect(page).to have_content('Some other investment') fill_in 'title_or_id', with: 999999 - click_button I18n.t("admin.budget_investments.index.buttons.filter") + click_button 'Filter' expect(page).to have_content('Some other investment') expect(page).not_to have_content('Some investment') @@ -864,8 +865,8 @@ feature 'Admin budget investments' do expect(page).to have_content(winner_bi.title) click_link 'Advanced filters' - within('#advanced_filters') { find(:css, "#advanced_filters_[value='feasible']").set(true) } - click_button I18n.t("admin.budget_investments.index.buttons.filter") + within('#advanced_filters') { find(:css, "#advanced_filters_feasible").set(true) } + click_button 'Filter' expect(page).not_to have_content(unfeasible_bi.title) expect(page).not_to have_content(feasible_bi.title) @@ -873,9 +874,9 @@ feature 'Admin budget investments' do expect(page).to have_content(selected_bi.title) expect(page).to have_content(winner_bi.title) - within('#advanced_filters') { find(:css, "#advanced_filters_[value='selected']").set(true) } - within('#advanced_filters') { find(:css, "#advanced_filters_[value='feasible']").set(false) } - click_button I18n.t("admin.budget_investments.index.buttons.filter") + within('#advanced_filters') { find(:css, "#advanced_filters_selected").set(true) } + within('#advanced_filters') { find(:css, "#advanced_filters_feasible").set(false) } + click_button 'Filter' expect(page).not_to have_content(unfeasible_bi.title) expect(page).not_to have_content(feasible_bi.title) @@ -895,8 +896,8 @@ feature 'Admin budget investments' do visit admin_budget_budget_investments_path(budget) click_link 'Advanced filters' - within('#advanced_filters') { find(:css, "#advanced_filters_[value='undecided']").set(true) } - click_button I18n.t("admin.budget_investments.index.buttons.filter") + within('#advanced_filters') { find(:css, "#advanced_filters_undecided").set(true) } + click_button 'Filter' expect(page).to have_content(undecided_bi.title) expect(page).not_to have_content(winner_bi.title) @@ -905,8 +906,8 @@ feature 'Admin budget investments' do expect(page).not_to have_content(unfeasible_bi.title) expect(page).not_to have_content(feasible_vf_bi.title) - within('#advanced_filters') { find(:css, "#advanced_filters_[value='unfeasible']").set(true) } - click_button I18n.t("admin.budget_investments.index.buttons.filter") + within('#advanced_filters') { find(:css, "#advanced_filters_unfeasible").set(true) } + click_button 'Filter' expect(page).to have_content(undecided_bi.title) expect(page).to have_content(unfeasible_bi.title) @@ -949,8 +950,8 @@ feature 'Admin budget investments' do end click_link 'Advanced filters' - within('#advanced_filters') { find(:css, "#advanced_filters_[value='selected']").set(true) } - click_button I18n.t("admin.budget_investments.index.buttons.filter") + within('#advanced_filters') { find(:css, "#advanced_filters_selected").set(true) } + click_button 'Filter' within("#budget_investment_#{feasible_vf_bi.id}") do expect(page).not_to have_link('Select') @@ -961,13 +962,10 @@ feature 'Admin budget investments' do scenario "Unselecting an investment", :js do visit admin_budget_budget_investments_path(budget) click_link 'Advanced filters' - within('#advanced_filters') { find(:css, "#advanced_filters_[value='selected']").set(true) } -<<<<<<< HEAD - click_button 'Filter' -======= - click_button I18n.t("admin.budget_investments.index.buttons.filter") ->>>>>>> 901dbf6... Fixed test for the refactored form + within('#advanced_filters') { find(:css, "#advanced_filters_selected").set(true) } + + click_button 'Filter' expect(page).to have_content('There are 2 investments') From 275f9ad8128128eb29e8db47d085fc1a40764c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Fuentes?= Date: Fri, 16 Feb 2018 14:53:56 +0100 Subject: [PATCH 5/7] Added new test to budget/investment/index, tested the combination between text search and any other option in the search form --- .../features/admin/budget_investments_spec.rb | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb index 18336493c..defa1bfa9 100644 --- a/spec/features/admin/budget_investments_spec.rb +++ b/spec/features/admin/budget_investments_spec.rb @@ -453,6 +453,140 @@ feature 'Admin budget investments' do end end + scenario "Combination of checkbox with text search", :js do + user = create(:user, username: 'Admin 1') + administrator = create(:administrator, user: user) + + create(:budget_investment, budget: budget, title: 'Educate the children', + id: 20, administrator: administrator) + create(:budget_investment, budget: budget, title: 'More schools', + id: 10, administrator: administrator) + create(:budget_investment, budget: budget, title: 'More hospitals') + + + visit admin_budget_budget_investments_path(budget_id: budget.id) + + expect(page).to have_css(".budget_investment", count: 3) + expect(page).to have_content("Educate the children") + expect(page).to have_content("More schools") + expect(page).to have_content("More hospitals") + + select "Admin 1", from: "administrator_id" + click_button "Filter" + + expect(page).to have_css(".budget_investment", count: 2) + expect(page).to have_content("Educate the children") + expect(page).to have_content("More schools") + expect(page).not_to have_content("More hospitals") + + fill_in 'title_or_id', with: 20 + click_button "Filter" + + expect(page).to have_css(".budget_investment", count: 1) + expect(page).to have_content("Educate the children") + expect(page).not_to have_content("More schools") + expect(page).not_to have_content("More hospitals") + + expect(page).to have_content('Selected') + + end + + scenario "Combination of select with text search", :js do + create(:budget_investment, budget: budget, title: 'Educate the children', + feasibility: 'feasible', id: 20, + valuation_finished: true) + create(:budget_investment, budget: budget, title: 'More schools', + feasibility: 'feasible', id: 10, + valuation_finished: true) + create(:budget_investment, budget: budget, title: 'More hospitals') + + visit admin_budget_budget_investments_path(budget_id: budget.id) + + expect(page).to have_css(".budget_investment", count: 3) + expect(page).to have_content("Educate the children") + expect(page).to have_content("More schools") + expect(page).to have_content("More hospitals") + + click_link 'Advanced filters' + + page.check('advanced_filters_feasible') + click_button "Filter" + + expect(page).to have_css(".budget_investment", count: 2) + expect(page).to have_content("Educate the children") + expect(page).to have_content("More schools") + expect(page).not_to have_content("More hospitals") + + fill_in 'title_or_id', with: 20 + click_button "Filter" + + expect(page).to have_css(".budget_investment", count: 1) + expect(page).to have_content("Educate the children") + expect(page).not_to have_content("More schools") + expect(page).not_to have_content("More hospitals") + + expect(page).to have_content('Selected') + + end + + scenario "Combination of checkbox with text search and checkbox", :js do + user = create(:user, username: 'Admin 1') + administrator = create(:administrator, user: user) + + create(:budget_investment, budget: budget, title: 'Educate the children', + feasibility: 'feasible', id: 20, + valuation_finished: true, + administrator: administrator) + create(:budget_investment, budget: budget, title: 'More schools', + feasibility: 'feasible', id: 10, + valuation_finished: true, + administrator: administrator) + create(:budget_investment, budget: budget, title: 'More hospitals', + administrator: administrator) + create(:budget_investment, budget: budget, title: 'More hostals') + + + visit admin_budget_budget_investments_path(budget_id: budget.id) + + expect(page).to have_css(".budget_investment", count: 4) + expect(page).to have_content("Educate the children") + expect(page).to have_content("More schools") + expect(page).to have_content("More hospitals") + expect(page).to have_content("More hostals") + + select "Admin 1", from: "administrator_id" + click_button "Filter" + + expect(page).to have_css(".budget_investment", count: 3) + expect(page).to have_content("Educate the children") + expect(page).to have_content("More schools") + expect(page).to have_content("More hospitals") + expect(page).not_to have_content("More hostals") + + click_link 'Advanced filters' + + page.check('advanced_filters_feasible') + click_button "Filter" + + expect(page).to have_css(".budget_investment", count: 2) + expect(page).to have_content("Educate the children") + expect(page).to have_content("More schools") + expect(page).not_to have_content("More hospitals") + expect(page).not_to have_content("More hostals") + + fill_in 'title_or_id', with: 20 + click_button "Filter" + + expect(page).to have_css(".budget_investment", count: 1) + expect(page).to have_content("Educate the children") + expect(page).not_to have_content("More schools") + expect(page).not_to have_content("More hospitals") + expect(page).not_to have_content("More hostals") + + expect(page).to have_content('Selected') + + end + end context 'Search' do From 85f3f0625579c46bb43a1dc63faa37afb7e2ddcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Fuentes?= Date: Wed, 4 Jul 2018 12:32:52 +0200 Subject: [PATCH 6/7] Delete unused key --- config/locales/en/admin.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index 67273c327..d48a5ea23 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -164,7 +164,6 @@ en: one_filter_html: "Current applied filters: %{filter}" two_filters_html: "Current applied filters: %{filter}, %{advanced_filters}" buttons: - search: Search filter: Filter download_current_selection: "Download current selection" no_budget_investments: "There are no investment projects." From 53a1ea8847670ffb740a0a63023b52fb82313144 Mon Sep 17 00:00:00 2001 From: Marko Lovic Date: Wed, 25 Jul 2018 14:14:06 +0200 Subject: [PATCH 7/7] Fix spec --- spec/features/admin/budget_investments_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb index defa1bfa9..f65a3e672 100644 --- a/spec/features/admin/budget_investments_spec.rb +++ b/spec/features/admin/budget_investments_spec.rb @@ -617,7 +617,7 @@ feature 'Admin budget investments' do expect(page).to have_content('Some investment') expect(page).to have_content('Some other investment') - fill_in 'title_or_id', with: 999999 + fill_in 'title_or_id', with: first_investment.id click_button 'Filter' expect(page).to have_content('Some other investment')