From 4f4791a8640a6c8c145d34c5b30d8e859c08cbf8 Mon Sep 17 00:00:00 2001 From: Martin Date: Tue, 31 Jan 2023 15:51:30 +0100 Subject: [PATCH 1/2] =?UTF-8?q?bug(liens-invitation):=20ne=20devrait=20pas?= =?UTF-8?q?=20pointer=20sur=20l'avis=20ayant=20le=20m=C3=AAme=20id=20que?= =?UTF-8?q?=20l'invitation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/mailers/invite_mailer_spec.rb | 9 +++++++++ spec/system/users/invite_spec.rb | 1 + 2 files changed, 10 insertions(+) diff --git a/spec/mailers/invite_mailer_spec.rb b/spec/mailers/invite_mailer_spec.rb index f6aef3bfc..9be780237 100644 --- a/spec/mailers/invite_mailer_spec.rb +++ b/spec/mailers/invite_mailer_spec.rb @@ -51,6 +51,15 @@ RSpec.describe InviteMailer, type: :mailer do .from(0).to(1) end + context 'when an avis exists with same id' do + it 'associate the TargetedUserLink to the good model [does not search by id only]' do + avis = create(:avis, id: invite.id) + link_on_avis_with_same_id = create(:targeted_user_link, target_model: avis, target_context: TargetedUserLink.target_contexts[:avis]) + deliver + expect(invite.targeted_user_link).not_to eq(link_on_avis_with_same_id) + end + end + context 'when it fails' do it 'creates only one target_user_link' do send_mail_values = [:raise, true] diff --git a/spec/system/users/invite_spec.rb b/spec/system/users/invite_spec.rb index 64d8f1d33..917a54068 100644 --- a/spec/system/users/invite_spec.rb +++ b/spec/system/users/invite_spec.rb @@ -61,6 +61,7 @@ describe 'Invitations' do invitation_email = open_email(user.email) targeted_user_link = TargetedUserLink.last + expect(targeted_user_link.user.email).to eq(user.email) expect(invitation_email).to have_link(targeted_user_link_url(targeted_user_link)) invitation_email.click_on targeted_user_link_url(targeted_user_link) expect(page).to have_current_path("/users/sign_in") From 2edfcdd6522d949b35c860b939d4ece60320f8cb Mon Sep 17 00:00:00 2001 From: Martin Date: Tue, 31 Jan 2023 16:06:31 +0100 Subject: [PATCH 2/2] =?UTF-8?q?correctif(liens.invitations):=20utilise=20l?= =?UTF-8?q?e=20mapping=20rails=20as:=20:target=5Fmodel,=20sinon=20on=20req?= =?UTF-8?q?uete=20uniquement=20par=20l'id=20du=20model,=20qui=20peut=20etr?= =?UTF-8?q?e=20probl=C3=A9matique=20en=20cas=20de=20relation=20polymorphiq?= =?UTF-8?q?ues=20avec=20des=20ensembles=20d'id=20se=20superposant?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/avis.rb | 2 +- app/models/invite.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/avis.rb b/app/models/avis.rb index 334625fe7..9efa98164 100644 --- a/app/models/avis.rb +++ b/app/models/avis.rb @@ -28,7 +28,7 @@ class Avis < ApplicationRecord has_one :expert, through: :experts_procedure has_one :procedure, through: :experts_procedure - has_many :targeted_user_links, dependent: :destroy, inverse_of: :target_model, foreign_key: 'target_model_id' + has_many :targeted_user_links, as: :target_model, dependent: :destroy, inverse_of: :target_model FILE_MAX_SIZE = 20.megabytes validates :piece_justificative_file, diff --git a/app/models/invite.rb b/app/models/invite.rb index 3b9031856..dbdfd3a67 100644 --- a/app/models/invite.rb +++ b/app/models/invite.rb @@ -16,7 +16,7 @@ class Invite < ApplicationRecord belongs_to :dossier, optional: false belongs_to :user, optional: true - has_one :targeted_user_link, dependent: :destroy, inverse_of: :target_model, foreign_key: 'target_model_id' + has_one :targeted_user_link, as: :target_model, dependent: :destroy, inverse_of: :target_model before_validation -> { sanitize_email(:email) }