diff --git a/app/helpers/budget_investments_helper.rb b/app/helpers/budget_investments_helper.rb index 739d1b283..e81931c43 100644 --- a/app/helpers/budget_investments_helper.rb +++ b/app/helpers/budget_investments_helper.rb @@ -5,13 +5,10 @@ module BudgetInvestmentsHelper def link_to_investments_sorted_by(column) sort_by = column.downcase - default_direction = "desc" current_direction = params[:direction].downcase if params[:direction] - direction = current_direction == default_direction ? "asc" : default_direction - - icon = direction == default_direction ? "icon-arrow-top" : "icon-arrow-down" - icon = sort_by == params[:sort_by] ? icon : "" + direction = set_direction(current_direction) + icon = set_sorting_icon(direction, sort_by) translation = t("admin.budget_investments.index.sort_by.#{sort_by}") @@ -21,6 +18,15 @@ module BudgetInvestmentsHelper ) end + def set_sorting_icon(direction, sort_by) + icon = direction == "desc" ? "icon-arrow-top" : "icon-arrow-down" + icon = sort_by == params[:sort_by] ? icon : "" + end + + def set_direction(current_direction) + current_direction == "desc" ? "asc" : "desc" + end + def investments_minimal_view_path budget_investments_path(id: @heading.group.to_param, heading_id: @heading.to_param, diff --git a/spec/helpers/budget_investments_helper_spec.rb b/spec/helpers/budget_investments_helper_spec.rb new file mode 100644 index 000000000..4af4adb0e --- /dev/null +++ b/spec/helpers/budget_investments_helper_spec.rb @@ -0,0 +1,47 @@ +require 'rails_helper' + +RSpec.describe BudgetInvestmentsHelper, type: :helper do + + describe "#set_direction" do + + it "returns ASC if current_direction is DESC" do + expect(set_direction("desc")).to eq "asc" + end + + it "returns DESC if current_direction is ASC" do + expect(set_direction("asc")).to eq "desc" + end + + it "returns DESC if current_direction is nil" do + expect(set_direction(nil)).to eq "desc" + end + end + + describe "#set_sorting_icon" do + let(:sort_by) { "title" } + let(:params) { { sort_by: sort_by } } + + it "returns arrow down if current direction is ASC" do + expect(set_sorting_icon("asc", sort_by)).to eq "icon-arrow-down" + end + + it "returns arrow top if current direction is DESC" do + expect(set_sorting_icon("desc", sort_by)).to eq "icon-arrow-top" + end + + it "returns arrow down if sort_by present, but no direction" do + expect(set_sorting_icon(nil, sort_by)).to eq "icon-arrow-down" + end + + it "returns no icon if sort_by and direction is missing" do + params[:sort_by] = nil + expect(set_sorting_icon(nil, sort_by)).to eq "" + end + + it "returns no icon if sort_by is incorrect" do + params[:sort_by] = "random" + expect(set_sorting_icon("asc", sort_by)).to eq "" + end + end + +end