dawarich/spec/services/jobs/create_spec.rb

51 lines
1.7 KiB
Ruby
Raw Normal View History

2024-07-12 15:59:03 -04:00
# 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|
2024-08-05 15:23:08 -04:00
expect(ReverseGeocodingJob).to have_received(:perform_later).with(point.class.to_s, point.id)
2024-07-12 15:59:03 -04:00
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|
2024-08-05 15:23:08 -04:00
expect(ReverseGeocodingJob).to have_received(:perform_later).with(point.class.to_s, point.id)
2024-07-12 15:59:03 -04:00
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