RSpec.describe Cron::FindDubiousProceduresJob, type: :job do describe 'perform' do let(:mailer_double) { double('mailer', deliver_later: true) } let(:procedure) { create(:procedure, types_de_champ: tdcs) } let(:allowed_tdc) { build(:type_de_champ, libelle: 'fournir') } before do procedure allow(AdministrationMailer).to receive(:dubious_procedures) do |arg| @dubious_procedures_args = arg end.and_return(mailer_double) Cron::FindDubiousProceduresJob.new.perform end context 'with suspicious champs' do let(:forbidden_tdcs) do [ build(:type_de_champ, libelle: 'num de securite sociale, stp'), build(:type_de_champ, libelle: "t'aurais une carte bancaire ?") ] end let(:tdcs) { forbidden_tdcs + [allowed_tdc] } it 'mails tech about the dubious procedure' do receive_procedure, receive_forbidden_tdcs = @dubious_procedures_args[0] expect(receive_procedure).to eq(procedure) expect(receive_forbidden_tdcs).to match_array(forbidden_tdcs) expect(AdministrationMailer).to have_received(:dubious_procedures).with(@dubious_procedures_args) end context 'and a whitelisted procedure' do let(:procedure) { create(:procedure, :whitelisted) } it { expect(AdministrationMailer).to have_received(:dubious_procedures).with([]) } end context 'and a closed procedure' do let(:procedure) { create(:procedure, :closed) } it { expect(AdministrationMailer).to have_received(:dubious_procedures).with([]) } end context 'and a discarded procedure' do let(:procedure) { create(:procedure, :discarded) } it { expect(AdministrationMailer).to have_received(:dubious_procedures).with([]) } end end context 'with no suspicious champs' do let(:tdcs) { [allowed_tdc] } it { expect(AdministrationMailer).to have_received(:dubious_procedures).with([]) } end end end