diff --git a/app/models/budget.rb b/app/models/budget.rb index c4f953915..5b2cdc558 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -67,6 +67,10 @@ class Budget < ActiveRecord::Base phase == "finished" end + def balloting_or_later? + balloting? || reviewing_ballots? || finished? + end + def on_hold? reviewing? || valuating? || reviewing_ballots? end diff --git a/app/views/budgets/groups/show.html.erb b/app/views/budgets/groups/show.html.erb index d2e1c01fc..27d747c64 100644 --- a/app/views/budgets/groups/show.html.erb +++ b/app/views/budgets/groups/show.html.erb @@ -45,24 +45,26 @@ -<% unless @current_filter == "unfeasible" %> -
-
- - <%= link_to t("budgets.groups.show.unfeasible"), - budget_path(@budget, filter: "unfeasible") %> - +<% if @budget.balloting_or_later? %> + <% unless @current_filter == "unfeasible" %> +
+
+ + <%= link_to t("budgets.groups.show.unfeasible"), + budget_path(@budget, filter: "unfeasible") %> + +
-
-<% end %> + <% end %> -<% unless @current_filter == "unselected" %> -
-
- - <%= link_to t("budgets.groups.show.unselected"), - budget_path(@budget, filter: "unselected") %> - + <% unless @current_filter == "unselected" %> +
+
+ + <%= link_to t("budgets.groups.show.unselected"), + budget_path(@budget, filter: "unselected") %> + +
-
+ <% end %> <% end %> diff --git a/app/views/budgets/show.html.erb b/app/views/budgets/show.html.erb index f67b3ca9d..84b7691f3 100644 --- a/app/views/budgets/show.html.erb +++ b/app/views/budgets/show.html.erb @@ -70,24 +70,26 @@
-<% unless @current_filter == "unfeasible" %> -
-
- - <%= link_to t("budgets.show.unfeasible"), - budget_path(@budget, filter: "unfeasible") %> - +<% if @budget.balloting_or_later? %> + <% unless @current_filter == "unfeasible" %> +
+
+ + <%= link_to t("budgets.show.unfeasible"), + budget_path(@budget, filter: "unfeasible") %> + +
-
-<% end %> + <% end %> -<% unless @current_filter == "unselected" %> -
-
- - <%= link_to t("budgets.show.unselected"), - budget_path(@budget, filter: "unselected") %> - + <% unless @current_filter == "unselected" %> +
+
+ + <%= link_to t("budgets.show.unselected"), + budget_path(@budget, filter: "unselected") %> + +
-
+ <% end %> <% end %> diff --git a/spec/features/budgets/budgets_spec.rb b/spec/features/budgets/budgets_spec.rb index 4d4d603f3..81530a43d 100644 --- a/spec/features/budgets/budgets_spec.rb +++ b/spec/features/budgets/budgets_spec.rb @@ -8,14 +8,57 @@ feature 'Budgets' do budgets.each {|budget| expect(page).to have_link(budget.name)} end - scenario 'Show' do - budget = create(:budget) - group1 = create(:budget_group, budget: budget) - group2 = create(:budget_group, budget: budget) + context 'Show' do - visit budget_path(budget) + scenario "List all groups" do + budget = create(:budget) + group1 = create(:budget_group, budget: budget) + group2 = create(:budget_group, budget: budget) + + visit budget_path(budget) + + budget.groups.each {|group| expect(page).to have_link(group.name)} + end + + scenario "Links to unfeasible and selected if balloting or later" do + budget = create(:budget, :selecting) + group = create(:budget_group, budget: budget) + + visit budget_path(budget) + + expect(page).to_not have_link "See unfeasible investments" + expect(page).to_not have_link "See investments not selected for balloting phase" + + click_link group.name + + expect(page).to_not have_link "See unfeasible investments" + expect(page).to_not have_link "See investments not selected for balloting phase" + + budget.update(phase: :balloting) + + visit budget_path(budget) + + expect(page).to have_link "See unfeasible investments" + expect(page).to have_link "See investments not selected for balloting phase" + + click_link group.name + + expect(page).to have_link "See unfeasible investments" + expect(page).to have_link "See investments not selected for balloting phase" + + budget.update(phase: :finished) + + visit budget_path(budget) + + expect(page).to have_link "See unfeasible investments" + expect(page).to have_link "See investments not selected for balloting phase" + + click_link group.name + + expect(page).to have_link "See unfeasible investments" + expect(page).to have_link "See investments not selected for balloting phase" + end - budget.groups.each {|group| expect(page).to have_link(group.name)} end context 'Accepting' do diff --git a/spec/features/budgets/investments_spec.rb b/spec/features/budgets/investments_spec.rb index 0df280fd3..37ab50fda 100644 --- a/spec/features/budgets/investments_spec.rb +++ b/spec/features/budgets/investments_spec.rb @@ -73,6 +73,7 @@ feature 'Budget Investments' do end scenario "by unfeasibilty link for group with one heading" do + budget.update(phase: :balloting) group = create(:budget_group, name: 'All City', budget: budget) heading = create(:budget_heading, name: "Madrid", group: group) @@ -86,6 +87,7 @@ feature 'Budget Investments' do end scenario "by unfeasibilty link for group with many headings" do + budget.update(phase: :balloting) group = create(:budget_group, name: 'Districts', budget: budget) heading1 = create(:budget_heading, name: 'Carabanchel', group: group) heading2 = create(:budget_heading, name: 'Barajas', group: group) diff --git a/spec/models/budget_spec.rb b/spec/models/budget_spec.rb index 1157a152b..a1d1a1f42 100644 --- a/spec/models/budget_spec.rb +++ b/spec/models/budget_spec.rb @@ -49,6 +49,52 @@ describe Budget do budget.phase = "finished" expect(budget).to be_finished end + + it "on_hold?" do + budget.phase = "accepting" + expect(budget).to_not be_on_hold + + budget.phase = "reviewing" + expect(budget).to be_on_hold + + budget.phase = "selecting" + expect(budget).to_not be_on_hold + + budget.phase = "valuating" + expect(budget).to be_on_hold + + budget.phase = "balloting" + expect(budget).to_not be_on_hold + + budget.phase = "reviewing_ballots" + expect(budget).to be_on_hold + + budget.phase = "finished" + expect(budget).to_not be_on_hold + end + + it "balloting_or_later?" do + budget.phase = "accepting" + expect(budget).to_not be_balloting_or_later + + budget.phase = "reviewing" + expect(budget).to_not be_balloting_or_later + + budget.phase = "selecting" + expect(budget).to_not be_balloting_or_later + + budget.phase = "valuating" + expect(budget).to_not be_balloting_or_later + + budget.phase = "balloting" + expect(budget).to be_balloting_or_later + + budget.phase = "reviewing_ballots" + expect(budget).to be_balloting_or_later + + budget.phase = "finished" + expect(budget).to be_balloting_or_later + end end describe "heading_price" do