Browse Source

Set logs outcome before merge and on merge fail

pull/2618/head
Kat 2 years ago
parent
commit
2d6acd1185
  1. 9
      app/controllers/merge_requests_controller.rb
  2. 2
      app/jobs/process_merge_request_job.rb
  3. 26
      app/models/merge_request.rb
  4. 8
      spec/jobs/process_merge_request_job_spec.rb
  5. 6
      spec/requests/merge_requests_controller_spec.rb

9
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

2
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

26
app/models/merge_request.rb

@ -160,4 +160,30 @@ class MergeRequest < ApplicationRecord
def total_logs_label
"#{total_visible_lettings_logs_after_merge} lettings logs<br>#{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

8
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

6
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

Loading…
Cancel
Save