diff options
| author | Thibault Delavallée <tde@odoo.com> | 2019-01-24 11:43:25 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2019-01-25 13:12:22 +0000 |
| commit | e65bcb24fd559b59a8f0e4ee061f9367f339bbef (patch) | |
| tree | 15c41f44dbd0eebe436a804c389e505438c2ff55 /addons/survey/tests | |
| parent | c801eecf23035d1b53eccc15ec29e6be970e3579 (diff) | |
[IMP] survey: refine access mode option on survey
Purpose of this merge is to improve access mode and authentication management
introduced at 9771fdfe8f658fd0f3c270173a3d19b614ec8997 . Purpose of this cleaning is to simplify options and make
them clearer. Instead of a selection with 4 entries we propose to use two
fields on survey model :
* access_mode: everyone with a public link can access and answer; or only
invited people;
* login required: whether people have to login to answer or not;
All main use cases are covered with combination of those two options.
This commit is linked to task ID 1932508 and PR #30508.
Diffstat (limited to 'addons/survey/tests')
| -rw-r--r-- | addons/survey/tests/common.py | 3 | ||||
| -rw-r--r-- | addons/survey/tests/test_survey_flow.py | 1 | ||||
| -rw-r--r-- | addons/survey/tests/test_survey_invite.py | 52 |
3 files changed, 29 insertions, 27 deletions
diff --git a/addons/survey/tests/common.py b/addons/survey/tests/common.py index 4235739ba14..f5be81b7f0e 100644 --- a/addons/survey/tests/common.py +++ b/addons/survey/tests/common.py @@ -64,7 +64,8 @@ class SurveyCase(common.SavepointCase): self.survey = self.env['survey.survey'].sudo(self.survey_manager).create({ 'title': 'Test Survey', - 'access_mode': 'authentication', + 'access_mode': 'public', + 'users_login_required': True, 'users_can_go_back': False, }) self.page_0 = self.env['survey.page'].sudo(self.survey_manager).create({ diff --git a/addons/survey/tests/test_survey_flow.py b/addons/survey/tests/test_survey_flow.py index 396b56f32b9..85c36621816 100644 --- a/addons/survey/tests/test_survey_flow.py +++ b/addons/survey/tests/test_survey_flow.py @@ -48,6 +48,7 @@ class TestSurveyFlow(common.SurveyCase, HttpCase): survey = self.env['survey.survey'].create({ 'title': 'Public Survey for Tarte Al Djotte', 'access_mode': 'public', + 'users_login_required': False, }) # First page is about customer data diff --git a/addons/survey/tests/test_survey_invite.py b/addons/survey/tests/test_survey_invite.py index 92c74bc89a8..3b977d0221d 100644 --- a/addons/survey/tests/test_survey_invite.py +++ b/addons/survey/tests/test_survey_invite.py @@ -47,7 +47,7 @@ class TestSurveyInvite(common.SurveyCase): Answer = self.env['survey.user_input'] deadline = fields.Datetime.now() + relativedelta(months=1) - self.survey.write({'access_mode': 'public'}) + self.survey.write({'access_mode': 'public', 'users_login_required': False}) action = self.survey.action_send_survey() invite_form = Form(self.env[action['res_model']].with_context(action['context'])) @@ -73,7 +73,7 @@ class TestSurveyInvite(common.SurveyCase): def test_survey_invite_authentication_nosignup(self): Answer = self.env['survey.user_input'] - self.survey.write({'access_mode': 'authentication'}) + self.survey.write({'access_mode': 'public', 'users_login_required': True}) action = self.survey.action_send_survey() invite_form = Form(self.env[action['res_model']].with_context(action['context'])) @@ -102,7 +102,7 @@ class TestSurveyInvite(common.SurveyCase): self.survey.invalidate_cache() Answer = self.env['survey.user_input'] - self.survey.write({'access_mode': 'authentication'}) + self.survey.write({'access_mode': 'public', 'users_login_required': True}) action = self.survey.action_send_survey() invite_form = Form(self.env[action['res_model']].with_context(action['context'])) @@ -123,38 +123,31 @@ class TestSurveyInvite(common.SurveyCase): self.assertEqual(answers.mapped('partner_id'), self.customer | self.user_emp.partner_id | self.user_portal.partner_id) @users('survey_manager') - def test_survey_invite_internal(self): + def test_survey_invite_public(self): Answer = self.env['survey.user_input'] - self.survey.write({'access_mode': 'internal'}) + self.survey.write({'access_mode': 'public', 'users_login_required': False}) action = self.survey.action_send_survey() invite_form = Form(self.env[action['res_model']].with_context(action['context'])) - with self.assertRaises(UserError): # do not allow to add customer (partner without user) - invite_form.partner_ids.add(self.customer) - with self.assertRaises(UserError): # do not allow to add portal user - invite_form.partner_ids.add(self.user_portal.partner_id) - invite_form.partner_ids.clear() - invite_form.partner_ids.add(self.user_emp.partner_id) - with self.assertRaises(UserError): - invite_form.emails = 'test1@example.com, Raoulette Vignolette <test2@example.com>' - invite_form.emails = False + invite_form.partner_ids.add(self.customer) + invite_form.emails = 'test1@example.com, Raoulette Vignolette <test2@example.com>' invite = invite_form.save() invite.action_invite() answers = Answer.search([('survey_id', '=', self.survey.id)]) - self.assertEqual(len(answers), 1) + self.assertEqual(len(answers), 3) self.assertEqual( set(answers.mapped('email')), - set([self.user_emp.email])) - self.assertEqual(answers.mapped('partner_id'), self.user_emp.partner_id) + set(['test1@example.com', 'Raoulette Vignolette <test2@example.com>', self.customer.email])) + self.assertEqual(answers.mapped('partner_id'), self.customer) @users('survey_manager') - def test_survey_invite_public(self): + def test_survey_invite_token(self): Answer = self.env['survey.user_input'] - self.survey.write({'access_mode': 'public'}) + 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'])) @@ -172,22 +165,29 @@ class TestSurveyInvite(common.SurveyCase): self.assertEqual(answers.mapped('partner_id'), self.customer) @users('survey_manager') - def test_survey_invite_token(self): + def test_survey_invite_token_internal(self): Answer = self.env['survey.user_input'] - self.survey.write({'access_mode': 'token'}) + self.survey.write({'access_mode': 'token', 'users_login_required': True}) action = self.survey.action_send_survey() invite_form = Form(self.env[action['res_model']].with_context(action['context'])) - invite_form.partner_ids.add(self.customer) - invite_form.emails = 'test1@example.com, Raoulette Vignolette <test2@example.com>' + with self.assertRaises(UserError): # do not allow to add customer (partner without user) + invite_form.partner_ids.add(self.customer) + with self.assertRaises(UserError): # do not allow to add portal user + invite_form.partner_ids.add(self.user_portal.partner_id) + invite_form.partner_ids.clear() + invite_form.partner_ids.add(self.user_emp.partner_id) + with self.assertRaises(UserError): + invite_form.emails = 'test1@example.com, Raoulette Vignolette <test2@example.com>' + invite_form.emails = False invite = invite_form.save() invite.action_invite() answers = Answer.search([('survey_id', '=', self.survey.id)]) - self.assertEqual(len(answers), 3) + self.assertEqual(len(answers), 1) self.assertEqual( set(answers.mapped('email')), - set(['test1@example.com', 'Raoulette Vignolette <test2@example.com>', self.customer.email])) - self.assertEqual(answers.mapped('partner_id'), self.customer) + set([self.user_emp.email])) + self.assertEqual(answers.mapped('partner_id'), self.user_emp.partner_id) |
