Add test to check if job works

This commit is contained in:
Alex Sherman 2020-02-04 16:20:07 +05:00
parent 2663c550fa
commit 47e601f3cd
3 changed files with 49 additions and 8 deletions

View file

@ -1,19 +1,17 @@
class SendEInvoiceJob < Que::Job class SendEInvoiceJob < Que::Job
def run(invoice) def run(invoice)
return if invoice.e_invoice_sent_at return if invoice.e_invoice_sent_at
e_invoice = invoice.to_e_invoice invoice.to_e_invoice.deliver
e_invoice.deliver
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
invoice.update(e_invoice_sent_at: Time.zone.now) invoice.update(e_invoice_sent_at: Time.zone.now)
log_success(invoice) log_success(invoice)
destroy destroy
end end
rescue StandardError => e
rescue Savon::Error => e
log_error(invoice: invoice, error: e) log_error(invoice: invoice, error: e)
raise e
end end
private private
@ -35,5 +33,4 @@ class SendEInvoiceJob < Que::Job
def logger def logger
Rails.logger Rails.logger
end end
end end

View file

@ -100,8 +100,7 @@ class Registrar < ApplicationRecord
] ]
) )
e_invoice = invoice.to_e_invoice SendEInvoiceJob.enqueue(invoice)
e_invoice.deliver
invoice invoice
end end

View file

@ -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