mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-10 17:21:38 -05:00
50 lines
1.7 KiB
Ruby
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
|