diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index 51317bcfd..a6cfcbd2c 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -9,6 +9,7 @@ class MergeRequestsController < ApplicationController def helpdesk_ticket; end def merge_start_confirmation; end def user_outcomes; end + def scheme_outcomes; end def create ActiveRecord::Base.transaction do diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb index 6fd078553..90226699d 100644 --- a/app/helpers/merge_requests_helper.rb +++ b/app/helpers/merge_requests_helper.rb @@ -25,7 +25,7 @@ module MergeRequestsHelper def merge_outcomes(merge_request) [ { label: "Total users after merge", value: display_value_or_placeholder(merge_request.total_users_label), action: merge_outcome_action(merge_request, "user_outcomes") }, - { label: "Total schemes after merge", value: display_value_or_placeholder(merge_request.total_schemes), action: { text: "View", href: "#", visually_hidden_text: "total schemes after merge" } }, + { label: "Total schemes after merge", value: display_value_or_placeholder(merge_request.total_schemes_label), action: merge_outcome_action(merge_request, "scheme_outcomes") }, { label: "Total logs after merge", value: merge_request.total_lettings_logs.present? || merge_request.total_sales_logs.present? ? "#{merge_request.total_lettings_logs} lettings logs
#{merge_request.total_sales_logs} sales logs".html_safe : display_value_or_placeholder(nil), action: { text: "View", href: "#", visually_hidden_text: "total logs after merge" } }, { label: "Total stock owners & managing agents after merge", value: merge_request.total_stock_owners.present? || merge_request.total_managing_agents.present? ? "#{merge_request.total_stock_owners} stock owners
#{merge_request.total_managing_agents} managing agents".html_safe : display_value_or_placeholder(nil), action: { text: "View", href: "#", visually_hidden_text: "total stock owners & managing agents after merge" } }, ] diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index aae36195d..ef45ace38 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -76,4 +76,14 @@ class MergeRequest < ApplicationRecord ([absorbing_organisation] + merging_organisations).reject(&:has_visible_users?) end + + def total_visible_schemes_after_merge + return total_schemes if status == STATUS[:request_merged] || status == STATUS[:processing] + + absorbing_organisation.owned_schemes.visible.count + merging_organisations.sum { |org| org.owned_schemes.visible.count } + end + + def total_schemes_label + "#{total_visible_schemes_after_merge} Schemes" + end end diff --git a/config/routes.rb b/config/routes.rb index 63bafbd51..d8e61c04b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -211,6 +211,7 @@ Rails.application.routes.draw do get "helpdesk-ticket" get "merge-start-confirmation" get "user-outcomes" + get "scheme-outcomes" get "delete-confirmation", to: "merge_requests#delete_confirmation" delete "delete", to: "merge_requests#delete" patch "start-merge", to: "merge_requests#start_merge" diff --git a/spec/requests/merge_requests_controller_spec.rb b/spec/requests/merge_requests_controller_spec.rb index cad862688..9c9573ea0 100644 --- a/spec/requests/merge_requests_controller_spec.rb +++ b/spec/requests/merge_requests_controller_spec.rb @@ -451,6 +451,8 @@ RSpec.describe MergeRequestsController, type: :request do describe "#show" do before do create(:merge_request_organisation, merge_request:, merging_organisation: other_organisation) + create_list(:scheme, 2, owning_organisation: organisation) + create_list(:scheme, 2, owning_organisation: other_organisation) get "/merge-request/#{merge_request.id}", headers: end @@ -479,30 +481,43 @@ RSpec.describe MergeRequestsController, type: :request do context "with unmerged request" do let(:merge_request) { create(:merge_request, absorbing_organisation_id: organisation.id, merge_date: Time.zone.today) } - it "shows users count and has links to view merge outcomes" do - expect(page).to have_link("View", href: user_outcomes_merge_request_path(merge_request)) + it "shows users and schemes count and has links to view merge outcomes" do + expect(page).to have_link("View", href: scheme_outcomes_merge_request_path(merge_request)) expect(page).to have_content("4 Users") + expect(page).to have_content("4 Schemes") end end context "with a merged request" do - let(:merge_request) { create(:merge_request, request_merged: true, total_users: 34) } + let(:merge_request) { create(:merge_request, request_merged: true, total_users: 34, total_schemes: 12) } it "shows saved users count and doesn't have links to view merge outcomes" do expect(merge_request.status).to eq("request_merged") expect(page).not_to have_link("View", href: user_outcomes_merge_request_path(merge_request)) expect(page).to have_content("34 Users") end + + it "shows saved schemes count and doesn't have links to view merge outcomes" do + expect(merge_request.status).to eq("request_merged") + expect(page).not_to have_link("View", href: scheme_outcomes_merge_request_path(merge_request)) + expect(page).to have_content("12 Schemes") + end end context "with a processing request" do - let(:merge_request) { create(:merge_request, processing: true, total_users: 51) } + let(:merge_request) { create(:merge_request, processing: true, total_users: 51, total_schemes: 33) } it "shows saved users count and doesn't have links to view merge outcomes" do expect(merge_request.status).to eq("processing") expect(page).not_to have_link("View", href: user_outcomes_merge_request_path(merge_request)) expect(page).to have_content("51 Users") end + + it "shows saved schemes count and doesn't have links to view merge outcomes" do + expect(merge_request.status).to eq("processing") + expect(page).not_to have_link("View", href: scheme_outcomes_merge_request_path(merge_request)) + expect(page).to have_content("33 Schemes") + end end end