Don't show investment filters before valuation
Before the "valuating" phase, all investments have undecided feasibility and none have been selected, so the filters would return no results (except the "not_unfeasible" one, which would return everything).
This commit is contained in:
@@ -198,13 +198,10 @@ class Budget < ApplicationRecord
|
|||||||
|
|
||||||
def investments_filters
|
def investments_filters
|
||||||
[
|
[
|
||||||
"not_unfeasible",
|
(%w[not_unfeasible feasible unfeasible] if valuating_or_later?),
|
||||||
"feasible",
|
(%w[selected unselected] if publishing_prices_or_later?),
|
||||||
"unfeasible",
|
|
||||||
("selected" if publishing_prices_or_later?),
|
|
||||||
("unselected" if publishing_prices_or_later?),
|
|
||||||
("winners" if finished?)
|
("winners" if finished?)
|
||||||
].compact
|
].compact.flatten
|
||||||
end
|
end
|
||||||
|
|
||||||
def email_selected
|
def email_selected
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
require "rails_helper"
|
||||||
|
|
||||||
|
describe Budgets::Investments::FiltersComponent do
|
||||||
|
let(:budget) { create(:budget) }
|
||||||
|
|
||||||
|
around do |example|
|
||||||
|
with_request_url(Rails.application.routes.url_helpers.budget_investments_path(budget)) do
|
||||||
|
example.run
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "is not displayed before valuation" do
|
||||||
|
%w[informing accepting reviewing selecting].each do |phase|
|
||||||
|
budget.update!(phase: phase)
|
||||||
|
allow(controller).to receive(:valid_filters).and_return(budget.investments_filters)
|
||||||
|
|
||||||
|
render_inline Budgets::Investments::FiltersComponent.new
|
||||||
|
|
||||||
|
expect(page.native.inner_html).to be_empty
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "is displayed during and after valuation" do
|
||||||
|
Budget::Phase::kind_or_later("valuating").each do |phase|
|
||||||
|
budget.update!(phase: phase)
|
||||||
|
allow(controller).to receive(:valid_filters).and_return(budget.investments_filters)
|
||||||
|
|
||||||
|
render_inline Budgets::Investments::FiltersComponent.new
|
||||||
|
|
||||||
|
expect(page).to have_content "Filtering projects by"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -286,14 +286,20 @@ describe Budget do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe "#investments_filters" do
|
describe "#investments_filters" do
|
||||||
it "returns feasibility filters before publishing prices" do
|
it "returns no filters before valuating" do
|
||||||
%w[informing accepting reviewing selecting valuating].each do |phase|
|
%w[informing accepting reviewing selecting].each do |phase|
|
||||||
budget.phase = phase
|
budget.phase = phase
|
||||||
|
|
||||||
expect(budget.investments_filters).to eq(%w[not_unfeasible feasible unfeasible])
|
expect(budget.investments_filters).to be_empty
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "returns feasibility filters during valuation" do
|
||||||
|
budget.phase = "valuating"
|
||||||
|
|
||||||
|
expect(budget.investments_filters).to eq(%w[not_unfeasible feasible unfeasible])
|
||||||
|
end
|
||||||
|
|
||||||
it "returns feasibility and selection filters during the final voting phases" do
|
it "returns feasibility and selection filters during the final voting phases" do
|
||||||
%w[publishing_prices balloting reviewing_ballots].each do |phase|
|
%w[publishing_prices balloting reviewing_ballots].each do |phase|
|
||||||
budget.phase = phase
|
budget.phase = phase
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ describe "Budget Investments" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
scenario "Index" do
|
scenario "Index" do
|
||||||
|
budget.update!(phase: "valuating")
|
||||||
|
|
||||||
investments = [create(:budget_investment, heading: heading),
|
investments = [create(:budget_investment, heading: heading),
|
||||||
create(:budget_investment, heading: heading),
|
create(:budget_investment, heading: heading),
|
||||||
create(:budget_investment, :feasible, heading: heading)]
|
create(:budget_investment, :feasible, heading: heading)]
|
||||||
@@ -203,6 +205,8 @@ describe "Budget Investments" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
scenario "Advanced search combined with filter by status" do
|
scenario "Advanced search combined with filter by status" do
|
||||||
|
budget.update!(phase: "valuating")
|
||||||
|
|
||||||
create(:budget_investment, :feasible, heading: heading, title: "Feasible environment")
|
create(:budget_investment, :feasible, heading: heading, title: "Feasible environment")
|
||||||
create(:budget_investment, :feasible, heading: heading, title: "Feasible health")
|
create(:budget_investment, :feasible, heading: heading, title: "Feasible health")
|
||||||
create(:budget_investment, :unfeasible, heading: heading, title: "Unfeasible environment")
|
create(:budget_investment, :unfeasible, heading: heading, title: "Unfeasible environment")
|
||||||
@@ -235,6 +239,8 @@ describe "Budget Investments" do
|
|||||||
|
|
||||||
context("Filters") do
|
context("Filters") do
|
||||||
scenario "by unfeasibility" do
|
scenario "by unfeasibility" do
|
||||||
|
budget.update!(phase: "valuating")
|
||||||
|
|
||||||
investment1 = create(:budget_investment, :unfeasible, :finished, heading: heading)
|
investment1 = create(:budget_investment, :unfeasible, :finished, heading: heading)
|
||||||
investment2 = create(:budget_investment, :feasible, heading: heading)
|
investment2 = create(:budget_investment, :feasible, heading: heading)
|
||||||
investment3 = create(:budget_investment, heading: heading)
|
investment3 = create(:budget_investment, heading: heading)
|
||||||
@@ -518,7 +524,7 @@ describe "Budget Investments" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
scenario "Order always is random for unfeasible and unselected investments" do
|
scenario "Order always is random for unfeasible and unselected investments" do
|
||||||
Budget::Phase::PHASE_KINDS.each do |phase|
|
Budget::Phase::kind_or_later("valuating").each do |phase|
|
||||||
budget.update!(phase: phase)
|
budget.update!(phase: phase)
|
||||||
|
|
||||||
visit budget_investments_path(budget, heading_id: heading.id, filter: "unfeasible")
|
visit budget_investments_path(budget, heading_id: heading.id, filter: "unfeasible")
|
||||||
|
|||||||
Reference in New Issue
Block a user