diff --git a/app/views/admin/budget_investments/_investments.html.erb b/app/views/admin/budget_investments/_investments.html.erb
index 7996a9a2b..f90c75ac7 100644
--- a/app/views/admin/budget_investments/_investments.html.erb
+++ b/app/views/admin/budget_investments/_investments.html.erb
@@ -55,28 +55,24 @@
<%= investment.valuation_finished? ? t('shared.yes'): t('shared.no') %>
- <% unless investment.budget.finished? %>
- <% if investment.selected? %>
- <%= link_to 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 %>
- <% elsif investment.feasible? && investment.valuation_finished? %>
- <%= link_to 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 %>
- <% end %>
+ <% if investment.selected? %>
+ <%= 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" %>
+ <% elsif investment.feasible? && investment.valuation_finished? %>
+ <%= 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" %>
<% end %>
|
<% if params[:filter] == 'selected' %>
diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb
index 1ad89e6aa..8c563188e 100644
--- a/spec/features/admin/budget_investments_spec.rb
+++ b/spec/features/admin/budget_investments_spec.rb
@@ -36,6 +36,21 @@ feature 'Admin budget investments' do
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)
@@ -279,33 +294,55 @@ feature 'Admin budget investments' do
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
+ context 'Show' do
+ background do
+ @administrator = create(:administrator, user: create(:user, username: 'Ana', email: 'ana@admins.org'))
+ end
- visit admin_budget_budget_investments_path(budget_investment.budget)
+ 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
- click_link budget_investment.title
+ visit admin_budget_budget_investments_path(budget_investment.budget)
- 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)')
+ click_link budget_investment.title
- within('#assigned_valuators') do
- expect(page).to have_content('Rachel (rachel@valuators.org)')
+ 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