Skip to content

Commit

Permalink
Tri les campagnes par date de dernière évaluation (sans évaluation en…
Browse files Browse the repository at this point in the history
… dernier)
  • Loading branch information
marouria authored and etienneCharignon committed Apr 27, 2023
1 parent b373b85 commit da6dfa5
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
1 change: 1 addition & 0 deletions app/models/campagne.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class Campagne < ApplicationRecord
joins(:compte)
.avec_nombre_evaluations_et_derniere_evaluation
.where('comptes.structure_id' => structure)
.order('date_derniere_evaluation DESC NULLS LAST')
}
scope :avec_nombre_evaluations_et_derniere_evaluation, lambda {
left_outer_joins(:evaluations)
Expand Down
20 changes: 14 additions & 6 deletions spec/models/campagne_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,32 @@
describe '.de_la_structure' do
let(:compte) { create :compte }
let(:autre_compte) { create :compte }
let(:campagne) { create :campagne, compte: compte }
let(:autre_campagne) { create :campagne, compte: autre_compte }
let!(:evaluation) do
create :evaluation, campagne: campagne, created_at: Time.zone.local(2019, 10, 9, 10, 1, 20)

let!(:campagne_non_active) { create :campagne, libelle: 'non active', compte: compte }
let(:campagne_moins_active) { create :campagne, libelle: 'moins active', compte: compte }
let(:campagne_active) { create :campagne, libelle: 'active', compte: compte }
let!(:evaluation_recente) do
create :evaluation, campagne: campagne_active,
created_at: Time.zone.local(2020, 1, 1, 12, 0, 21)
end
let!(:evaluation_pas_recente) do
create :evaluation, campagne: campagne_moins_active,
created_at: Time.zone.local(2020, 1, 1, 12, 0, 20)
end

subject(:campagnes) { described_class.de_la_structure(compte.structure) }

it "retourne les campagnes d'une structure donnée" do
expect(campagnes).to contain_exactly(campagne)
it "retourne les campagnes d'une structure par ordre d'activité" do
expect(campagnes.all.map(&:libelle)).to eql ['active', 'moins active', 'non active']
end

it "retourne le nombre d'évaluations pour une campagne" do
expect(campagnes.first.nombre_evaluations).to eq(1)
end

it 'retourne la date de la dernière évaluation pour une campagne' do
expect(campagnes.first.date_derniere_evaluation).to eq(evaluation.created_at)
expect(campagnes.first.date_derniere_evaluation).to eq(evaluation_recente.created_at)
end
end
end
Expand Down

0 comments on commit da6dfa5

Please sign in to comment.