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;
116 lines
3.9 KiB
Python
116 lines
3.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import _
|
|
from odoo.addons.survey.tests import common
|
|
from odoo.tests.common import users
|
|
|
|
|
|
class TestSurveyInternals(common.TestSurveyCommon):
|
|
|
|
@users('survey_manager')
|
|
def test_answer_validation_mandatory(self):
|
|
""" For each type of question check that mandatory questions correctly check for complete answers """
|
|
for (question_type, text) in self.env['survey.question']._fields['question_type'].selection:
|
|
kwargs = {}
|
|
if question_type == 'multiple_choice':
|
|
kwargs['labels'] = [{'value': 'MChoice0'}, {'value': 'MChoice1'}]
|
|
elif question_type == 'simple_choice':
|
|
kwargs['labels'] = []
|
|
elif question_type == 'matrix':
|
|
kwargs['labels'] = [{'value': 'Column0'}, {'value': 'Column1'}]
|
|
kwargs['labels_2'] = [{'value': 'Row0'}, {'value': 'Row1'}]
|
|
question = self._add_question(self.page_0, 'Q0', question_type, **kwargs)
|
|
|
|
self.assertDictEqual(
|
|
question.validate_question(''),
|
|
{question.id: 'TestError'}
|
|
)
|
|
|
|
@users('survey_manager')
|
|
def test_answer_validation_date(self):
|
|
question = self._add_question(
|
|
self.page_0, 'Q0', 'date', validation_required=True,
|
|
validation_min_date='2015-03-20', validation_max_date='2015-03-25', validation_error_msg='ValidationError')
|
|
|
|
self.assertEqual(
|
|
question.validate_question('Is Alfred an answer ?'),
|
|
{question.id: _('This is not a date')}
|
|
)
|
|
|
|
self.assertEqual(
|
|
question.validate_question('2015-03-19'),
|
|
{question.id: 'ValidationError'}
|
|
)
|
|
|
|
self.assertEqual(
|
|
question.validate_question('2015-03-26'),
|
|
{question.id: 'ValidationError'}
|
|
)
|
|
|
|
self.assertEqual(
|
|
question.validate_question('2015-03-25'),
|
|
{}
|
|
)
|
|
|
|
@users('survey_manager')
|
|
def test_answer_validation_numerical(self):
|
|
question = self._add_question(
|
|
self.page_0, 'Q0', 'numerical_box', validation_required=True,
|
|
validation_min_float_value=2.2, validation_max_float_value=3.3, validation_error_msg='ValidationError')
|
|
|
|
self.assertEqual(
|
|
question.validate_question('Is Alfred an answer ?'),
|
|
{question.id: _('This is not a number')}
|
|
)
|
|
|
|
self.assertEqual(
|
|
question.validate_question('2.0'),
|
|
{question.id: 'ValidationError'}
|
|
)
|
|
|
|
self.assertEqual(
|
|
question.validate_question('4.0'),
|
|
{question.id: 'ValidationError'}
|
|
)
|
|
|
|
self.assertEqual(
|
|
question.validate_question('2.9'),
|
|
{}
|
|
)
|
|
|
|
@users('survey_manager')
|
|
def test_answer_validation_char_box_email(self):
|
|
question = self._add_question(self.page_0, 'Q0', 'char_box', validation_email=True)
|
|
|
|
self.assertEqual(
|
|
question.validate_question('not an email'),
|
|
{question.id: _('This answer must be an email address')}
|
|
)
|
|
|
|
self.assertEqual(
|
|
question.validate_question('email@example.com'),
|
|
{}
|
|
)
|
|
|
|
@users('survey_manager')
|
|
def test_answer_validation_char_box_length(self):
|
|
question = self._add_question(
|
|
self.page_0, 'Q0', 'char_box', validation_required=True,
|
|
validation_length_min=2, validation_length_max=8, validation_error_msg='ValidationError')
|
|
|
|
self.assertEqual(
|
|
question.validate_question('l'),
|
|
{question.id: 'ValidationError'}
|
|
)
|
|
|
|
self.assertEqual(
|
|
question.validate_question('waytoomuchlonganswer'),
|
|
{question.id: 'ValidationError'}
|
|
)
|
|
|
|
self.assertEqual(
|
|
question.validate_question('valid'),
|
|
{}
|
|
)
|