feat: suggest recently added user even if its not confirmed
This commit is contained in:
parent
8d95df2250
commit
d95ce505a8
2 changed files with 16 additions and 9 deletions
|
@ -30,17 +30,22 @@ class Expert < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.autocomplete_mails(procedure)
|
def self.autocomplete_mails(procedure)
|
||||||
experts = Expert
|
procedure_experts = Expert
|
||||||
.joins(:experts_procedures, :user)
|
.joins(:experts_procedures, :user)
|
||||||
.where(experts_procedures: { procedure: procedure })
|
.where(experts_procedures: { procedure: procedure })
|
||||||
.where.not(users: { confirmed_at: nil })
|
|
||||||
|
|
||||||
if procedure.experts_require_administrateur_invitation?
|
new_or_confirmed_experts = procedure_experts
|
||||||
experts = experts
|
.where.not(users: { confirmed_at: nil })
|
||||||
|
.or(procedure_experts.where(users: { created_at: 1.day.ago.. }))
|
||||||
|
|
||||||
|
suggested_expert = if procedure.experts_require_administrateur_invitation?
|
||||||
|
new_or_confirmed_experts
|
||||||
.where(experts_procedures: { revoked_at: nil })
|
.where(experts_procedures: { revoked_at: nil })
|
||||||
|
else
|
||||||
|
new_or_confirmed_experts
|
||||||
end
|
end
|
||||||
|
|
||||||
experts
|
suggested_expert
|
||||||
.pluck('users.email')
|
.pluck('users.email')
|
||||||
.sort
|
.sort
|
||||||
end
|
end
|
||||||
|
|
|
@ -102,17 +102,19 @@ RSpec.describe Expert, type: :model do
|
||||||
let(:expert) { create(:expert) }
|
let(:expert) { create(:expert) }
|
||||||
let(:revoked_expert) { create(:expert) }
|
let(:revoked_expert) { create(:expert) }
|
||||||
let(:unconfirmed_expert) { create(:expert) }
|
let(:unconfirmed_expert) { create(:expert) }
|
||||||
|
let(:new_unconfirmed_expert) { create(:expert) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
procedure.experts << expert << revoked_expert << unconfirmed_expert
|
procedure.experts << expert << revoked_expert << unconfirmed_expert << new_unconfirmed_expert
|
||||||
ExpertsProcedure.find_by(expert: revoked_expert, procedure: procedure)
|
ExpertsProcedure.find_by(expert: revoked_expert, procedure: procedure)
|
||||||
.update!(revoked_at: 1.day.ago)
|
.update!(revoked_at: 1.day.ago)
|
||||||
unconfirmed_expert.user.update!(confirmed_at: nil)
|
unconfirmed_expert.user.update!(confirmed_at: nil, created_at: 2.days.ago)
|
||||||
|
new_unconfirmed_expert.user.update!(confirmed_at: nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when procedure experts need administrateur invitation' do
|
context 'when procedure experts need administrateur invitation' do
|
||||||
it 'returns only confirmed not revoked experts' do
|
it 'returns only confirmed not revoked experts' do
|
||||||
expect(subject).to eq([expert.user.email])
|
expect(subject).to eq([expert.user.email, new_unconfirmed_expert.user.email])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -120,7 +122,7 @@ RSpec.describe Expert, type: :model do
|
||||||
let(:procedure) { create(:procedure, experts_require_administrateur_invitation: false) }
|
let(:procedure) { create(:procedure, experts_require_administrateur_invitation: false) }
|
||||||
|
|
||||||
it 'prefill autocomplete with all confirmed experts in the procedure' do
|
it 'prefill autocomplete with all confirmed experts in the procedure' do
|
||||||
expect(subject).to eq([expert.user.email, revoked_expert.user.email])
|
expect(subject).to eq([expert.user.email, revoked_expert.user.email, new_unconfirmed_expert.user.email])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue