dawarich/spec/services/jobs/create_spec.rb
2024-08-05 21:23:08 +02:00

50 lines
1.7 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Jobs::Create do
describe '#call' do
context 'when job_name is start_reverse_geocoding' do
let(:user) { create(:user) }
let(:points) { create_list(:point, 4, user:) }
let(:job_name) { 'start_reverse_geocoding' }
it 'enqueues reverse geocoding for all user points' do
allow(ReverseGeocodingJob).to receive(:perform_later).and_return(nil)
described_class.new(job_name, user.id).call
points.each do |point|
expect(ReverseGeocodingJob).to have_received(:perform_later).with(point.class.to_s, point.id)
end
end
end
context 'when job_name is continue_reverse_geocoding' do
let(:user) { create(:user) }
let(:points_without_address) { create_list(:point, 4, user:, country: nil, city: nil) }
let(:points_with_address) { create_list(:point, 5, user:, country: 'Country', city: 'City') }
let(:job_name) { 'continue_reverse_geocoding' }
it 'enqueues reverse geocoding for all user points without address' do
allow(ReverseGeocodingJob).to receive(:perform_later).and_return(nil)
described_class.new(job_name, user.id).call
points_without_address.each do |point|
expect(ReverseGeocodingJob).to have_received(:perform_later).with(point.class.to_s, point.id)
end
end
end
context 'when job_name is invalid' do
let(:user) { create(:user) }
let(:job_name) { 'invalid_job_name' }
it 'raises an error' do
expect { described_class.new(job_name, user.id).call }.to raise_error(Jobs::Create::InvalidJobName)
end
end
end
end