50 lines
1.6 KiB
Ruby
50 lines
1.6 KiB
Ruby
RSpec.describe Cron::WeeklyOverviewJob, type: :job do
|
|
describe 'perform' do
|
|
let!(:instructeur) { create(:instructeur) }
|
|
let(:overview) { double('overview') }
|
|
|
|
context 'if the feature is enabled' do
|
|
before do
|
|
Rails.application.config.ds_weekly_overview = true
|
|
end
|
|
after do
|
|
Rails.application.config.ds_weekly_overview = false
|
|
end
|
|
|
|
subject(:run_job) { Cron::WeeklyOverviewJob.new.perform }
|
|
# See also spec/mailers/instructeur_mailer_spec.rb
|
|
|
|
context 'with one instructeur with one overview' do
|
|
let(:mailer_double) { double('mailer', deliver_later: true) }
|
|
before do
|
|
allow(InstructeurMailer).to receive(:last_week_overview).and_return(mailer_double)
|
|
run_job
|
|
end
|
|
|
|
it do
|
|
expect(InstructeurMailer).to have_received(:last_week_overview).with(instructeur)
|
|
expect(mailer_double).to have_received(:deliver_later).at_least(1).times
|
|
end
|
|
end
|
|
|
|
context 'with one instructeur with no overviews' do
|
|
before do
|
|
allow(InstructeurMailer).to receive(:last_week_overview).and_return(nil)
|
|
run_job
|
|
end
|
|
|
|
it { expect(InstructeurMailer).to have_received(:last_week_overview).with(instructeur) }
|
|
it { expect { run_job }.not_to raise_error }
|
|
end
|
|
end
|
|
|
|
context 'if the feature is disabled' do
|
|
before do
|
|
allow(Instructeur).to receive(:find_each)
|
|
Cron::WeeklyOverviewJob.new.perform
|
|
end
|
|
|
|
it { expect(Instructeur).not_to receive(:find_each) }
|
|
end
|
|
end
|
|
end
|