Merge pull request #1532 from consul/selected-unfeasible-links

Selected and unfeasible links only visible if budget is balloting (or later)
This commit is contained in:
Alberto
2017-05-09 18:27:18 +02:00
committed by GitHub
6 changed files with 139 additions and 40 deletions

View File

@@ -67,6 +67,10 @@ class Budget < ActiveRecord::Base
phase == "finished" phase == "finished"
end end
def balloting_or_later?
balloting? || reviewing_ballots? || finished?
end
def on_hold? def on_hold?
reviewing? || valuating? || reviewing_ballots? reviewing? || valuating? || reviewing_ballots?
end end

View File

@@ -45,24 +45,26 @@
</div> </div>
</div> </div>
<% unless @current_filter == "unfeasible" %> <% if @budget.balloting_or_later? %>
<div class="row"> <% unless @current_filter == "unfeasible" %>
<div class="small-12 column"> <div class="row">
<small> <div class="small-12 column">
<%= link_to t("budgets.groups.show.unfeasible"), <small>
budget_path(@budget, filter: "unfeasible") %> <%= link_to t("budgets.groups.show.unfeasible"),
</small> budget_path(@budget, filter: "unfeasible") %>
</small>
</div>
</div> </div>
</div> <% end %>
<% end %>
<% unless @current_filter == "unselected" %> <% unless @current_filter == "unselected" %>
<div class="row"> <div class="row">
<div class="small-12 column"> <div class="small-12 column">
<small> <small>
<%= link_to t("budgets.groups.show.unselected"), <%= link_to t("budgets.groups.show.unselected"),
budget_path(@budget, filter: "unselected") %> budget_path(@budget, filter: "unselected") %>
</small> </small>
</div>
</div> </div>
</div> <% end %>
<% end %> <% end %>

View File

@@ -70,24 +70,26 @@
</div> </div>
</div> </div>
<% unless @current_filter == "unfeasible" %> <% if @budget.balloting_or_later? %>
<div class="row"> <% unless @current_filter == "unfeasible" %>
<div class="small-12 column"> <div class="row">
<small> <div class="small-12 column">
<%= link_to t("budgets.show.unfeasible"), <small>
budget_path(@budget, filter: "unfeasible") %> <%= link_to t("budgets.show.unfeasible"),
</small> budget_path(@budget, filter: "unfeasible") %>
</small>
</div>
</div> </div>
</div> <% end %>
<% end %>
<% unless @current_filter == "unselected" %> <% unless @current_filter == "unselected" %>
<div class="row"> <div class="row">
<div class="small-12 column"> <div class="small-12 column">
<small> <small>
<%= link_to t("budgets.show.unselected"), <%= link_to t("budgets.show.unselected"),
budget_path(@budget, filter: "unselected") %> budget_path(@budget, filter: "unselected") %>
</small> </small>
</div>
</div> </div>
</div> <% end %>
<% end %> <% end %>

View File

@@ -8,14 +8,57 @@ feature 'Budgets' do
budgets.each {|budget| expect(page).to have_link(budget.name)} budgets.each {|budget| expect(page).to have_link(budget.name)}
end end
scenario 'Show' do context 'Show' do
budget = create(:budget)
group1 = create(:budget_group, budget: budget)
group2 = create(:budget_group, budget: budget)
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 end
context 'Accepting' do context 'Accepting' do

View File

@@ -73,6 +73,7 @@ feature 'Budget Investments' do
end end
scenario "by unfeasibilty link for group with one heading" do scenario "by unfeasibilty link for group with one heading" do
budget.update(phase: :balloting)
group = create(:budget_group, name: 'All City', budget: budget) group = create(:budget_group, name: 'All City', budget: budget)
heading = create(:budget_heading, name: "Madrid", group: group) heading = create(:budget_heading, name: "Madrid", group: group)
@@ -86,6 +87,7 @@ feature 'Budget Investments' do
end end
scenario "by unfeasibilty link for group with many headings" do scenario "by unfeasibilty link for group with many headings" do
budget.update(phase: :balloting)
group = create(:budget_group, name: 'Districts', budget: budget) group = create(:budget_group, name: 'Districts', budget: budget)
heading1 = create(:budget_heading, name: 'Carabanchel', group: group) heading1 = create(:budget_heading, name: 'Carabanchel', group: group)
heading2 = create(:budget_heading, name: 'Barajas', group: group) heading2 = create(:budget_heading, name: 'Barajas', group: group)

View File

@@ -49,6 +49,52 @@ describe Budget do
budget.phase = "finished" budget.phase = "finished"
expect(budget).to be_finished expect(budget).to be_finished
end 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 end
describe "heading_price" do describe "heading_price" do