From 46dd9de795e3b13a2527cd6bfa9dadb7fbfc5cdc Mon Sep 17 00:00:00 2001 From: Kat Date: Mon, 2 Sep 2024 16:57:31 +0100 Subject: [PATCH] Update view logs outcomes link --- app/controllers/merge_requests_controller.rb | 1 + app/helpers/merge_requests_helper.rb | 2 +- app/models/merge_request.rb | 16 ++++++++++++++ config/routes.rb | 1 + .../merge_requests_controller_spec.rb | 22 +++++++++++++++++-- 5 files changed, 39 insertions(+), 3 deletions(-) diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index 017b1d1fc..7de6c5f02 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -12,6 +12,7 @@ class MergeRequestsController < ApplicationController def user_outcomes; end def relationship_outcomes; end def scheme_outcomes; end + def logs_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 bda0b114f..f5c78ac7b 100644 --- a/app/helpers/merge_requests_helper.rb +++ b/app/helpers/merge_requests_helper.rb @@ -27,7 +27,7 @@ module MergeRequestsHelper [ { 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_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 logs after merge", value: display_value_or_placeholder(merge_request.total_logs_label), action: merge_outcome_action(merge_request, "logs_outcomes") }, { label: "Total stock owners & managing agents after merge", value: display_value_or_placeholder(merge_request.total_stock_owners_managing_agents_label), action: merge_outcome_action(merge_request, "relationship_outcomes") }, ] end diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 15e7e5fb9..0a9e297cf 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -144,4 +144,20 @@ class MergeRequest < ApplicationRecord "#{stock_owners_count} #{'stock owner'.pluralize(stock_owners_count)}\n#{managing_agents_count} #{'managing agent'.pluralize(managing_agents_count)}" end + + def total_sales_logs_after_merge + return total_sales_logs if status == STATUS[:request_merged] || status == STATUS[:processing] + + (absorbing_organisation.sales_logs.pluck(:id) + merging_organisations.map { |org| org.sales_logs.pluck(:id) }.flatten).uniq.count + end + + def total_lettings_logs_after_merge + return total_lettings_logs if status == STATUS[:request_merged] || status == STATUS[:processing] + + (absorbing_organisation.lettings_logs.pluck(:id) + merging_organisations.map { |org| org.lettings_logs.pluck(:id) }.flatten).uniq.count + end + + def total_logs_label + "#{total_lettings_logs_after_merge} lettings logs
#{total_sales_logs_after_merge} sales logs" + end end diff --git a/config/routes.rb b/config/routes.rb index 1706a140c..4817bebb9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -214,6 +214,7 @@ Rails.application.routes.draw do get "user-outcomes" get "relationship-outcomes" get "scheme-outcomes" + get "logs-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 7bcfc75ec..2676563d7 100644 --- a/spec/requests/merge_requests_controller_spec.rb +++ b/spec/requests/merge_requests_controller_spec.rb @@ -497,6 +497,10 @@ RSpec.describe MergeRequestsController, type: :request 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) + create(:lettings_log, owning_organisation: organisation) + create(:lettings_log, owning_organisation: other_organisation) + create_list(:sales_log, 2, owning_organisation: other_organisation) + create(:sales_log, owning_organisation: organisation) get "/merge-request/#{merge_request.id}", headers: end @@ -525,15 +529,22 @@ 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, existing_absorbing_organisation: true) } - it "shows users and schemes count and has links to view merge outcomes" do + it "shows outcomes count and has links to view merge outcomes" do + expect(page).to have_link("View", href: user_outcomes_merge_request_path(merge_request)) expect(page).to have_link("View", href: scheme_outcomes_merge_request_path(merge_request)) + expect(page).to have_link("View", href: relationship_outcomes_merge_request_path(merge_request)) + expect(page).to have_link("View", href: logs_outcomes_merge_request_path(merge_request)) expect(page).to have_content("4 users") expect(page).to have_content("4 schemes") + expect(page).to have_content("0 stock owners") + expect(page).to have_content("0 managing agents") + expect(page).to have_content("2 lettings logs") + expect(page).to have_content("3 sales logs") end end context "with a merged request" do - let(:merge_request) { create(:merge_request, request_merged: true, total_users: 34, total_schemes: 12, total_stock_owners: 8, total_managing_agents: 5) } + let(:merge_request) { create(:merge_request, request_merged: true, total_users: 34, total_schemes: 12, total_stock_owners: 8, total_managing_agents: 5, total_lettings_logs: 4, total_sales_logs: 5) } it "shows saved users count and doesn't have links to view merge outcomes" do expect(merge_request.status).to eq("request_merged") @@ -553,6 +564,13 @@ RSpec.describe MergeRequestsController, type: :request do expect(page).to have_content("8 stock owners") expect(page).to have_content("5 managing agents") end + + it "shows logs counts 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: logs_outcomes_merge_request_path(merge_request)) + expect(page).to have_content("4 lettings logs") + expect(page).to have_content("5 sales logs") + end end context "with a processing request" do