From 6ec00f0ac03bd199e4525067e493017b09563dce Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Tue, 25 Jul 2023 18:24:33 +0100 Subject: [PATCH] feat: add/update org filter tests --- app/helpers/filters_helper.rb | 2 +- app/views/logs/_log_filters.html.erb | 2 +- spec/helpers/filters_helper_spec.rb | 53 +++++++++++++++++++++++++--- 3 files changed, 50 insertions(+), 7 deletions(-) diff --git a/app/helpers/filters_helper.rb b/app/helpers/filters_helper.rb index b441a2a25..825849ae5 100644 --- a/app/helpers/filters_helper.rb +++ b/app/helpers/filters_helper.rb @@ -44,7 +44,7 @@ module FiltersHelper JSON.parse(session[session_name_for(filter_type)])[filter] || "" end - def owning_organisations_filter_options(user) + def owning_organisation_filter_options(user) organisation_options = user.support? ? Organisation.all : ([user.organisation] + user.organisation.stock_owners + user.organisation.absorbed_organisations).uniq [OpenStruct.new(id: "", name: "Select an option")] + organisation_options.map { |org| OpenStruct.new(id: org.id, name: org.name) } end diff --git a/app/views/logs/_log_filters.html.erb b/app/views/logs/_log_filters.html.erb index 8f73a12a3..cc3e3b4fb 100644 --- a/app/views/logs/_log_filters.html.erb +++ b/app/views/logs/_log_filters.html.erb @@ -74,7 +74,7 @@ type: "select", label: "Owning Organisation", category: "owning_organisation", - options: owning_organisations_filter_options(@current_user), + options: owning_organisation_filter_options(@current_user), }, }, }, diff --git a/spec/helpers/filters_helper_spec.rb b/spec/helpers/filters_helper_spec.rb index 10b18ac1e..efa81a09c 100644 --- a/spec/helpers/filters_helper_spec.rb +++ b/spec/helpers/filters_helper_spec.rb @@ -161,23 +161,26 @@ RSpec.describe FiltersHelper do end end - describe "#owning_organisations_filter_options" do + describe "#owning_organisation_filter_options" do let(:parent_organisation) { FactoryBot.create(:organisation, name: "Parent organisation") } let(:child_organisation) { FactoryBot.create(:organisation, name: "Child organisation") } + let!(:absorbed_organisation) { FactoryBot.create(:organisation, name: "Absorbed organisation", absorbing_organisation: child_organisation) } before do FactoryBot.create(:organisation_relationship, parent_organisation:, child_organisation:) FactoryBot.create(:organisation, name: "Other organisation", id: 99) + user.organisation.reload end context "with a support user" do let(:user) { FactoryBot.create(:user, :support, organisation: child_organisation) } it "returns a list of all organisations" do - expect(owning_organisations_filter_options(user)).to eq([ + expect(owning_organisation_filter_options(user)).to eq([ OpenStruct.new(id: "", name: "Select an option"), - OpenStruct.new(id: parent_organisation.id, name: "Parent organisation"), OpenStruct.new(id: child_organisation.id, name: "Child organisation"), + OpenStruct.new(id: absorbed_organisation.id, name: "Absorbed organisation"), + OpenStruct.new(id: parent_organisation.id, name: "Parent organisation"), OpenStruct.new(id: 99, name: "Other organisation"), ]) end @@ -186,16 +189,56 @@ RSpec.describe FiltersHelper do context "with a data coordinator user" do let(:user) { FactoryBot.create(:user, :data_coordinator, organisation: child_organisation) } - it "returns a list of paret orgs and your own organisation" do - expect(owning_organisations_filter_options(user)).to eq([ + it "returns a list of parent orgs and your own organisation" do + expect(owning_organisation_filter_options(user.reload)).to eq([ OpenStruct.new(id: "", name: "Select an option"), OpenStruct.new(id: child_organisation.id, name: "Child organisation"), + OpenStruct.new(id: absorbed_organisation.id, name: "Absorbed organisation"), OpenStruct.new(id: parent_organisation.id, name: "Parent organisation"), ]) end end end + describe "#managing_organisation_filter_options" do + let(:parent_organisation) { FactoryBot.create(:organisation, name: "Parent organisation") } + let(:child_organisation) { FactoryBot.create(:organisation, name: "Child organisation") } + let!(:absorbed_organisation) { FactoryBot.create(:organisation, name: "Absorbed organisation", absorbing_organisation: parent_organisation) } + + before do + FactoryBot.create(:organisation_relationship, parent_organisation:, child_organisation:) + FactoryBot.create(:organisation, name: "Other organisation", id: 99) + user.organisation.reload + end + + context "with a support user" do + let(:user) { FactoryBot.create(:user, :support, organisation: parent_organisation) } + + it "returns a list of all organisations" do + expect(managing_organisation_filter_options(user)).to eq([ + OpenStruct.new(id: "", name: "Select an option"), + OpenStruct.new(id: parent_organisation.id, name: "Parent organisation"), + OpenStruct.new(id: absorbed_organisation.id, name: "Absorbed organisation"), + OpenStruct.new(id: child_organisation.id, name: "Child organisation"), + OpenStruct.new(id: 99, name: "Other organisation"), + ]) + end + end + + context "with a data coordinator user" do + let(:user) { FactoryBot.create(:user, :data_coordinator, organisation: parent_organisation) } + + it "returns a list of child orgs and your own organisation" do + expect(managing_organisation_filter_options(user.reload)).to eq([ + OpenStruct.new(id: "", name: "Select an option"), + OpenStruct.new(id: parent_organisation.id, name: "Parent organisation"), + OpenStruct.new(id: child_organisation.id, name: "Child organisation"), + OpenStruct.new(id: absorbed_organisation.id, name: "Absorbed organisation"), + ]) + end + end + end + describe "#collection_year_options" do it "includes 2023/2024 option" do expect(collection_year_options).to eq(