Go to investments list from a single heading group
There's no real point in linking to a page offering users to choose a heading when there's only one heading to choose. So we're linking to the investments index instead.
This commit is contained in:
@@ -23,8 +23,7 @@
|
||||
<h3>
|
||||
<%= group.name %> - <%= heading.name %>
|
||||
</h3>
|
||||
<%= link_to sanitize(ballot.amount_available_info(heading)),
|
||||
budget_group_path(budget, group) %>
|
||||
<%= link_to sanitize(ballot.amount_available_info(heading)), group_path(group) %>
|
||||
</div>
|
||||
<% if ballot.has_lines_in_group?(group) %>
|
||||
<h4 class="amount-spent text-right">
|
||||
@@ -52,7 +51,7 @@
|
||||
<h3>
|
||||
<%= group.name %>
|
||||
</h3>
|
||||
<%= link_to t("budgets.ballots.show.no_balloted_group_yet"), budget_group_path(budget, group) %>
|
||||
<%= link_to t("budgets.ballots.show.no_balloted_group_yet"), group_path(group) %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,4 +18,12 @@ class Budgets::Ballot::BallotComponent < ApplicationComponent
|
||||
def no_balloted_groups
|
||||
budget.groups.sort_by_name - ballot.groups
|
||||
end
|
||||
|
||||
def group_path(group)
|
||||
if group.multiple_headings?
|
||||
budget_group_path(budget, group)
|
||||
else
|
||||
budget_investments_path(budget, heading_id: group.headings.first)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -6,14 +6,48 @@ describe Budgets::Ballot::BallotComponent do
|
||||
|
||||
describe "link to group" do
|
||||
let(:budget) { create(:budget, :balloting) }
|
||||
let(:group) { create(:budget_group, budget: budget) }
|
||||
let(:ballot) { create(:budget_ballot, user: create(:user), budget: budget) }
|
||||
|
||||
it "displays links to vote on groups with no investments voted yet" do
|
||||
group = create(:budget_group, budget: budget)
|
||||
context "group with a single heading" do
|
||||
let!(:heading) { create(:budget_heading, group: group, price: 1000) }
|
||||
|
||||
render_inline Budgets::Ballot::BallotComponent.new(ballot)
|
||||
it "displays a link to vote investments when there aren't any investments in the ballot" do
|
||||
render_inline Budgets::Ballot::BallotComponent.new(ballot)
|
||||
|
||||
expect(page).to have_link "You have not voted on this group yet, go vote!", href: budget_group_path(budget, group)
|
||||
expect(page).to have_link "You have not voted on this group yet, go vote!",
|
||||
href: budget_investments_path(budget, heading_id: heading.id)
|
||||
end
|
||||
|
||||
it "displays a link to continue voting when there are investments in the ballot" do
|
||||
ballot.investments << create(:budget_investment, :selected, heading: heading, price: 200)
|
||||
|
||||
render_inline Budgets::Ballot::BallotComponent.new(ballot)
|
||||
|
||||
expect(page).to have_link "Still available to you €800",
|
||||
href: budget_investments_path(budget, heading_id: heading.id)
|
||||
end
|
||||
end
|
||||
|
||||
context "group with multiple headings" do
|
||||
let!(:heading) { create(:budget_heading, group: group, price: 1000) }
|
||||
before { create(:budget_heading, group: group) }
|
||||
|
||||
it "displays a link to vote on a heading when there aren't any investments in the ballot" do
|
||||
render_inline Budgets::Ballot::BallotComponent.new(ballot)
|
||||
|
||||
expect(page).to have_link "You have not voted on this group yet, go vote!",
|
||||
href: budget_group_path(budget, group)
|
||||
end
|
||||
|
||||
it "displays a link to change the heading when there are invesments in the ballot" do
|
||||
ballot.investments << create(:budget_investment, :selected, heading: heading, price: 200)
|
||||
|
||||
render_inline Budgets::Ballot::BallotComponent.new(ballot)
|
||||
|
||||
expect(page).to have_link "Still available to you €800",
|
||||
href: budget_group_path(budget, group)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user