Skip to content

Commit

Permalink
Merge pull request consuldemocracy#2223 from wairbut-m2c/iagirre-prev…
Browse files Browse the repository at this point in the history
…ent-edition-if-budget-final-phase

Prevent edition of investments if budget is in the final phase
  • Loading branch information
MariaCheca authored Jan 9, 2018
2 parents 0ed5e19 + 9838ef4 commit e0df190
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 38 deletions.
14 changes: 6 additions & 8 deletions app/views/admin/budget_investments/_investments.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -56,25 +56,23 @@
</td>
<td class="small">
<% if investment.selected? %>
<%= link_to toggle_selection_admin_budget_budget_investment_path(@budget,
<%= link_to_unless investment.budget.finished?, t("admin.budget_investments.index.selected"),
toggle_selection_admin_budget_budget_investment_path(@budget,
investment,
filter: params[:filter],
page: params[:page]),
method: :patch,
remote: true,
class: "button small expanded" do %>
<%= t("admin.budget_investments.index.selected") %>
<% end %>
class: "button small expanded" %>
<% elsif investment.feasible? && investment.valuation_finished? %>
<%= link_to toggle_selection_admin_budget_budget_investment_path(@budget,
<%= link_to_unless investment.budget.finished?, t("admin.budget_investments.index.select"),
toggle_selection_admin_budget_budget_investment_path(@budget,
investment,
filter: params[:filter],
page: params[:page]),
method: :patch,
remote: true,
class: "button small hollow expanded" do %>
<%= t("admin.budget_investments.index.select") %>
<% end %>
class: "button small hollow expanded" %>
<% end %>
</td>
<% if params[:filter] == 'selected' %>
Expand Down
6 changes: 3 additions & 3 deletions app/views/admin/budget_investments/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<%= link_to t("admin.budget_investments.show.edit"),
edit_admin_budget_budget_investment_path(@budget, @investment,
Budget::Investment.filter_params(params)) %>
Budget::Investment.filter_params(params)) unless @budget.finished? %>

<hr>

Expand Down Expand Up @@ -34,7 +34,7 @@
<p>
<%= link_to t("admin.budget_investments.show.edit_classification"),
edit_admin_budget_budget_investment_path(@budget, @investment,
{anchor: 'classification'}.merge(Budget::Investment.filter_params(params))) %>
{anchor: 'classification'}.merge(Budget::Investment.filter_params(params))) unless @budget.finished? %>
</p>

<hr>
Expand All @@ -44,7 +44,7 @@
<%= render 'valuation/budget_investments/written_by_valuators' %>

<p>
<%= link_to t("admin.budget_investments.show.edit_dossier"), edit_valuation_budget_budget_investment_path(@budget, @investment) %>
<%= link_to t("admin.budget_investments.show.edit_dossier"), edit_valuation_budget_budget_investment_path(@budget, @investment) unless @budget.finished? %>
</p>

<hr>
Expand Down
91 changes: 64 additions & 27 deletions spec/features/admin/budget_investments_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,21 @@
expect(page).to have_content(budget_investment.total_votes)
end

scenario 'If budget is finished do not show "Selected" button' do
finished_budget = create(:budget, :finished)
budget_investment = create(:budget_investment, budget: finished_budget, cached_votes_up: 77)

visit admin_budget_budget_investments_path(budget_id: finished_budget.id)

within("#budget_investment_#{budget_investment.id}") do
expect(page).to have_content(budget_investment.title)
expect(page).to have_content(budget_investment.heading.name)
expect(page).to have_content(budget_investment.id)
expect(page).to have_content(budget_investment.total_votes)
expect(page).to_not have_link("Selected")
end
end

scenario 'Displaying assignments info' do
budget_investment1 = create(:budget_investment, budget: @budget)
budget_investment2 = create(:budget_investment, budget: @budget)
Expand Down Expand Up @@ -279,33 +294,55 @@

end

scenario 'Show' do
administrator = create(:administrator, user: create(:user, username: 'Ana', email: 'ana@admins.org'))
valuator = create(:valuator, user: create(:user, username: 'Rachel', email: 'rachel@valuators.org'))
budget_investment = create(:budget_investment,
price: 1234,
price_first_year: 1000,
feasibility: "unfeasible",
unfeasibility_explanation: 'It is impossible',
administrator: administrator)
budget_investment.valuators << valuator

visit admin_budget_budget_investments_path(budget_investment.budget)

click_link budget_investment.title

expect(page).to have_content(budget_investment.title)
expect(page).to have_content(budget_investment.description)
expect(page).to have_content(budget_investment.author.name)
expect(page).to have_content(budget_investment.heading.name)
expect(page).to have_content('1234')
expect(page).to have_content('1000')
expect(page).to have_content('Unfeasible')
expect(page).to have_content('It is impossible')
expect(page).to have_content('Ana (ana@admins.org)')

within('#assigned_valuators') do
expect(page).to have_content('Rachel (rachel@valuators.org)')
context 'Show' do
background do
@administrator = create(:administrator, user: create(:user, username: 'Ana', email: 'ana@admins.org'))
end

scenario 'Show the investment details' do
valuator = create(:valuator, user: create(:user, username: 'Rachel', email: 'rachel@valuators.org'))
budget_investment = create(:budget_investment,
price: 1234,
price_first_year: 1000,
feasibility: "unfeasible",
unfeasibility_explanation: 'It is impossible',
administrator: @administrator)
budget_investment.valuators << valuator

visit admin_budget_budget_investments_path(budget_investment.budget)

click_link budget_investment.title

expect(page).to have_content(budget_investment.title)
expect(page).to have_content(budget_investment.description)
expect(page).to have_content(budget_investment.author.name)
expect(page).to have_content(budget_investment.heading.name)
expect(page).to have_content('1234')
expect(page).to have_content('1000')
expect(page).to have_content('Unfeasible')
expect(page).to have_content('It is impossible')
expect(page).to have_content('Ana (ana@admins.org)')

within('#assigned_valuators') do
expect(page).to have_content('Rachel (rachel@valuators.org)')
end
end

scenario "If budget is finished, investment cannot be edited" do
# Only milestones can be managed

finished_budget = create(:budget, :finished)
budget_investment = create(:budget_investment,
budget: finished_budget,
administrator: @administrator)
visit admin_budget_budget_investments_path(budget_investment.budget)

click_link budget_investment.title

expect(page).to_not have_link "Edit"
expect(page).to_not have_link "Edit classification"
expect(page).to_not have_link "Edit dossier"
expect(page).to have_link "Create new milestone"
end
end

Expand Down

0 comments on commit e0df190

Please sign in to comment.