Browse Source

Update merge request when it gets processed

pull/2575/head
Kat 2 years ago
parent
commit
5cc2428cc5
  1. 3
      app/jobs/process_merge_request_job.rb
  2. 5
      db/migrate/20240814083017_add_last_failed_attempt.rb
  3. 3
      db/schema.rb
  4. 18
      spec/jobs/process_merge_request_job_spec.rb

3
app/jobs/process_merge_request_job.rb

@ -7,5 +7,8 @@ class ProcessMergeRequestJob < ApplicationJob
merge_date = merge_request.merge_date merge_date = merge_request.merge_date
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!(status: "request_merged", last_failed_attempt: nil)
rescue StandardError
merge_request.update!(last_failed_attempt: Time.zone.now)
end end
end end

5
db/migrate/20240814083017_add_last_failed_attempt.rb

@ -0,0 +1,5 @@
class AddLastFailedAttempt < ActiveRecord::Migration[7.0]
def change
add_column :merge_requests, :last_failed_attempt, :datetime
end
end

3
db/schema.rb

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2024_08_13_112119) do ActiveRecord::Schema[7.0].define(version: 2024_08_14_083017) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -432,6 +432,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_08_13_112119) do
t.integer "total_managing_agents" t.integer "total_managing_agents"
t.boolean "signed_dsa", default: false t.boolean "signed_dsa", default: false
t.datetime "discarded_at" t.datetime "discarded_at"
t.datetime "last_failed_attempt"
end end
create_table "notifications", force: :cascade do |t| create_table "notifications", force: :cascade do |t|

18
spec/jobs/process_merge_request_job_spec.rb

@ -24,6 +24,24 @@ describe ProcessMergeRequestJob 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))
job.perform(merge_request:) job.perform(merge_request:)
expect(merge_request.reload.status).to eq("request_merged")
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 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
job.perform(merge_request:)
merge_request.reload
expect(merge_request.last_failed_attempt).to be_within(10.seconds).of(Time.zone.now)
end end
end end
end end

Loading…
Cancel
Save