Browse Source

Set user outcomes before merge and on merge fail

pull/2602/head
Kat 2 years ago
parent
commit
b3690dba8a
  1. 2
      app/controllers/merge_requests_controller.rb
  2. 2
      app/jobs/process_merge_request_job.rb
  3. 5
      spec/jobs/process_merge_request_job_spec.rb
  4. 1
      spec/requests/merge_requests_controller_spec.rb

2
app/controllers/merge_requests_controller.rb

@ -63,7 +63,7 @@ class MergeRequestsController < ApplicationController
def start_merge def start_merge
if @merge_request.status == "ready_to_merge" if @merge_request.status == "ready_to_merge"
@merge_request.update!(processing: true, last_failed_attempt: nil) @merge_request.update!(processing: true, last_failed_attempt: nil, total_users: @merge_request.total_visible_users_after_merge)
ProcessMergeRequestJob.perform_later(merge_request: @merge_request) ProcessMergeRequestJob.perform_later(merge_request: @merge_request)
end end

2
app/jobs/process_merge_request_job.rb

@ -9,6 +9,6 @@ class ProcessMergeRequestJob < ApplicationJob
Merge::MergeOrganisationsService.new(absorbing_organisation_id:, merging_organisation_ids:, merge_date:).call Merge::MergeOrganisationsService.new(absorbing_organisation_id:, merging_organisation_ids:, merge_date:).call
merge_request.update!(request_merged: true) merge_request.update!(request_merged: true)
rescue StandardError rescue StandardError
merge_request.update!(last_failed_attempt: Time.zone.now, processing: false) merge_request.update!(last_failed_attempt: Time.zone.now, processing: false, total_users: nil)
end end
end end

5
spec/jobs/process_merge_request_job_spec.rb

@ -13,7 +13,7 @@ describe ProcessMergeRequestJob do
let(:organisation) { create(:organisation) } let(:organisation) { create(:organisation) }
let(:merging_organisation) { create(:organisation) } let(:merging_organisation) { create(:organisation) }
let(:other_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)) } let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, absorbing_organisation: organisation, merge_date: Time.zone.local(2022, 3, 3), total_users: 5) }
before do before do
create(:merge_request_organisation, merge_request:, merging_organisation:) create(:merge_request_organisation, merge_request:, merging_organisation:)
@ -27,7 +27,7 @@ describe ProcessMergeRequestJob do
expect(merge_request.reload.status).to eq("request_merged") expect(merge_request.reload.status).to eq("request_merged")
end end
it "sets last_failed_attempt value if there's an error and sets processing to false" do it "sets last_failed_attempt value, sets processing to false and clears total_users if there's an error" do
allow(merge_organisations_service).to receive(:call).and_raise(ActiveRecord::Rollback) allow(merge_organisations_service).to receive(:call).and_raise(ActiveRecord::Rollback)
expect(merge_request.last_failed_attempt).to be_nil expect(merge_request.last_failed_attempt).to be_nil
@ -36,6 +36,7 @@ describe ProcessMergeRequestJob do
merge_request.reload merge_request.reload
expect(merge_request.last_failed_attempt).to be_within(10.seconds).of(Time.zone.now) expect(merge_request.last_failed_attempt).to be_within(10.seconds).of(Time.zone.now)
expect(merge_request.processing).to eq(false) expect(merge_request.processing).to eq(false)
expect(merge_request.total_users).to be_nil
end end
end end
end end

1
spec/requests/merge_requests_controller_spec.rb

@ -434,6 +434,7 @@ RSpec.describe MergeRequestsController, type: :request do
expect(ProcessMergeRequestJob).to receive(:perform_later).with(merge_request:).once expect(ProcessMergeRequestJob).to receive(:perform_later).with(merge_request:).once
patch "/merge-request/#{merge_request.id}/start-merge" patch "/merge-request/#{merge_request.id}/start-merge"
expect(merge_request.reload.status).to eq("processing") expect(merge_request.reload.status).to eq("processing")
expect(merge_request.total_users).to eq(5)
end end
end end

Loading…
Cancel
Save