Browse Source

Call correct merge service flow

pull/2600/head
Kat 2 years ago committed by kosiakkatrina
parent
commit
61394dcd9f
  1. 5
      app/jobs/process_merge_request_job.rb
  2. 22
      spec/jobs/process_merge_request_job_spec.rb

5
app/jobs/process_merge_request_job.rb

@ -5,9 +5,10 @@ class ProcessMergeRequestJob < ApplicationJob
absorbing_organisation_id = merge_request.absorbing_organisation_id absorbing_organisation_id = merge_request.absorbing_organisation_id
merging_organisation_ids = merge_request.merging_organisations.pluck(:id) merging_organisation_ids = merge_request.merging_organisations.pluck(:id)
merge_date = merge_request.merge_date merge_date = merge_request.merge_date
absorbing_organisation_active_from_merge_date = !merge_request.existing_absorbing_organisation unless merge_request.existing_absorbing_organisation.nil?
Merge::MergeOrganisationsService.new(absorbing_organisation_id:, merging_organisation_ids:, merge_date:).call Merge::MergeOrganisationsService.new(absorbing_organisation_id:, merging_organisation_ids:, merge_date:, absorbing_organisation_active_from_merge_date:).call
merge_request.update!(request_merged: true) merge_request.update!(request_merged: true, last_failed_attempt: nil)
rescue StandardError rescue StandardError
merge_request.update!(last_failed_attempt: Time.zone.now, processing: false, total_users: nil, total_schemes: nil) merge_request.update!(last_failed_attempt: Time.zone.now, processing: false, total_users: nil, total_schemes: nil)
end end

22
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), total_users: 5, total_schemes: 5) } 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) }
before do before do
create(:merge_request_organisation, merge_request:, merging_organisation:) create(:merge_request_organisation, merge_request:, merging_organisation:)
@ -21,12 +21,30 @@ describe ProcessMergeRequestJob do
end end
it "calls the merge organisations service with correct arguments" do it "calls the merge organisations service with correct arguments" do
expect(Merge::MergeOrganisationsService).to receive(:new).with(absorbing_organisation_id: organisation.id, merging_organisation_ids: [merging_organisation.id, other_merging_organisation.id], merge_date: Time.zone.local(2022, 3, 3)) expect(Merge::MergeOrganisationsService).to receive(:new).with(absorbing_organisation_id: organisation.id, merging_organisation_ids: [merging_organisation.id, other_merging_organisation.id], merge_date: Time.zone.local(2022, 3, 3), absorbing_organisation_active_from_merge_date: false)
job.perform(merge_request:) job.perform(merge_request:)
expect(merge_request.reload.status).to eq("request_merged") expect(merge_request.reload.status).to eq("request_merged")
end end
context "with new absorbing organisation" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, absorbing_organisation: organisation, merge_date: Time.zone.local(2022, 3, 3), existing_absorbing_organisation: false) }
it "calls the merge organisations service with correct arguments" do
expect(Merge::MergeOrganisationsService).to receive(:new).with(absorbing_organisation_id: organisation.id, merging_organisation_ids: [merging_organisation.id, other_merging_organisation.id], merge_date: Time.zone.local(2022, 3, 3), absorbing_organisation_active_from_merge_date: true)
job.perform(merge_request:)
expect(merge_request.reload.status).to eq("request_merged")
end
end
it "clears last_failed_attempt value" do
merge_request.update!(last_failed_attempt: Time.zone.now)
job.perform(merge_request:)
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 total_schemes and 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)

Loading…
Cancel
Save