From 2d6acd1185f8427a367297db504eebcf8646b452 Mon Sep 17 00:00:00 2001 From: Kat Date: Tue, 3 Sep 2024 11:17:15 +0100 Subject: [PATCH] Set logs outcome before merge and on merge fail --- app/controllers/merge_requests_controller.rb | 9 +------ app/jobs/process_merge_request_job.rb | 2 +- app/models/merge_request.rb | 26 +++++++++++++++++++ spec/jobs/process_merge_request_job_spec.rb | 8 ++++-- .../merge_requests_controller_spec.rb | 6 +++++ 5 files changed, 40 insertions(+), 11 deletions(-) diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index 7de6c5f02..a21d42bbb 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -67,14 +67,7 @@ class MergeRequestsController < ApplicationController def start_merge if @merge_request.status == "ready_to_merge" - @merge_request.update!( - processing: true, - last_failed_attempt: nil, - total_users: @merge_request.total_visible_users_after_merge, - total_schemes: @merge_request.total_visible_schemes_after_merge, - total_stock_owners: @merge_request.total_stock_owners_after_merge, - total_managing_agents: @merge_request.total_managing_agents_after_merge, - ) + @merge_request.start_merge! ProcessMergeRequestJob.perform_later(merge_request: @merge_request) end diff --git a/app/jobs/process_merge_request_job.rb b/app/jobs/process_merge_request_job.rb index 253aab547..8c3d1842c 100644 --- a/app/jobs/process_merge_request_job.rb +++ b/app/jobs/process_merge_request_job.rb @@ -10,6 +10,6 @@ class ProcessMergeRequestJob < ApplicationJob Merge::MergeOrganisationsService.new(absorbing_organisation_id:, merging_organisation_ids:, merge_date:, absorbing_organisation_active_from_merge_date:).call merge_request.update!(request_merged: true, last_failed_attempt: nil) rescue StandardError - merge_request.update!(last_failed_attempt: Time.zone.now, processing: false, total_users: nil, total_schemes: nil) + merge_request.set_back_to_ready_to_merge! end end diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 3a7f070d0..7e06180fd 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -160,4 +160,30 @@ class MergeRequest < ApplicationRecord def total_logs_label "#{total_visible_lettings_logs_after_merge} lettings logs
#{total_visible_sales_logs_after_merge} sales logs" end + + def start_merge! + update!( + processing: true, + last_failed_attempt: nil, + total_users: total_visible_users_after_merge, + total_schemes: total_visible_schemes_after_merge, + total_stock_owners: total_stock_owners_after_merge, + total_managing_agents: total_managing_agents_after_merge, + total_lettings_logs: total_visible_lettings_logs_after_merge, + total_sales_logs: total_visible_sales_logs_after_merge, + ) + end + + def set_back_to_ready_to_merge! + update!( + last_failed_attempt: Time.zone.now, + processing: false, + total_users: nil, + total_schemes: nil, + total_stock_owners: nil, + total_managing_agents: nil, + total_lettings_logs: nil, + total_sales_logs: nil, + ) + end end diff --git a/spec/jobs/process_merge_request_job_spec.rb b/spec/jobs/process_merge_request_job_spec.rb index 7a056ae9d..72ccbdf26 100644 --- a/spec/jobs/process_merge_request_job_spec.rb +++ b/spec/jobs/process_merge_request_job_spec.rb @@ -13,7 +13,7 @@ describe ProcessMergeRequestJob do let(:organisation) { create(:organisation) } let(:merging_organisation) { create(:organisation) } let(:other_merging_organisation) { create(:organisation) } - let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, absorbing_organisation: organisation, merge_date: Time.zone.local(2022, 3, 3), total_users: 5, total_schemes: 5, existing_absorbing_organisation: true) } + let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, absorbing_organisation: organisation, merge_date: Time.zone.local(2022, 3, 3), total_users: 5, total_schemes: 5, total_lettings_logs: 2, total_sales_logs: 8, total_managing_agents: 2, total_stock_owners: 1, existing_absorbing_organisation: true) } before do create(:merge_request_organisation, merge_request:, merging_organisation:) @@ -45,7 +45,7 @@ describe ProcessMergeRequestJob do expect(merge_request.reload.last_failed_attempt).to be_nil end - it "sets last_failed_attempt value, sets processing to false and clears total_schemes and total_users if there's an error" do + it "sets last_failed_attempt value, sets processing to false and clears all outcomes if there's an error" do allow(merge_organisations_service).to receive(:call).and_raise(ActiveRecord::Rollback) expect(merge_request.last_failed_attempt).to be_nil @@ -56,6 +56,10 @@ describe ProcessMergeRequestJob do expect(merge_request.processing).to eq(false) expect(merge_request.total_users).to be_nil expect(merge_request.total_schemes).to be_nil + expect(merge_request.total_managing_agents).to be_nil + expect(merge_request.total_stock_owners).to be_nil + expect(merge_request.total_lettings_logs).to be_nil + expect(merge_request.total_sales_logs).to be_nil end end end diff --git a/spec/requests/merge_requests_controller_spec.rb b/spec/requests/merge_requests_controller_spec.rb index 74c784074..dc1dd817d 100644 --- a/spec/requests/merge_requests_controller_spec.rb +++ b/spec/requests/merge_requests_controller_spec.rb @@ -470,6 +470,8 @@ RSpec.describe MergeRequestsController, type: :request do create(:merge_request_organisation, merge_request:, merging_organisation: other_organisation) create(:merge_request_organisation, merge_request:, merging_organisation:) create_list(:scheme, 2, owning_organisation: organisation) + create(:lettings_log, owning_organisation: organisation) + create(:sales_log, owning_organisation: organisation) end it "runs the job with correct merge request" do @@ -479,6 +481,10 @@ RSpec.describe MergeRequestsController, type: :request do expect(merge_request.reload.status).to eq("processing") expect(merge_request.total_users).to eq(5) expect(merge_request.total_schemes).to eq(2) + expect(merge_request.total_stock_owners).to eq(0) + expect(merge_request.total_managing_agents).to eq(0) + expect(merge_request.total_lettings_logs).to eq(1) + expect(merge_request.total_sales_logs).to eq(1) end end