From 1d6040cd5bdf8c0a6ee02b4a686f42a01a6041a3 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Wed, 19 Feb 2020 17:47:13 +0500 Subject: [PATCH] Fix async que job calling --- app/jobs/send_e_invoice_job.rb | 17 +++++++++++------ app/models/registrar.rb | 3 +-- test/jobs/send_e_invoice_job_test.rb | 8 +++++--- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/jobs/send_e_invoice_job.rb b/app/jobs/send_e_invoice_job.rb index 6e7b5edb8..e281db14d 100644 --- a/app/jobs/send_e_invoice_job.rb +++ b/app/jobs/send_e_invoice_job.rb @@ -1,21 +1,26 @@ class SendEInvoiceJob < Que::Job - def run(invoice) - destroy if invoice.do_not_send_e_invoice? + def run(invoice_id) + invoice = run_condition(Invoice.find_by(id: invoice_id)) invoice.to_e_invoice.deliver - ActiveRecord::Base.transaction do invoice.update(e_invoice_sent_at: Time.zone.now) log_success(invoice) destroy end - rescue Exception => e + rescue StandardError => e log_error(invoice: invoice, error: e) raise e end private + def run_condition(invoice) + destroy unless invoice + destroy if invoice.do_not_send_e_invoice? + invoice + end + def log_success(invoice) id = invoice.try(:id) || invoice message = "E-Invoice for an invoice with ID # #{id} was sent successfully" @@ -26,8 +31,8 @@ class SendEInvoiceJob < Que::Job id = invoice.try(:id) || invoice message = <<~TEXT.squish There was an error sending e-invoice for invoice with ID # #{id}. - The error message was the following: #{error}. - This job will retry + The error message was the following: #{error} + This job will retry. TEXT logger.error message end diff --git a/app/models/registrar.rb b/app/models/registrar.rb index 94b01517e..f657cdc74 100644 --- a/app/models/registrar.rb +++ b/app/models/registrar.rb @@ -99,8 +99,7 @@ class Registrar < ApplicationRecord } ] ) - - SendEInvoiceJob.enqueue(invoice) + SendEInvoiceJob.enqueue(invoice.id) invoice end diff --git a/test/jobs/send_e_invoice_job_test.rb b/test/jobs/send_e_invoice_job_test.rb index 5ea09e576..384479e92 100644 --- a/test/jobs/send_e_invoice_job_test.rb +++ b/test/jobs/send_e_invoice_job_test.rb @@ -13,8 +13,9 @@ class SendEInvoiceJobTest < ActiveSupport::TestCase EInvoice::Providers::TestProvider.deliveries.clear assert_nothing_raised do - SendEInvoiceJob.enqueue(@invoice) + SendEInvoiceJob.enqueue(@invoice.id) end + @invoice.reload assert_not @invoice.e_invoice_sent_at.blank? assert_equal 1, EInvoice::Providers::TestProvider.deliveries.count @@ -28,7 +29,7 @@ class SendEInvoiceJobTest < ActiveSupport::TestCase stub_request(:get, "https://testfinance.post.ee/finance/erp/erpServices.wsdl").to_timeout assert_raise HTTPClient::TimeoutError do - SendEInvoiceJob.enqueue(@invoice) + SendEInvoiceJob.enqueue(@invoice.id) end assert @invoicee_invoice_sent_at.blank? @@ -36,8 +37,9 @@ class SendEInvoiceJobTest < ActiveSupport::TestCase EInvoice::Providers::TestProvider.deliveries.clear assert_nothing_raised do - SendEInvoiceJob.enqueue(@invoice) + SendEInvoiceJob.enqueue(@invoice.id) end + @invoice.reload assert_not @invoice.e_invoice_sent_at.blank? assert_equal 1, EInvoice::Providers::TestProvider.deliveries.count