From 47e601f3cdce75e1ce5e5f362cb9406c6a8cd33f Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Tue, 4 Feb 2020 16:20:07 +0500 Subject: [PATCH] Add test to check if job works --- app/jobs/send_e_invoice_job.rb | 9 ++---- app/models/registrar.rb | 3 +- test/jobs/send_e_invoice_job_test.rb | 45 ++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 test/jobs/send_e_invoice_job_test.rb diff --git a/app/jobs/send_e_invoice_job.rb b/app/jobs/send_e_invoice_job.rb index 9e8af7c65..36e024b1d 100644 --- a/app/jobs/send_e_invoice_job.rb +++ b/app/jobs/send_e_invoice_job.rb @@ -1,19 +1,17 @@ class SendEInvoiceJob < Que::Job - def run(invoice) return if invoice.e_invoice_sent_at - e_invoice = invoice.to_e_invoice - e_invoice.deliver + invoice.to_e_invoice.deliver ActiveRecord::Base.transaction do invoice.update(e_invoice_sent_at: Time.zone.now) log_success(invoice) destroy end - - rescue Savon::Error => e + rescue StandardError => e log_error(invoice: invoice, error: e) + raise e end private @@ -35,5 +33,4 @@ class SendEInvoiceJob < Que::Job def logger Rails.logger end - end diff --git a/app/models/registrar.rb b/app/models/registrar.rb index 88aa1c629..94b01517e 100644 --- a/app/models/registrar.rb +++ b/app/models/registrar.rb @@ -100,8 +100,7 @@ class Registrar < ApplicationRecord ] ) - e_invoice = invoice.to_e_invoice - e_invoice.deliver + SendEInvoiceJob.enqueue(invoice) invoice end diff --git a/test/jobs/send_e_invoice_job_test.rb b/test/jobs/send_e_invoice_job_test.rb new file mode 100644 index 000000000..5ea09e576 --- /dev/null +++ b/test/jobs/send_e_invoice_job_test.rb @@ -0,0 +1,45 @@ +require 'test_helper' + +class SendEInvoiceJobTest < ActiveSupport::TestCase + + def teardown + EInvoice.provider = EInvoice::Providers::TestProvider.new + EInvoice::Providers::TestProvider.deliveries.clear + end + + def test_if_invoice_is_sended + @invoice = invoices(:one) + EInvoice.provider = EInvoice::Providers::TestProvider.new + EInvoice::Providers::TestProvider.deliveries.clear + + assert_nothing_raised do + SendEInvoiceJob.enqueue(@invoice) + end + + assert_not @invoice.e_invoice_sent_at.blank? + assert_equal 1, EInvoice::Providers::TestProvider.deliveries.count + end + + def test_if_invoice_sending_retries + @invoice = invoices(:one) + provider_config = { password: nil, + test_mode: true } + EInvoice.provider = EInvoice::Providers::OmnivaProvider.new(provider_config) + stub_request(:get, "https://testfinance.post.ee/finance/erp/erpServices.wsdl").to_timeout + + assert_raise HTTPClient::TimeoutError do + SendEInvoiceJob.enqueue(@invoice) + end + assert @invoicee_invoice_sent_at.blank? + + EInvoice.provider = EInvoice::Providers::TestProvider.new + EInvoice::Providers::TestProvider.deliveries.clear + + assert_nothing_raised do + SendEInvoiceJob.enqueue(@invoice) + end + + assert_not @invoice.e_invoice_sent_at.blank? + assert_equal 1, EInvoice::Providers::TestProvider.deliveries.count + end +end