summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-03-30 06:49:43 +0000
committerThibault Delavallée <tde@odoo.com>2020-03-31 07:33:50 +0000
commit549968bdfe3ce0d31cc53c1ff6f1444bf45812a1 (patch)
tree46360570917b97bf69a46b10ee4a3241c5f23142 /addons
parentb105240252c8e7349c7d381b79571d2436f68c15 (diff)
[IMP] survey: perform a quick linting in tests
Notably * have tools and helpers in a SurveyCase and let SurveyCommon bet the one with data; * remove unnecessary with_user, replaced by standard one; * move all tools in SurveyCase to help reusing them;
Diffstat (limited to 'addons')
-rw-r--r--addons/survey/tests/common.py171
-rw-r--r--addons/survey/tests/test_certification_flow.py22
-rw-r--r--addons/survey/tests/test_survey.py7
-rw-r--r--addons/survey/tests/test_survey_compute_pages_questions.py2
-rw-r--r--addons/survey/tests/test_survey_flow.py2
-rw-r--r--addons/survey/tests/test_survey_security.py2
-rw-r--r--addons/website_slides_survey/tests/test_course_certification_failure.py2
7 files changed, 102 insertions, 106 deletions
diff --git a/addons/survey/tests/common.py b/addons/survey/tests/common.py
index 609a133c286..3016c416c81 100644
--- a/addons/survey/tests/common.py
+++ b/addons/survey/tests/common.py
@@ -5,16 +5,14 @@ import re
from collections import Counter
from contextlib import contextmanager
-from functools import partial
-from odoo.tests import common, new_test_user
+from odoo.addons.mail.tests.common import mail_new_test_user
+from odoo.tests import common
-survey_new_test_user = partial(new_test_user, context={'mail_create_nolog': True, 'mail_create_nosubscribe': True, 'mail_notrack': True, 'no_reset_password': True})
-
-class TestSurveyCommon(common.SavepointCase):
+class SurveyCase(common.SavepointCase):
def setUp(self):
- super(TestSurveyCommon, self).setUp()
+ super(SurveyCase, self).setUp()
""" Some custom stuff to make the matching between questions and answers
:param dict _type_match: dict
@@ -31,75 +29,9 @@ class TestSurveyCommon(common.SavepointCase):
'matrix': ('suggestion', ('suggested_answer_id', 'matrix_row_id')), # TDE: still unclear
}
- """ Create test data: a survey with some pre-defined questions and various test users for ACL """
- self.survey_manager = survey_new_test_user(
- self.env, name='Gustave Doré', login='survey_manager', email='survey.manager@example.com',
- groups='survey.group_survey_manager,base.group_user'
- )
-
- self.survey_user = survey_new_test_user(
- self.env, name='Lukas Peeters', login='survey_user', email='survey.user@example.com',
- groups='survey.group_survey_user,base.group_user'
- )
-
- self.user_emp = survey_new_test_user(
- self.env, name='Eglantine Employee', login='user_emp', email='employee@example.com',
- groups='base.group_user', password='user_emp'
- )
-
- self.user_portal = survey_new_test_user(
- self.env, name='Patrick Portal', login='user_portal', email='portal@example.com',
- groups='base.group_portal'
- )
-
- self.user_public = survey_new_test_user(
- self.env, name='Pauline Public', login='user_public', email='public@example.com',
- groups='base.group_public'
- )
-
- self.customer = self.env['res.partner'].create({
- 'name': 'Caroline Customer',
- 'email': 'customer@example.com',
- })
-
- self.survey = self.env['survey.survey'].with_user(self.survey_manager).create({
- 'title': 'Test Survey',
- 'access_mode': 'public',
- 'users_login_required': True,
- 'users_can_go_back': False,
- 'state': 'open',
- })
- self.page_0 = self.env['survey.question'].with_user(self.survey_manager).create({
- 'title': 'First page',
- 'survey_id': self.survey.id,
- 'sequence': 1,
- 'is_page': True,
- })
- self.question_ft = self.env['survey.question'].with_user(self.survey_manager).create({
- 'title': 'Test Free Text',
- 'survey_id': self.survey.id,
- 'sequence': 2,
- 'question_type': 'text_box',
- })
- self.question_num = self.env['survey.question'].with_user(self.survey_manager).create({
- 'title': 'Test NUmerical Box',
- 'survey_id': self.survey.id,
- 'sequence': 3,
- 'question_type': 'numerical_box',
- })
-
- @contextmanager
- def with_user(self, user):
- """ Quick with_user environment """
- old_uid = self.uid
- try:
- self.uid = user.id
- self.env = self.env(user=self.uid)
- yield
- finally:
- # back
- self.uid = old_uid
- self.env = self.env(user=self.uid)
+ # ------------------------------------------------------------
+ # ASSERTS
+ # ------------------------------------------------------------
def assertAnswer(self, answer, state, page):
self.assertEqual(answer.state, state)
@@ -147,6 +79,10 @@ class TestSurveyCommon(common.SavepointCase):
for text in text_bits or []:
self.assertIn(text, response.text)
+ # ------------------------------------------------------------
+ # DATA CREATION
+ # ------------------------------------------------------------
+
def _add_question(self, page, name, qtype, **kwargs):
constr_mandatory = kwargs.pop('constr_mandatory', True)
constr_error_msg = kwargs.pop('constr_error_msg', 'TestError')
@@ -210,6 +146,10 @@ class TestSurveyCommon(common.SavepointCase):
base_alvals.update(kwargs)
return self.env['survey.user_input.line'].create(base_alvals)
+ # ------------------------------------------------------------
+ # UTILS
+ # ------------------------------------------------------------
+
def _access_start(self, survey):
return self.url_open('/survey/start/%s' % survey.access_token)
@@ -246,3 +186,84 @@ class TestSurveyCommon(common.SavepointCase):
[values] = values
post_data[question.id] = str(values)
return post_data
+
+ def _answer_question(self, question, answer, answer_token, csrf_token, button_submit='next'):
+ # Employee submits the question answer
+ post_data = self._format_submission_data(question, answer, {'csrf_token': csrf_token, 'token': answer_token, 'button_submit': button_submit})
+ response = self._access_submit(question.survey_id, answer_token, post_data)
+ self.assertResponse(response, 200)
+
+ # Employee is redirected on next question
+ response = self._access_page(question.survey_id, answer_token)
+ self.assertResponse(response, 200)
+
+ def _format_submission_data(self, question, answer, additional_post_data):
+ post_data = {}
+ post_data['question_id'] = question.id
+ post_data.update(self._prepare_post_data(question, answer, post_data))
+ if question.page_id:
+ post_data['page_id'] = question.page_id.id
+ post_data.update(**additional_post_data)
+ return post_data
+
+
+class TestSurveyCommon(SurveyCase):
+ def setUp(self):
+ super(TestSurveyCommon, self).setUp()
+
+ """ Create test data: a survey with some pre-defined questions and various test users for ACL """
+ self.survey_manager = mail_new_test_user(
+ self.env, name='Gustave Doré', login='survey_manager', email='survey.manager@example.com',
+ groups='survey.group_survey_manager,base.group_user'
+ )
+
+ self.survey_user = mail_new_test_user(
+ self.env, name='Lukas Peeters', login='survey_user', email='survey.user@example.com',
+ groups='survey.group_survey_user,base.group_user'
+ )
+
+ self.user_emp = mail_new_test_user(
+ self.env, name='Eglantine Employee', login='user_emp', email='employee@example.com',
+ groups='base.group_user', password='user_emp'
+ )
+
+ self.user_portal = mail_new_test_user(
+ self.env, name='Patrick Portal', login='user_portal', email='portal@example.com',
+ groups='base.group_portal'
+ )
+
+ self.user_public = mail_new_test_user(
+ self.env, name='Pauline Public', login='user_public', email='public@example.com',
+ groups='base.group_public'
+ )
+
+ self.customer = self.env['res.partner'].create({
+ 'name': 'Caroline Customer',
+ 'email': 'customer@example.com',
+ })
+
+ self.survey = self.env['survey.survey'].with_user(self.survey_manager).create({
+ 'title': 'Test Survey',
+ 'access_mode': 'public',
+ 'users_login_required': True,
+ 'users_can_go_back': False,
+ 'state': 'open',
+ })
+ self.page_0 = self.env['survey.question'].with_user(self.survey_manager).create({
+ 'title': 'First page',
+ 'survey_id': self.survey.id,
+ 'sequence': 1,
+ 'is_page': True,
+ })
+ self.question_ft = self.env['survey.question'].with_user(self.survey_manager).create({
+ 'title': 'Test Free Text',
+ 'survey_id': self.survey.id,
+ 'sequence': 2,
+ 'question_type': 'text_box',
+ })
+ self.question_num = self.env['survey.question'].with_user(self.survey_manager).create({
+ 'title': 'Test NUmerical Box',
+ 'survey_id': self.survey.id,
+ 'sequence': 3,
+ 'question_type': 'numerical_box',
+ })
diff --git a/addons/survey/tests/test_certification_flow.py b/addons/survey/tests/test_certification_flow.py
index f0b99289211..a88f2f8a19f 100644
--- a/addons/survey/tests/test_certification_flow.py
+++ b/addons/survey/tests/test_certification_flow.py
@@ -11,29 +11,11 @@ from odoo.tests.common import HttpCase
@tagged('-at_install', 'post_install', 'functional')
class TestCertificationFlow(common.TestSurveyCommon, HttpCase):
- def _answer_question(self, question, answer, answer_token, csrf_token, button_submit='next'):
- # Employee submits the question answer
- post_data = self._format_submission_data(question, answer, {'csrf_token': csrf_token, 'token': answer_token, 'button_submit': button_submit})
- response = self._access_submit(question.survey_id, answer_token, post_data)
- self.assertResponse(response, 200)
-
- # Employee is redirected on next question
- response = self._access_page(question.survey_id, answer_token)
- self.assertResponse(response, 200)
-
- def _format_submission_data(self, question, answer, additional_post_data):
- post_data = {}
- post_data['question_id'] = question.id
- post_data.update(self._prepare_post_data(question, answer, post_data))
- if question.page_id:
- post_data['page_id'] = question.page_id.id
- post_data.update(**additional_post_data)
- return post_data
def test_flow_certification(self):
# Step: survey user creates the certification
# --------------------------------------------------
- with self.with_user(self.survey_user):
+ with self.with_user('survey_user'):
certification = self.env['survey.survey'].create({
'title': 'User Certification for SO lines',
'access_mode': 'public',
@@ -148,7 +130,7 @@ class TestCertificationFlow(common.TestSurveyCommon, HttpCase):
def test_randomized_certification(self):
# Step: survey user creates the randomized certification
# --------------------------------------------------
- with self.with_user(self.survey_user):
+ with self.with_user('survey_user'):
certification = self.env['survey.survey'].create({
'title': 'User randomized Certification',
'questions_layout': 'page_per_section',
diff --git a/addons/survey/tests/test_survey.py b/addons/survey/tests/test_survey.py
index 77ed53f6a69..f1c2dfc602c 100644
--- a/addons/survey/tests/test_survey.py
+++ b/addons/survey/tests/test_survey.py
@@ -1,14 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-import random
-
-from collections import Counter
-from itertools import product
-from werkzeug import urls
-
from odoo import _
-from odoo.addons.http_routing.models.ir_http import slug
from odoo.addons.survey.tests import common
from odoo.tests.common import users
diff --git a/addons/survey/tests/test_survey_compute_pages_questions.py b/addons/survey/tests/test_survey_compute_pages_questions.py
index ce2e9ad6528..d59dbf904d6 100644
--- a/addons/survey/tests/test_survey_compute_pages_questions.py
+++ b/addons/survey/tests/test_survey_compute_pages_questions.py
@@ -6,7 +6,7 @@ from odoo.addons.survey.tests import common
class TestSurveyComputePagesQuestions(common.TestSurveyCommon):
def test_compute_pages_questions(self):
- with self.with_user(self.survey_manager):
+ with self.with_user('survey_manager'):
survey = self.env['survey.survey'].create({
'title': 'Test compute survey',
'state': 'open',
diff --git a/addons/survey/tests/test_survey_flow.py b/addons/survey/tests/test_survey_flow.py
index c8d814fae69..d0c2921ae80 100644
--- a/addons/survey/tests/test_survey_flow.py
+++ b/addons/survey/tests/test_survey_flow.py
@@ -20,7 +20,7 @@ class TestSurveyFlow(common.TestSurveyCommon, HttpCase):
def test_flow_public(self):
# Step: survey manager creates the survey
# --------------------------------------------------
- with self.with_user(self.survey_manager):
+ with self.with_user('survey_manager'):
survey = self.env['survey.survey'].create({
'title': 'Public Survey for Tarte Al Djotte',
'access_mode': 'public',
diff --git a/addons/survey/tests/test_survey_security.py b/addons/survey/tests/test_survey_security.py
index 5115f0ee873..8c76c870f69 100644
--- a/addons/survey/tests/test_survey_security.py
+++ b/addons/survey/tests/test_survey_security.py
@@ -290,7 +290,7 @@ class TestAccess(common.TestSurveyCommon):
@users('survey_manager')
def test_access_answers_survey_manager(self):
admin = self.env.ref('base.user_admin')
- with self.with_user(admin):
+ with self.with_user(admin.login):
survey_other = self.env['survey.survey'].create({'title': 'Other'})
self.env['survey.question'].create({'title': 'Other', 'sequence': 0, 'is_page': True, 'survey_id': survey_other.id})
question_other = self.env['survey.question'].create({'title': 'Other Question', 'sequence': 1, 'survey_id': survey_other.id})
diff --git a/addons/website_slides_survey/tests/test_course_certification_failure.py b/addons/website_slides_survey/tests/test_course_certification_failure.py
index f8c6a4011cd..8b206faefb8 100644
--- a/addons/website_slides_survey/tests/test_course_certification_failure.py
+++ b/addons/website_slides_survey/tests/test_course_certification_failure.py
@@ -8,7 +8,7 @@ class TestCourseCertificationFailureFlow(TestSurveyCommon):
def test_course_certification_failure_flow(self):
# Step 1: create a simple certification
# --------------------------------------------------
- with self.with_user(self.survey_user):
+ with self.with_user('survey_user'):
certification = self.env['survey.survey'].create({
'title': 'Small course certification',
'access_mode': 'public',