# frozen_string_literal: true require 'rails_helper' RSpec.describe ProcessSubmitterCompletionJob, sidekiq: :inline, type: :job do let(:account) { create(:account) } let(:user) { create(:user, account:) } let(:template) { create(:template, account:, author: user) } let(:submission) { create(:submission, template:, created_by_user: user) } let(:submitter) { create(:submitter, submission:, uuid: SecureRandom.uuid, completed_at: Time.current) } let!(:encrypted_config) do create(:encrypted_config, key: EncryptedConfig::ESIGN_CERTS_KEY, value: GenerateCertificate.call.transform_values(&:to_pem)) end describe '#perform' do it 'creates a completed submitter' do expect do described_class.perform_async('submitter_id' => submitter.id) end.to change(CompletedSubmitter, :count).by(1) completed_submitter = CompletedSubmitter.last submitter.reload expect(completed_submitter.submitter_id).to eq(submitter.id) expect(completed_submitter.submission_id).to eq(submitter.submission_id) expect(completed_submitter.account_id).to eq(submitter.submission.account_id) expect(completed_submitter.template_id).to eq(submitter.submission.template_id) expect(completed_submitter.source).to eq(submitter.submission.source) end it 'creates a completed document' do expect do described_class.perform_async('submitter_id' => submitter.id) end.to change(CompletedDocument, :count).by(1) completed_document = CompletedDocument.last expect(completed_document.submitter_id).to eq(submitter.id) expect(completed_document.sha256).to be_present expect(completed_document.sha256).to eq(submitter.documents.first.metadata['sha256']) end it 'raises an error if the submitter is not found' do expect do described_class.perform_async('submitter_id' => 'invalid_id') end.to raise_error(ActiveRecord::RecordNotFound) end end end