# -*- 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'), {} )