49 lines
1.6 KiB
Ruby
49 lines
1.6 KiB
Ruby
describe Traitement do
|
|
describe '#count_dossiers_termines_by_month' do
|
|
let(:procedure) { create(:procedure, :published, groupe_instructeurs: [groupe_instructeurs]) }
|
|
let(:groupe_instructeurs) { create(:groupe_instructeur) }
|
|
|
|
before do
|
|
create_dossier_for_month(procedure, 2021, 3)
|
|
create_dossier_for_month(procedure, 2021, 3)
|
|
create_archived_dossier_for_month(procedure, 2021, 3)
|
|
create_dossier_for_month(procedure, 2021, 2)
|
|
end
|
|
|
|
subject do
|
|
Timecop.freeze(Time.zone.local(2021, 3, 5)) do
|
|
Traitement.count_dossiers_termines_by_month(groupe_instructeurs)
|
|
end
|
|
end
|
|
|
|
it 'count dossiers_termines by month' do
|
|
expect(count_for_month(subject, 3)).to eq 3
|
|
expect(count_for_month(subject, 2)).to eq 1
|
|
end
|
|
|
|
it 'returns descending order by month' do
|
|
expect(subject[0]["month"].to_date.month).to eq 3
|
|
expect(subject[1]["month"].to_date.month).to eq 2
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def count_for_month(count_dossiers_termines_by_month, month)
|
|
count_dossiers_termines_by_month.find do |count_by_month|
|
|
count_by_month["month"].to_date.month == month
|
|
end["count"]
|
|
end
|
|
|
|
def create_dossier_for_month(procedure, year, month)
|
|
Timecop.freeze(Time.zone.local(year, month, 5)) do
|
|
create(:dossier, :accepte, :with_attestation, procedure: procedure)
|
|
end
|
|
end
|
|
|
|
def create_archived_dossier_for_month(procedure, year, month)
|
|
Timecop.freeze(Time.zone.local(year, month, 5)) do
|
|
create(:dossier, :accepte, :archived, :with_attestation, procedure: procedure)
|
|
end
|
|
end
|
|
end
|