7 changed files with 92 additions and 1 deletions
@ -0,0 +1,11 @@ |
|||||||
|
class ProcessMergeRequestJob < ApplicationJob |
||||||
|
queue_as :default |
||||||
|
|
||||||
|
def perform(merge_request:) |
||||||
|
absorbing_organisation_id = merge_request.absorbing_organisation_id |
||||||
|
merging_organisation_ids = merge_request.merging_organisations.pluck(:id) |
||||||
|
merge_date = merge_request.merge_date |
||||||
|
|
||||||
|
Merge::MergeOrganisationsService.new(absorbing_organisation_id:, merging_organisation_ids:, merge_date:).call |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,29 @@ |
|||||||
|
require "rails_helper" |
||||||
|
|
||||||
|
describe ProcessMergeRequestJob do |
||||||
|
let(:job) { described_class.new } |
||||||
|
let(:merge_organisations_service) { instance_double(Merge::MergeOrganisationsService) } |
||||||
|
|
||||||
|
before do |
||||||
|
allow(Merge::MergeOrganisationsService).to receive(:new).and_return(merge_organisations_service) |
||||||
|
allow(merge_organisations_service).to receive(:call).and_return(nil) |
||||||
|
end |
||||||
|
|
||||||
|
context "when processing a merge request" 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)) } |
||||||
|
|
||||||
|
before do |
||||||
|
create(:merge_request_organisation, merge_request:, merging_organisation:) |
||||||
|
create(:merge_request_organisation, merge_request:, merging_organisation: other_merging_organisation) |
||||||
|
end |
||||||
|
|
||||||
|
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)) |
||||||
|
|
||||||
|
job.perform(merge_request:) |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
Loading…
Reference in new issue