summaryrefslogtreecommitdiff
path: root/addons/survey/tests
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2019-01-24 11:43:25 +0000
committerThibault Delavallée <tde@odoo.com>2019-01-25 13:12:22 +0000
commite65bcb24fd559b59a8f0e4ee061f9367f339bbef (patch)
tree15c41f44dbd0eebe436a804c389e505438c2ff55 /addons/survey/tests
parentc801eecf23035d1b53eccc15ec29e6be970e3579 (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.py3
-rw-r--r--addons/survey/tests/test_survey_flow.py1
-rw-r--r--addons/survey/tests/test_survey_invite.py52
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)