From 98a76a1ae53b6061a2197d9787df175480d4a1a8 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Fri, 5 May 2017 17:14:54 +0200 Subject: [PATCH 1/5] show price on index/show if feasible && selected --- app/models/budget/investment.rb | 6 ++++++ app/views/budgets/investments/_investment.html.erb | 7 +++++++ app/views/budgets/investments/_investment_show.html.erb | 9 +++++++++ config/locales/budgets.en.yml | 1 + config/locales/budgets.es.yml | 1 + 5 files changed, 24 insertions(+) diff --git a/app/models/budget/investment.rb b/app/models/budget/investment.rb index 7f0150293..0d730945b 100644 --- a/app/models/budget/investment.rb +++ b/app/models/budget/investment.rb @@ -217,6 +217,12 @@ class Budget budget.balloting? end + def should_show_price? + feasible? && + selected? && + (budget.reviewing_ballots? || budget.finished?) + end + def should_show_price_info? feasible? && price_explanation.present? && diff --git a/app/views/budgets/investments/_investment.html.erb b/app/views/budgets/investments/_investment.html.erb index c9391cbe5..3155853cd 100644 --- a/app/views/budgets/investments/_investment.html.erb +++ b/app/views/budgets/investments/_investment.html.erb @@ -73,6 +73,13 @@ ballot: ballot } %> + <% elsif investment.should_show_price? %> +
+

+ <%= investment.formatted_price %> +

+
<% end %> <% end %> diff --git a/app/views/budgets/investments/_investment_show.html.erb b/app/views/budgets/investments/_investment_show.html.erb index e0822145b..f9a371585 100644 --- a/app/views/budgets/investments/_investment_show.html.erb +++ b/app/views/budgets/investments/_investment_show.html.erb @@ -98,6 +98,15 @@
<% end %> + <% if investment.should_show_price? %> + +

<%= t("budgets.investments.show.price") %>

+
+

+ <%= investment.formatted_price %> +

+
+ <% end %>

<%= t("budgets.investments.show.share") %>

diff --git a/config/locales/budgets.en.yml b/config/locales/budgets.en.yml index 7b3251ad4..2774dcfbd 100644 --- a/config/locales/budgets.en.yml +++ b/config/locales/budgets.en.yml @@ -84,6 +84,7 @@ en: title: Investment project supports: Supports votes: Votes + price: Price wrong_price_format: Only integer numbers investment: title: Investment project diff --git a/config/locales/budgets.es.yml b/config/locales/budgets.es.yml index 44b748698..84d10228a 100644 --- a/config/locales/budgets.es.yml +++ b/config/locales/budgets.es.yml @@ -84,6 +84,7 @@ es: title: Propuesta de inversión supports: Apoyos votes: Votos + price: Coste wrong_price_format: Solo puede incluir caracteres numéricos investment: title: Propuesta de inversión From 6ab6986d9e4b7eb10299f4c987d2a74b195c67b8 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Fri, 5 May 2017 19:07:37 +0200 Subject: [PATCH 2/5] adds unselected investment link --- app/models/budget/investment.rb | 7 ++++++- app/views/budgets/groups/show.html.erb | 22 +++++++++++++++++++--- app/views/budgets/show.html.erb | 21 +++++++++++++++++---- config/locales/budgets.en.yml | 6 +++++- config/locales/budgets.es.yml | 4 ++++ 5 files changed, 51 insertions(+), 9 deletions(-) diff --git a/app/models/budget/investment.rb b/app/models/budget/investment.rb index 0d730945b..e8fec254f 100644 --- a/app/models/budget/investment.rb +++ b/app/models/budget/investment.rb @@ -47,6 +47,7 @@ class Budget scope :undecided, -> { where(feasibility: "undecided") } scope :with_supports, -> { where('cached_votes_up > 0') } scope :selected, -> { where(selected: true) } + scope :unselected, -> { where(selected: false) } scope :last_week, -> { where("created_at >= ?", 7.days.ago)} scope :by_group, -> (group_id) { where(group_id: group_id) } @@ -235,11 +236,15 @@ class Budget def self.apply_filters_and_search(budget, params) investments = all - if budget.balloting? + + if budget.balloting? && params[:unfeasible].blank? && params[:unselected].blank? investments = investments.selected + elsif budget.balloting? && params[:unfeasible].blank? + investments = investments.feasible.unselected else investments = params[:unfeasible].present? ? investments.unfeasible : investments.not_unfeasible end + investments = investments.by_heading(params[:heading_id]) if params[:heading_id].present? investments = investments.search(params[:search]) if params[:search].present? investments diff --git a/app/views/budgets/groups/show.html.erb b/app/views/budgets/groups/show.html.erb index 73fb3288f..8fbe028b3 100644 --- a/app/views/budgets/groups/show.html.erb +++ b/app/views/budgets/groups/show.html.erb @@ -13,9 +13,15 @@

<%= t("budgets.groups.show.unfeasible_title") %>

+<% elsif params[:unselected] %> +
+
+

<%= t("budgets.groups.show.unselected_title") %>

+
+
<% end %> -
+
<% @group.headings.each_slice(7) do |slice| %> @@ -25,7 +31,8 @@ class="<%= css_for_ballot_heading(heading) %>"> <%= link_to heading.name, budget_investments_path(heading_id: heading.id, - unfeasible: params[:unfeasible]), + unfeasible: params[:unfeasible], + unselected: params[:unselected]), data: { no_turbolink: true } %>
<% end %> @@ -40,10 +47,19 @@
<% if params[:unfeasible].blank? %> -
+
<%= link_to t("budgets.groups.show.unfeasible"), budget_path(@budget, unfeasible: 1) %>
<% end %> + +<% if params[:unselected].blank? %> +
+
+ <%= link_to t("budgets.groups.show.unselected"), + budget_path(@budget, unselected: 1) %> +
+
+<% end %> diff --git a/app/views/budgets/show.html.erb b/app/views/budgets/show.html.erb index e49cd4252..d6a571b46 100644 --- a/app/views/budgets/show.html.erb +++ b/app/views/budgets/show.html.erb @@ -35,10 +35,12 @@
-
+
<% if params[:unfeasible] %>

<%= t("budgets.show.unfeasible_title") %>

+ <% elsif params[:unselected] %> +

<%= t("budgets.show.unselected_title") %>

<% end %> @@ -52,12 +54,14 @@ <%= link_to group.name, budget_investments_path(@budget, heading_id: group.headings.first.id, - unfeasible: params[:unfeasible]), + unfeasible: params[:unfeasible], + unselected: params[:unselected]), data: { no_turbolink: true } %> <% else %> <%= link_to group.name, budget_group_path(@budget, group, - unfeasible: params[:unfeasible]) %> + unfeasible: params[:unfeasible], + unselected: params[:unselected]) %> <% end %>
@@ -69,10 +73,19 @@ <% unless params[:unfeasible] %> -
+
<%= link_to t("budgets.show.unfeasible"), budget_path(@budget, unfeasible: 1) %>
<% end %> + +<% unless params[:unselected] %> +
+
+ <%= link_to t("budgets.show.unselected"), + budget_path(@budget, unselected: 1) %> +
+
+<% end %> diff --git a/config/locales/budgets.en.yml b/config/locales/budgets.en.yml index 2774dcfbd..49d1558cf 100644 --- a/config/locales/budgets.en.yml +++ b/config/locales/budgets.en.yml @@ -24,6 +24,8 @@ en: title: Select an option unfeasible_title: Unfeasible investments unfeasible: See unfeasible investments + unselected_title: Investments not selected for balloting phase + unselected: See investments not selected for balloting phase phase: accepting: Accepting projects reviewing: Reviewing projects @@ -107,4 +109,6 @@ en: group: Group phase: Actual phase unfeasible_title: Unfeasible investments - unfeasible: See unfeasible investments \ No newline at end of file + unfeasible: See unfeasible investments + unselected_title: Investments not selected for balloting phase + unselected: See investments not selected for balloting phase \ No newline at end of file diff --git a/config/locales/budgets.es.yml b/config/locales/budgets.es.yml index 84d10228a..98ef4ad4e 100644 --- a/config/locales/budgets.es.yml +++ b/config/locales/budgets.es.yml @@ -24,6 +24,8 @@ es: title: Selecciona una opción unfeasible_title: Propuestas inviables unfeasible: Ver propuestas inviables + unselected_title: Propuestas que no pasan a la votación final + unselected: Ver las propuestas que no pasan a la votación final phase: accepting: Presentación de proyectos reviewing: Revisión interna de proyectos @@ -108,3 +110,5 @@ es: phase: Fase actual unfeasible_title: Propuestas inviables unfeasible: Ver las propuestas inviables + unselected_title: Propuestas que no pasan a la votación final + unselected: Ver las propuestas que no pasan a la votación final \ No newline at end of file From 5727969eac282ecfb07631488aa612441db35574 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Fri, 5 May 2017 20:01:32 +0200 Subject: [PATCH 3/5] adds specs for unselected budget investments --- app/models/budget/investment.rb | 2 +- spec/features/budgets/investments_spec.rb | 47 +++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/app/models/budget/investment.rb b/app/models/budget/investment.rb index e8fec254f..0b4470383 100644 --- a/app/models/budget/investment.rb +++ b/app/models/budget/investment.rb @@ -239,7 +239,7 @@ class Budget if budget.balloting? && params[:unfeasible].blank? && params[:unselected].blank? investments = investments.selected - elsif budget.balloting? && params[:unfeasible].blank? + elsif budget.balloting? && params[:unfeasible].blank? && params[:unselected].present? investments = investments.feasible.unselected else investments = params[:unfeasible].present? ? investments.unfeasible : investments.not_unfeasible diff --git a/spec/features/budgets/investments_spec.rb b/spec/features/budgets/investments_spec.rb index 8a817a805..69d995311 100644 --- a/spec/features/budgets/investments_spec.rb +++ b/spec/features/budgets/investments_spec.rb @@ -602,5 +602,52 @@ feature 'Budget Investments' do end end + scenario 'Show unselected budget investments' do + investment1 = create(:budget_investment, :feasible, heading: heading, valuation_finished: true) + investment2 = create(:budget_investment, :selected, :feasible, heading: heading, valuation_finished: true) + investment3 = create(:budget_investment, :selected, :feasible, heading: heading, valuation_finished: true) + investment4 = create(:budget_investment, :selected, :feasible, heading: heading, valuation_finished: true) + + visit budget_investments_path(budget_id: budget.id, heading_id: heading.id, unselected: 1) + + within("#budget-investments") do + expect(page).to have_css('.budget-investment', count: 1) + + expect(page).to have_content(investment1.title) + expect(page).to_not have_content(investment2.title) + expect(page).to_not have_content(investment3.title) + expect(page).to_not have_content(investment4.title) + end + end + + scenario "Shows unselected link for group with one heading" do + group = create(:budget_group, name: 'All City', budget: budget) + heading = create(:budget_heading, name: "Madrid", group: group) + + visit budget_path(budget) + click_link 'See investments not selected for balloting phase' + + click_link "All City" + + expected_path = budget_investments_path(budget, heading_id: heading.id, unselected: 1) + expect(page).to have_current_path(expected_path) + end + + scenario "Shows unselected link for group with many headings" do + group = create(:budget_group, name: 'Districts', budget: budget) + heading1 = create(:budget_heading, name: 'Carabanchel', group: group) + heading2 = create(:budget_heading, name: 'Barajas', group: group) + + visit budget_path(budget) + + click_link 'See investments not selected for balloting phase' + + click_link 'Districts' + click_link 'Carabanchel' + + expected_path = budget_investments_path(budget, heading_id: heading1.id, unselected: 1) + expect(page).to have_current_path(expected_path) + end + end end From fa825185f57630ca0dcf1bd420cb306e559c5e90 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Sat, 6 May 2017 03:37:11 +0200 Subject: [PATCH 4/5] adds model specs for investment filters --- spec/models/budget/investment_spec.rb | 86 +++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/spec/models/budget/investment_spec.rb b/spec/models/budget/investment_spec.rb index e9d5ccd13..2c5f03738 100644 --- a/spec/models/budget/investment_spec.rb +++ b/spec/models/budget/investment_spec.rb @@ -337,6 +337,92 @@ describe Budget::Investment do end end + describe "apply_filters_and_search" do + + let(:budget) { create(:budget) } + + it "returns feasible investments" do + investment1 = create(:budget_investment, :feasible, budget: budget) + investment2 = create(:budget_investment, :feasible, budget: budget) + investment3 = create(:budget_investment, :unfeasible, budget: budget) + + results = Budget::Investment::apply_filters_and_search(budget, {}, :feasible) + + expect(results).to include investment1 + expect(results).to include investment2 + expect(results).to_not include investment3 + end + + it "returns unfeasible investments" do + investment1 = create(:budget_investment, :unfeasible, budget: budget) + investment2 = create(:budget_investment, :unfeasible, budget: budget) + investment3 = create(:budget_investment, :feasible, budget: budget) + + results = Budget::Investment::apply_filters_and_search(budget, {}, :unfeasible) + + expect(results).to include investment1 + expect(results).to include investment2 + expect(results).to_not include investment3 + end + + it "returns selected investments" do + budget.update(phase: "balloting") + + investment1 = create(:budget_investment, :feasible, :selected, budget: budget) + investment2 = create(:budget_investment, :feasible, :selected, budget: budget) + investment3 = create(:budget_investment, :feasible, :unselected, budget: budget) + + results = Budget::Investment::apply_filters_and_search(budget, {}, :selected) + + expect(results).to include investment1 + expect(results).to include investment2 + expect(results).to_not include investment3 + end + + it "returns unselected investments" do + budget.update(phase: "balloting") + + investment1 = create(:budget_investment, :feasible, :unselected, budget: budget) + investment2 = create(:budget_investment, :feasible, :unselected, budget: budget) + investment3 = create(:budget_investment, :feasible, :selected, budget: budget) + + results = Budget::Investment::apply_filters_and_search(budget, {}, :unselected) + + expect(results).to include investment1 + expect(results).to include investment2 + expect(results).to_not include investment3 + end + + it "returns investmens by heading" do + group = create(:budget_group, budget: budget) + + heading1 = create(:budget_heading, group: group) + heading2 = create(:budget_heading, group: group) + + investment1 = create(:budget_investment, heading: heading1, budget: budget) + investment2 = create(:budget_investment, heading: heading1, budget: budget) + investment3 = create(:budget_investment, heading: heading2, budget: budget) + + results = Budget::Investment::apply_filters_and_search(budget, heading_id: heading1.id) + + expect(results).to include investment1 + expect(results).to include investment2 + expect(results).to_not include investment3 + end + + it "returns investments by search string" do + investment1 = create(:budget_investment, title: "health for all", budget: budget) + investment2 = create(:budget_investment, title: "improved health", budget: budget) + investment3 = create(:budget_investment, title: "finance", budget: budget) + + results = Budget::Investment::apply_filters_and_search(budget, search: "health") + + expect(results).to include investment1 + expect(results).to include investment2 + expect(results).to_not include investment3 + end + end + describe "search" do context "tags" do From c0488c3b3c0c1df30337ec929c8b0bd767ef1718 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Sat, 6 May 2017 03:37:29 +0200 Subject: [PATCH 5/5] refactors investment filters --- app/controllers/application_controller.rb | 6 ++++ app/controllers/budgets/groups_controller.rb | 3 ++ .../budgets/investments_controller.rb | 5 ++- app/controllers/budgets_controller.rb | 3 ++ app/models/budget/investment.rb | 17 +++------- app/views/budgets/groups/show.html.erb | 23 ++++++++------ app/views/budgets/investments/index.html.erb | 4 +-- app/views/budgets/show.html.erb | 26 +++++++++------- spec/factories.rb | 6 ++++ spec/features/budgets/ballots_spec.rb | 10 ++++-- spec/features/budgets/investments_spec.rb | 31 ++++++++++--------- spec/features/tags/budget_investments_spec.rb | 10 +++--- 12 files changed, 85 insertions(+), 59 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 3e1b78d31..495a25314 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -114,4 +114,10 @@ class ApplicationController < ActionController::Base store_location_for(:user, request.path) end end + + def set_default_budget_filter + if @budget.try(:balloting?) + params[:filter] ||= "selected" + end + end end diff --git a/app/controllers/budgets/groups_controller.rb b/app/controllers/budgets/groups_controller.rb index e55974a6a..d84eb2fdd 100644 --- a/app/controllers/budgets/groups_controller.rb +++ b/app/controllers/budgets/groups_controller.rb @@ -3,6 +3,9 @@ module Budgets load_and_authorize_resource :budget load_and_authorize_resource :group, class: "Budget::Group" + before_action :set_default_budget_filter, only: :show + has_filters %w{not_unfeasible feasible unfeasible unselected selected}, only: [:show] + def show end diff --git a/app/controllers/budgets/investments_controller.rb b/app/controllers/budgets/investments_controller.rb index 7f9c6e7ee..7eb1b1291 100644 --- a/app/controllers/budgets/investments_controller.rb +++ b/app/controllers/budgets/investments_controller.rb @@ -14,18 +14,20 @@ module Budgets before_action :load_heading, only: [:index, :show] before_action :set_random_seed, only: :index before_action :load_categories, only: [:index, :new, :create] + before_action :set_default_budget_filter, only: :index feature_flag :budgets has_orders %w{most_voted newest oldest}, only: :show has_orders ->(c) { c.instance_variable_get(:@budget).investments_orders }, only: :index + has_filters %w{not_unfeasible feasible unfeasible unselected selected}, only: [:index, :show] invisible_captcha only: [:create, :update], honeypot: :subtitle, scope: :budget_investment respond_to :html, :js def index - @investments = @investments.apply_filters_and_search(@budget, params).send("sort_by_#{@current_order}").page(params[:page]).per(10).for_render + @investments = @investments.apply_filters_and_search(@budget, params, @current_filter).send("sort_by_#{@current_order}").page(params[:page]).per(10).for_render @investment_ids = @investments.pluck(:id) load_investment_votes(@investments) @tag_cloud = tag_cloud @@ -107,6 +109,7 @@ module Budgets def tag_cloud TagCloud.new(Budget::Investment, params[:search]) end + end end diff --git a/app/controllers/budgets_controller.rb b/app/controllers/budgets_controller.rb index ee26f3223..2a53c410b 100644 --- a/app/controllers/budgets_controller.rb +++ b/app/controllers/budgets_controller.rb @@ -3,6 +3,9 @@ class BudgetsController < ApplicationController feature_flag :budgets load_and_authorize_resource + before_action :set_default_budget_filter, only: :show + has_filters %w{not_unfeasible feasible unfeasible unselected selected}, only: :show + respond_to :html, :js def show diff --git a/app/models/budget/investment.rb b/app/models/budget/investment.rb index 0b4470383..64adbaddf 100644 --- a/app/models/budget/investment.rb +++ b/app/models/budget/investment.rb @@ -46,8 +46,8 @@ class Budget scope :not_unfeasible, -> { where.not(feasibility: "unfeasible") } scope :undecided, -> { where(feasibility: "undecided") } scope :with_supports, -> { where('cached_votes_up > 0') } - scope :selected, -> { where(selected: true) } - scope :unselected, -> { where(selected: false) } + scope :selected, -> { feasible.where(selected: true) } + scope :unselected, -> { feasible.where(selected: false) } scope :last_week, -> { where("created_at >= ?", 7.days.ago)} scope :by_group, -> (group_id) { where(group_id: group_id) } @@ -234,17 +234,9 @@ class Budget budget.formatted_amount(price) end - def self.apply_filters_and_search(budget, params) + def self.apply_filters_and_search(budget, params, current_filter=nil) investments = all - - if budget.balloting? && params[:unfeasible].blank? && params[:unselected].blank? - investments = investments.selected - elsif budget.balloting? && params[:unfeasible].blank? && params[:unselected].present? - investments = investments.feasible.unselected - else - investments = params[:unfeasible].present? ? investments.unfeasible : investments.not_unfeasible - end - + investments = investments.send(current_filter) if current_filter.present? investments = investments.by_heading(params[:heading_id]) if params[:heading_id].present? investments = investments.search(params[:search]) if params[:search].present? investments @@ -256,5 +248,6 @@ class Budget self.group_id = self.heading.try(:group_id) if self.heading_id_changed? self.budget_id ||= self.heading.try(:group).try(:budget_id) end + end end diff --git a/app/views/budgets/groups/show.html.erb b/app/views/budgets/groups/show.html.erb index 8fbe028b3..d2e1c01fc 100644 --- a/app/views/budgets/groups/show.html.erb +++ b/app/views/budgets/groups/show.html.erb @@ -7,13 +7,13 @@
-<% if params[:unfeasible] %> +<% if @current_filter == "unfeasible" %>

<%= t("budgets.groups.show.unfeasible_title") %>

-<% elsif params[:unselected] %> +<% elsif @current_filter == "unselected" %>

<%= t("budgets.groups.show.unselected_title") %>

@@ -31,8 +31,7 @@ class="<%= css_for_ballot_heading(heading) %>"> <%= link_to heading.name, budget_investments_path(heading_id: heading.id, - unfeasible: params[:unfeasible], - unselected: params[:unselected]), + filter: @current_filter), data: { no_turbolink: true } %>
<% end %> @@ -46,20 +45,24 @@
-<% if params[:unfeasible].blank? %> +<% unless @current_filter == "unfeasible" %>
- <%= link_to t("budgets.groups.show.unfeasible"), - budget_path(@budget, unfeasible: 1) %> + + <%= link_to t("budgets.groups.show.unfeasible"), + budget_path(@budget, filter: "unfeasible") %> +
<% end %> -<% if params[:unselected].blank? %> +<% unless @current_filter == "unselected" %>
- <%= link_to t("budgets.groups.show.unselected"), - budget_path(@budget, unselected: 1) %> + + <%= link_to t("budgets.groups.show.unselected"), + budget_path(@budget, filter: "unselected") %> +
<% end %> diff --git a/app/views/budgets/investments/index.html.erb b/app/views/budgets/investments/index.html.erb index 50a2866f9..95b60f55b 100644 --- a/app/views/budgets/investments/index.html.erb +++ b/app/views/budgets/investments/index.html.erb @@ -16,7 +16,7 @@
- <% if params[:unfeasible].present? %> + <% if @current_filter == "unfeasible" %>

<%= t("budgets.investments.index.unfeasible") %>: <%= @heading.name %>

<%= t("budgets.investments.index.unfeasible_text", @@ -34,7 +34,7 @@ <% end %>
- <%= render('shared/order_links', i18n_namespace: "budgets.investments.index") unless params[:unfeasible].present? %> + <%= render('shared/order_links', i18n_namespace: "budgets.investments.index") unless @current_filter == "unfeasible" %> <% @investments.each do |investment| %> <%= render partial: '/budgets/investments/investment', locals: { diff --git a/app/views/budgets/show.html.erb b/app/views/budgets/show.html.erb index d6a571b46..f67b3ca9d 100644 --- a/app/views/budgets/show.html.erb +++ b/app/views/budgets/show.html.erb @@ -37,9 +37,9 @@
- <% if params[:unfeasible] %> + <% if @current_filter == "unfeasible" %>

<%= t("budgets.show.unfeasible_title") %>

- <% elsif params[:unselected] %> + <% elsif @current_filter == "unselected" %>

<%= t("budgets.show.unselected_title") %>

<% end %>
@@ -54,14 +54,12 @@ <%= link_to group.name, budget_investments_path(@budget, heading_id: group.headings.first.id, - unfeasible: params[:unfeasible], - unselected: params[:unselected]), + filter: @current_filter), data: { no_turbolink: true } %> <% else %> <%= link_to group.name, budget_group_path(@budget, group, - unfeasible: params[:unfeasible], - unselected: params[:unselected]) %> + filter: @current_filter) %> <% end %>
@@ -72,20 +70,24 @@ -<% unless params[:unfeasible] %> +<% unless @current_filter == "unfeasible" %>
- <%= link_to t("budgets.show.unfeasible"), - budget_path(@budget, unfeasible: 1) %> + + <%= link_to t("budgets.show.unfeasible"), + budget_path(@budget, filter: "unfeasible") %> +
<% end %> -<% unless params[:unselected] %> +<% unless @current_filter == "unselected" %>
- <%= link_to t("budgets.show.unselected"), - budget_path(@budget, unselected: 1) %> + + <%= link_to t("budgets.show.unselected"), + budget_path(@budget, filter: "unselected") %> +
<% end %> diff --git a/spec/factories.rb b/spec/factories.rb index b295fd60c..f0a4fc5a2 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -284,6 +284,12 @@ FactoryGirl.define do feasibility "feasible" valuation_finished true end + + trait :unselected do + selected false + feasibility "feasible" + valuation_finished true + end end factory :budget_ballot, class: 'Budget::Ballot' do diff --git a/spec/features/budgets/ballots_spec.rb b/spec/features/budgets/ballots_spec.rb index 50670079c..7b3f3d1af 100644 --- a/spec/features/budgets/ballots_spec.rb +++ b/spec/features/budgets/ballots_spec.rb @@ -447,10 +447,12 @@ feature 'Ballots' do end scenario 'Unselected investments' do - investment = create(:budget_investment, heading: new_york) + investment = create(:budget_investment, heading: new_york, title: "WTF asdfasfd") login_as(user) - visit budget_investments_path(budget, heading_id: new_york.id, unfeasible: 1) + visit budget_path(budget) + click_link states.name + click_link new_york.name expect(page).to_not have_css("#budget_investment_#{investment.id}") end @@ -459,7 +461,9 @@ feature 'Ballots' do investment = create(:budget_investment, feasibility: "undecided", heading: new_york) login_as(user) - visit budget_investments_path(budget, heading_id: new_york.id) + visit budget_path(budget) + click_link states.name + click_link new_york.name within("#budget-investments") do expect(page).to_not have_css("div.ballot") diff --git a/spec/features/budgets/investments_spec.rb b/spec/features/budgets/investments_spec.rb index 69d995311..0df280fd3 100644 --- a/spec/features/budgets/investments_spec.rb +++ b/spec/features/budgets/investments_spec.rb @@ -8,10 +8,14 @@ feature 'Budget Investments' do let!(:heading) { create(:budget_heading, name: "More hospitals", group: group) } scenario 'Index' do - investments = [create(:budget_investment, heading: heading), create(:budget_investment, heading: heading), create(:budget_investment, :feasible, heading: heading)] + investments = [create(:budget_investment, heading: heading), + create(:budget_investment, heading: heading), + create(:budget_investment, :feasible, heading: heading)] + unfeasible_investment = create(:budget_investment, :unfeasible, heading: heading) - visit budget_investments_path(budget, heading_id: heading.id) + visit budget_path(budget) + click_link "Health" expect(page).to have_selector('#budget-investments .budget-investment', count: 3) investments.each do |investment| @@ -56,7 +60,7 @@ feature 'Budget Investments' do investment3 = create(:budget_investment, heading: heading) investment4 = create(:budget_investment, :feasible, heading: heading) - visit budget_investments_path(budget_id: budget.id, heading_id: heading.id, unfeasible: 1) + visit budget_investments_path(budget_id: budget.id, heading_id: heading.id, filter: "unfeasible") within("#budget-investments") do expect(page).to have_css('.budget-investment', count: 1) @@ -77,7 +81,7 @@ feature 'Budget Investments' do click_link "All City" - expected_path = budget_investments_path(budget, heading_id: heading.id, unfeasible: 1) + expected_path = budget_investments_path(budget, heading_id: heading.id, filter: "unfeasible") expect(page).to have_current_path(expected_path) end @@ -93,7 +97,7 @@ feature 'Budget Investments' do click_link 'Districts' click_link 'Carabanchel' - expected_path = budget_investments_path(budget, heading_id: heading1.id, unfeasible: 1) + expected_path = budget_investments_path(budget, heading_id: heading1.id, filter: "unfeasible") expect(page).to have_current_path(expected_path) end end @@ -516,8 +520,6 @@ feature 'Budget Investments' do expect(page).to have_content "€10,000" end - - scenario "Sidebar in show should display vote text" do investment = create(:budget_investment, :selected, budget: budget) visit budget_investment_path(budget, investment) @@ -537,7 +539,6 @@ feature 'Budget Investments' do carabanchel_heading = create(:budget_heading, group: group, name: "Carabanchel") new_york_heading = create(:budget_heading, group: group, name: "New York") - sp1 = create(:budget_investment, :selected, price: 1, heading: global_heading) sp2 = create(:budget_investment, :selected, price: 10, heading: global_heading) sp3 = create(:budget_investment, :selected, price: 100, heading: global_heading) @@ -603,12 +604,12 @@ feature 'Budget Investments' do end scenario 'Show unselected budget investments' do - investment1 = create(:budget_investment, :feasible, heading: heading, valuation_finished: true) - investment2 = create(:budget_investment, :selected, :feasible, heading: heading, valuation_finished: true) - investment3 = create(:budget_investment, :selected, :feasible, heading: heading, valuation_finished: true) - investment4 = create(:budget_investment, :selected, :feasible, heading: heading, valuation_finished: true) + investment1 = create(:budget_investment, :unselected, :feasible, heading: heading, valuation_finished: true) + investment2 = create(:budget_investment, :selected, :feasible, heading: heading, valuation_finished: true) + investment3 = create(:budget_investment, :selected, :feasible, heading: heading, valuation_finished: true) + investment4 = create(:budget_investment, :selected, :feasible, heading: heading, valuation_finished: true) - visit budget_investments_path(budget_id: budget.id, heading_id: heading.id, unselected: 1) + visit budget_investments_path(budget_id: budget.id, heading_id: heading.id, filter: "unselected") within("#budget-investments") do expect(page).to have_css('.budget-investment', count: 1) @@ -629,7 +630,7 @@ feature 'Budget Investments' do click_link "All City" - expected_path = budget_investments_path(budget, heading_id: heading.id, unselected: 1) + expected_path = budget_investments_path(budget, heading_id: heading.id, filter: "unselected") expect(page).to have_current_path(expected_path) end @@ -645,7 +646,7 @@ feature 'Budget Investments' do click_link 'Districts' click_link 'Carabanchel' - expected_path = budget_investments_path(budget, heading_id: heading1.id, unselected: 1) + expected_path = budget_investments_path(budget, heading_id: heading1.id, filter: "unselected") expect(page).to have_current_path(expected_path) end diff --git a/spec/features/tags/budget_investments_spec.rb b/spec/features/tags/budget_investments_spec.rb index 28d19333f..4c978c740 100644 --- a/spec/features/tags/budget_investments_spec.rb +++ b/spec/features/tags/budget_investments_spec.rb @@ -199,11 +199,12 @@ feature 'Tags' do if budget.balloting? [investment1, investment2, investment3].each do |investment| - investment.update(selected: true) + investment.update(selected: true, feasibility: "feasible") end end - visit budget_investments_path(budget, heading_id: heading.id) + visit budget_path(budget) + click_link group.name within "#tag-cloud" do click_link "Medio Ambiente" @@ -246,11 +247,12 @@ feature 'Tags' do if budget.balloting? [investment1, investment2, investment3].each do |investment| - investment.update(selected: true) + investment.update(selected: true, feasibility: "feasible") end end - visit budget_investments_path(budget, heading_id: heading.id, search: 'Economía') + visit budget_path(budget) + click_link group.name within "#categories" do click_link "Medio Ambiente"