From 9f623e0cb212cfe11a3e346a2a1d6f1392d96640 Mon Sep 17 00:00:00 2001 From: kosiakkatrina <54268893+kosiakkatrina@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:14:11 +0100 Subject: [PATCH] CLDC-3274 Display organisation merges for a longer period (#2456) * Display organisation merges for a longer period * Refactor --- .../lettings_log_summary_component.html.erb | 2 +- app/helpers/filters_helper.rb | 4 +-- app/models/form_handler.rb | 4 +++ app/models/organisation.rb | 13 ++++--- .../_merged_organisation_details.html.erb | 4 +-- .../requests/organisations_controller_spec.rb | 34 +++++++++++-------- 6 files changed, 38 insertions(+), 23 deletions(-) diff --git a/app/components/lettings_log_summary_component.html.erb b/app/components/lettings_log_summary_component.html.erb index 92636b148..89fddad20 100644 --- a/app/components/lettings_log_summary_component.html.erb +++ b/app/components/lettings_log_summary_component.html.erb @@ -28,7 +28,7 @@ <% end %>

<% end %> - <% if current_user.support? || current_user.organisation.has_managing_agents? || current_user.organisation.has_recent_absorbed_organisations? %> + <% if current_user.support? || current_user.organisation.has_managing_agents? || current_user.organisation.has_organisations_absorbed_during_displayed_collection_period? %>
<% if log.owning_organisation %>
diff --git a/app/helpers/filters_helper.rb b/app/helpers/filters_helper.rb index 59b407527..f60946c74 100644 --- a/app/helpers/filters_helper.rb +++ b/app/helpers/filters_helper.rb @@ -142,11 +142,11 @@ module FiltersHelper return true if current_user.organisation.stock_owners.count > 1 return true if current_user.organisation.stock_owners.count.positive? && current_user.organisation.holds_own_stock? - current_user.organisation.has_recent_absorbed_organisations? + current_user.organisation.has_organisations_absorbed_during_displayed_collection_period? end def non_support_with_managing_orgs? - current_user.organisation.managing_agents.count >= 1 || current_user.organisation.has_recent_absorbed_organisations? + current_user.organisation.managing_agents.count >= 1 || current_user.organisation.has_organisations_absorbed_during_displayed_collection_period? end def user_lettings_path? diff --git a/app/models/form_handler.rb b/app/models/form_handler.rb index e4774ccf1..02f3a9d70 100644 --- a/app/models/form_handler.rb +++ b/app/models/form_handler.rb @@ -229,6 +229,10 @@ class FormHandler years end + def start_date_of_earliest_lettings_form + lettings_forms.values.map(&:start_date).min + end + private def get_all_forms diff --git a/app/models/organisation.rb b/app/models/organisation.rb index 0bd69f847..25a3fdd0d 100644 --- a/app/models/organisation.rb +++ b/app/models/organisation.rb @@ -40,6 +40,7 @@ class Organisation < ApplicationRecord scope :filter_by_active, -> { where(active: true) } scope :filter_by_inactive, -> { where(active: false) } scope :merged_during_open_collection_period, -> { where("merge_date >= ?", FormHandler.instance.start_date_of_earliest_open_for_editing_collection_period) } + scope :merged_during_displayed_collection_period, -> { where("merge_date >= ?", FormHandler.instance.start_date_of_earliest_lettings_form) } has_paper_trail @@ -156,14 +157,18 @@ class Organisation < ApplicationRecord sales_logs.after_date(FormHandler.instance.sales_earliest_open_for_editing_collection_start_date).duplicate_sets.map { |array_str| array_str ? array_str.map(&:to_i) : [] } end - def recently_absorbed_organisations_grouped_by_merge_date - return unless absorbed_organisations.present? && absorbed_organisations.merged_during_open_collection_period.present? + def organisations_absorbed_during_displayed_collection_period_grouped_by_merge_date + return unless absorbed_organisations.merged_during_displayed_collection_period.exists? - absorbed_organisations.merged_during_open_collection_period.group_by(&:merge_date) + absorbed_organisations.merged_during_displayed_collection_period.group_by(&:merge_date) end def has_recent_absorbed_organisations? - absorbed_organisations&.merged_during_open_collection_period.present? + absorbed_organisations.merged_during_open_collection_period.exists? + end + + def has_organisations_absorbed_during_displayed_collection_period? + absorbed_organisations.merged_during_displayed_collection_period.exists? end def organisation_or_stock_owner_signed_dsa_and_holds_own_stock? diff --git a/app/views/organisations/_merged_organisation_details.html.erb b/app/views/organisations/_merged_organisation_details.html.erb index e54735225..020051156 100644 --- a/app/views/organisations/_merged_organisation_details.html.erb +++ b/app/views/organisations/_merged_organisation_details.html.erb @@ -1,6 +1,6 @@ -<% if @organisation.recently_absorbed_organisations_grouped_by_merge_date.present? %> +<% if @organisation.organisations_absorbed_during_displayed_collection_period_grouped_by_merge_date.present? %> <%= govuk_details(summary_text: "View all organisations that were merged into #{@organisation.name}") do %> - <% @organisation.recently_absorbed_organisations_grouped_by_merge_date.each do |merge_date, organisations| %> + <% @organisation.organisations_absorbed_during_displayed_collection_period_grouped_by_merge_date.each do |merge_date, organisations| %>

Merge date: <%= merge_date&.to_formatted_s(:govuk_date) %>

<%= govuk_table do |table| %> <%= table.with_head do |head| %> diff --git a/spec/requests/organisations_controller_spec.rb b/spec/requests/organisations_controller_spec.rb index 1b236f8fc..f30a1e4eb 100644 --- a/spec/requests/organisations_controller_spec.rb +++ b/spec/requests/organisations_controller_spec.rb @@ -381,14 +381,11 @@ RSpec.describe OrganisationsController, type: :request do end context "when the organisation has absorbed other organisations" do - let!(:absorbed_organisation) { create(:organisation, name: "First Absorbed Organisation") } - let!(:other_absorbed_organisation) { create(:organisation, name: "Other Absorbed Organisation") } - let!(:previously_absorbed_organisation) { create(:organisation, name: "Previously Absorbed Organisation") } + let!(:absorbed_organisation) { create(:organisation, name: "First Absorbed Organisation", with_dsa: false, merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation) } + let!(:other_absorbed_organisation) { create(:organisation, name: "Other Absorbed Organisation", with_dsa: false, merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation) } + let!(:previously_absorbed_organisation) { create(:organisation, name: "Previously Absorbed Organisation", with_dsa: false, merge_date: Time.zone.local(2023, 4, 2), absorbing_organisation: organisation) } before do - absorbed_organisation.update!(merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation) - other_absorbed_organisation.update!(merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation) - previously_absorbed_organisation.update!(merge_date: Time.zone.local(2023, 4, 2), absorbing_organisation: organisation) get "/organisations/#{organisation.id}/details", headers:, params: {} end @@ -406,12 +403,23 @@ RSpec.describe OrganisationsController, type: :request do end context "when the organisation has absorbed other organisations during a closed collection period" do - let!(:absorbed_organisation) { create(:organisation, name: "First Absorbed Organisation") } - let!(:other_absorbed_organisation) { create(:organisation, name: "Other Absorbed Organisation") } + before do + create(:organisation, name: "First Absorbed Organisation", with_dsa: false, merge_date: Time.zone.today - 2.years, absorbing_organisation: organisation) + create(:organisation, name: "Other Absorbed Organisation", with_dsa: false, merge_date: Time.zone.today - 2.years, absorbing_organisation: organisation) + get "/organisations/#{organisation.id}/details", headers:, params: {} + end + + it "displays absorbed organisations" do + expect(page).to have_content("View all organisations that were merged into #{organisation.name}") + expect(page).to have_content("First Absorbed Organisation") + expect(page).to have_content("Other Absorbed Organisation") + end + end + context "when the organisation has absorbed other organisations during a collection period before archived" do before do - absorbed_organisation.update!(merge_date: Time.zone.local(2021, 4, 3), absorbing_organisation: organisation) - other_absorbed_organisation.update!(merge_date: Time.zone.local(2021, 4, 3), absorbing_organisation: organisation) + create(:organisation, name: "First Absorbed Organisation", with_dsa: false, merge_date: Time.zone.today - 3.years, absorbing_organisation: organisation) + create(:organisation, name: "Other Absorbed Organisation", with_dsa: false, merge_date: Time.zone.today - 3.years, absorbing_organisation: organisation) get "/organisations/#{organisation.id}/details", headers:, params: {} end @@ -424,12 +432,10 @@ RSpec.describe OrganisationsController, type: :request do end context "when the organisation has absorbed other organisations without merge dates" do - let!(:absorbed_organisation) { create(:organisation, name: "First Absorbed Organisation") } - let!(:other_absorbed_organisation) { create(:organisation, name: "Other Absorbed Organisation") } + let!(:absorbed_organisation) { create(:organisation, name: "First Absorbed Organisation", with_dsa: false, merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation) } + let!(:other_absorbed_organisation) { create(:organisation, name: "Other Absorbed Organisation", with_dsa: false, merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation) } before do - absorbed_organisation.update!(merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation) - other_absorbed_organisation.update!(merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation) get "/organisations/#{organisation.id}/details", headers:, params: {} end