diff --git a/addons/survey/tests/test_survey_invite.py b/addons/survey/tests/test_survey_invite.py index ca4307bc46e..6a93ee45d56 100644 --- a/addons/survey/tests/test_survey_invite.py +++ b/addons/survey/tests/test_survey_invite.py @@ -194,3 +194,30 @@ class TestSurveyInvite(common.TestSurveyCommon): set(answers.mapped('email')), set([self.user_emp.email])) self.assertEqual(answers.mapped('partner_id'), self.user_emp.partner_id) + + def test_survey_invite_token_by_email_nosignup(self): + """ + Case: have multiples partners with the same email address + If I set one email address, I expect one email to be sent + """ + + first_partner = self.env['res.partner'].create({ + 'name': 'Test 1', + 'email': 'test@example.com', + }) + + self.env['res.partner'].create({ + 'name': 'Test 2', + 'email': '"Raoul Poilvache" ', + }) + + self.survey.write({'access_mode': 'token', 'users_login_required': False}) + action = self.survey.action_send_survey() + invite_form = Form(self.env[action['res_model']].with_context(action['context'])) + invite_form.emails = 'test@example.com' + invite = invite_form.save() + invite.action_invite() + + answers = self.env['survey.user_input'].search([('survey_id', '=', self.survey.id)]) + self.assertEqual(len(answers), 1) + self.assertEqual(answers.partner_id.display_name, first_partner.display_name) diff --git a/addons/survey/wizard/survey_invite.py b/addons/survey/wizard/survey_invite.py index da42a9a6860..b9c6759f246 100644 --- a/addons/survey/wizard/survey_invite.py +++ b/addons/survey/wizard/survey_invite.py @@ -252,7 +252,8 @@ class SurveyInvite(models.TransientModel): partner = False email_normalized = tools.email_normalize(email) if email_normalized: - partner = Partner.search([('email_normalized', '=', email_normalized)]) + limit = None if self.survey_users_login_required else 1 + partner = Partner.search([('email_normalized', '=', email_normalized)], limit=limit) if partner: valid_partners |= partner else: