From 71c828ca5c699f4005693e5313eb3d7848c87a31 Mon Sep 17 00:00:00 2001 From: gms-gs Date: Thu, 13 Aug 2026 12:15:19 +0100 Subject: [PATCH] Rollover details summary shows new school model data --- app/queries/rollover_progress_query.rb | 14 ++++++++ .../support/recruitment_cycles/show.html.erb | 5 +++ config/locales/en/activemodel.yml | 1 + spec/queries/rollover_progress_query_spec.rb | 36 +++++++++++++++++++ 4 files changed, 56 insertions(+) diff --git a/app/queries/rollover_progress_query.rb b/app/queries/rollover_progress_query.rb index c497ddc70e..61f4d77c4f 100644 --- a/app/queries/rollover_progress_query.rb +++ b/app/queries/rollover_progress_query.rb @@ -24,6 +24,10 @@ def remaining_to_rollover_count delegate :count, to: :rolled_over_study_sites, prefix: true + delegate :count, to: :eligible_schools, prefix: true + + delegate :count, to: :rolled_over_schools, prefix: true + delegate :count, to: :rolled_over_courses, prefix: true delegate :count, to: :eligible_partnerships, prefix: true @@ -89,6 +93,16 @@ def rolled_over_study_sites @rolled_over_study_sites ||= @target_cycle.study_sites end + def eligible_schools + @eligible_schools ||= @previous_target_cycle.provider_schools + .with_available_gias_school + .where(provider_id: eligible_providers.select(:id)) + end + + def rolled_over_schools + @rolled_over_schools ||= @target_cycle.provider_schools.with_available_gias_school + end + def rolled_over_partnerships ProviderPartnership.includes(:training_provider, :accredited_provider).where( "accredited_provider_id IN (:id) OR training_provider_id IN (:id)", diff --git a/app/views/support/recruitment_cycles/show.html.erb b/app/views/support/recruitment_cycles/show.html.erb index 1188a9b091..a2ca767fff 100644 --- a/app/views/support/recruitment_cycles/show.html.erb +++ b/app/views/support/recruitment_cycles/show.html.erb @@ -118,6 +118,11 @@ <% row.with_value(text: t(".rollover_status.summary", total_eligible_count: @rollover_progress_query.eligible_study_sites_count, rolled_over_count: @rollover_progress_query.rolled_over_study_sites_count)) %> <% end %> + <% summary_list.with_row do |row| %> + <% row.with_key(text: RolloverProgressQuery.human_attribute_name(:schools_summary)) %> + <% row.with_value(text: t(".rollover_status.summary", total_eligible_count: @rollover_progress_query.eligible_schools_count, rolled_over_count: @rollover_progress_query.rolled_over_schools_count)) %> + <% end %> + <% summary_list.with_row do |row| %> <% row.with_key(text: RolloverProgressQuery.human_attribute_name(:partnerships_summary)) %> <% row.with_value(text: t(".rollover_status.summary", total_eligible_count: @rollover_progress_query.eligible_partnerships_count, rolled_over_count: @rollover_progress_query.rolled_over_partnerships_count)) %> diff --git a/config/locales/en/activemodel.yml b/config/locales/en/activemodel.yml index 14c0683781..f7591f2965 100644 --- a/config/locales/en/activemodel.yml +++ b/config/locales/en/activemodel.yml @@ -16,6 +16,7 @@ en: providers_summary: Rolled over providers courses_summary: Rolled over courses study_sites_summary: Rolled over study sites + schools_summary: Rolled over schools remaining_to_rollover: Remaining to rollover providers_without_published_courses: Providers without published courses (not rolled over) errors: diff --git a/spec/queries/rollover_progress_query_spec.rb b/spec/queries/rollover_progress_query_spec.rb index fb0fc64bda..067677c120 100644 --- a/spec/queries/rollover_progress_query_spec.rb +++ b/spec/queries/rollover_progress_query_spec.rb @@ -168,6 +168,42 @@ end end + describe "#eligible_schools" do + let!(:eligible_school) { create(:provider_school, provider: provider_with_own_course) } + let!(:ineligible_school) { create(:provider_school, provider: provider_without_courses) } + let!(:closed_school) do + create( + :provider_school, + provider: provider_with_own_course, + gias_school: create(:gias_school, :closed), + ) + end + + before do + given_we_have_providers_and_courses_on_previous_target_cycle + end + + it "includes available schools belonging to eligible providers" do + expect(rollover_progress.eligible_schools).to contain_exactly(eligible_school) + end + + it "returns the correct count through delegation" do + expect(rollover_progress.eligible_schools_count).to eq(1) + end + end + + describe "#rolled_over_schools" do + let!(:rolled_over_school) { create(:provider_school, provider: rolled_over_provider) } + + it "includes available schools in the target cycle" do + expect(rollover_progress.rolled_over_schools).to contain_exactly(rolled_over_school) + end + + it "returns the correct count through delegation" do + expect(rollover_progress.rolled_over_schools_count).to eq(1) + end + end + describe "#eligible_partnerships" do let(:accredited_provider) { create(:provider, :accredited_provider) } let(:rollable_partnership_one) do