mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-10 01:01:39 -05:00
47 lines
1.3 KiB
Ruby
47 lines
1.3 KiB
Ruby
|
|
# frozen_string_literal: true
|
||
|
|
|
||
|
|
require 'rails_helper'
|
||
|
|
|
||
|
|
RSpec.describe Points::RawData::ArchiveJob, type: :job do
|
||
|
|
describe '#perform' do
|
||
|
|
let(:archiver) { instance_double(Points::RawData::Archiver) }
|
||
|
|
|
||
|
|
before do
|
||
|
|
# Enable archival for tests
|
||
|
|
allow(ENV).to receive(:[]).and_call_original
|
||
|
|
allow(ENV).to receive(:[]).with('ARCHIVE_RAW_DATA').and_return('true')
|
||
|
|
|
||
|
|
allow(Points::RawData::Archiver).to receive(:new).and_return(archiver)
|
||
|
|
allow(archiver).to receive(:call).and_return({ processed: 5, archived: 100, failed: 0 })
|
||
|
|
end
|
||
|
|
|
||
|
|
it 'calls the archiver service' do
|
||
|
|
expect(archiver).to receive(:call)
|
||
|
|
|
||
|
|
described_class.perform_now
|
||
|
|
end
|
||
|
|
|
||
|
|
context 'when archiver raises an error' do
|
||
|
|
let(:error) { StandardError.new('Archive failed') }
|
||
|
|
|
||
|
|
before do
|
||
|
|
allow(archiver).to receive(:call).and_raise(error)
|
||
|
|
end
|
||
|
|
|
||
|
|
it 're-raises the error' do
|
||
|
|
expect do
|
||
|
|
described_class.perform_now
|
||
|
|
end.to raise_error(StandardError, 'Archive failed')
|
||
|
|
end
|
||
|
|
|
||
|
|
it 'reports the error before re-raising' do
|
||
|
|
expect(ExceptionReporter).to receive(:call).with(error, 'Points raw data archival job failed')
|
||
|
|
|
||
|
|
expect do
|
||
|
|
described_class.perform_now
|
||
|
|
end.to raise_error(StandardError)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|