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