[IMP] survey_record_generation: first refacto of record creation
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m33s
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m33s
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
from datetime import date
|
||||
|
||||
from odoo.addons.survey.tests.common import SurveyCase
|
||||
|
||||
from psycopg2 import IntegrityError
|
||||
|
||||
from odoo.addons.survey.tests.common import SurveyCase
|
||||
|
||||
|
||||
class TestSurveyRecordCreation(SurveyCase):
|
||||
def setUp(self):
|
||||
@@ -36,7 +36,9 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
[("model", "=", "res.partner"), ("name", "=", "name")]
|
||||
)
|
||||
# And linked the res_partner field "name" to the answer of question_name
|
||||
self.name_survey_record_creation_field_values = self.env["survey.record.creation.field.values"].create(
|
||||
self.name_survey_record_creation_field_values = self.env[
|
||||
"survey.record.creation.field.values"
|
||||
].create(
|
||||
{
|
||||
"survey_record_creation_id": self.survey_record_creation.id,
|
||||
"survey_id": self.survey.id,
|
||||
@@ -80,7 +82,8 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
question=self.question_name, answer=self.answer, answer_value="Jean"
|
||||
)
|
||||
|
||||
### "numerical_box" type of question, tested with FLOAT field "partner_latitude" ###
|
||||
### "numerical_box" type of question,
|
||||
# tested with FLOAT field "partner_latitude" ###
|
||||
self.question_partner_latitude = self._add_question(
|
||||
page=None,
|
||||
name="Partner latitude",
|
||||
@@ -144,11 +147,15 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
],
|
||||
survey_id=self.survey.id,
|
||||
sequence=1,
|
||||
answer_values_type="value"
|
||||
answer_values_type="value",
|
||||
)
|
||||
|
||||
self.question_type.suggested_answer_ids[0].value_char = self.question_type.suggested_answer_ids[0].value
|
||||
self.question_type.suggested_answer_ids[1].value_char = self.question_type.suggested_answer_ids[1].value
|
||||
self.question_type.suggested_answer_ids[
|
||||
0
|
||||
].value_char = self.question_type.suggested_answer_ids[0].value
|
||||
self.question_type.suggested_answer_ids[
|
||||
1
|
||||
].value_char = self.question_type.suggested_answer_ids[1].value
|
||||
|
||||
type_field = self.env["ir.model.fields"].search(
|
||||
[("model", "=", "res.partner"), ("name", "=", "type")]
|
||||
@@ -165,8 +172,9 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
)
|
||||
|
||||
self._add_answer_line(
|
||||
question=self.question_type, answer=self.answer,
|
||||
answer_value=self.question_type.suggested_answer_ids[0].id
|
||||
question=self.question_type,
|
||||
answer=self.answer,
|
||||
answer_value=self.question_type.suggested_answer_ids[0].id,
|
||||
)
|
||||
|
||||
### "simple_choice" type of question, tested with MANY2ONE field "title" ###
|
||||
@@ -184,11 +192,15 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
],
|
||||
survey_id=self.survey.id,
|
||||
sequence=1,
|
||||
answer_values_type="record"
|
||||
answer_values_type="record",
|
||||
)
|
||||
|
||||
self.question_title.suggested_answer_ids[0].record_id = f"res.partner.title,{mister_title.id}"
|
||||
self.question_title.suggested_answer_ids[1].record_id = f"res.partner.title,{madam_title.id}"
|
||||
self.question_title.suggested_answer_ids[
|
||||
0
|
||||
].record_id = f"res.partner.title,{mister_title.id}"
|
||||
self.question_title.suggested_answer_ids[
|
||||
1
|
||||
].record_id = f"res.partner.title,{madam_title.id}"
|
||||
|
||||
title_field = self.env["ir.model.fields"].search(
|
||||
[("model", "=", "res.partner"), ("name", "=", "title")]
|
||||
@@ -205,13 +217,17 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
)
|
||||
|
||||
self._add_answer_line(
|
||||
question=self.question_title, answer=self.answer,
|
||||
answer_value=self.question_title.suggested_answer_ids[0].id
|
||||
question=self.question_title,
|
||||
answer=self.answer,
|
||||
answer_value=self.question_title.suggested_answer_ids[0].id,
|
||||
)
|
||||
|
||||
### "multiple_choice" type of question, tested with MANY2MANY field "category" ###
|
||||
### "multiple_choice" type of question,
|
||||
# tested with MANY2MANY field "category" ###
|
||||
adult_category = self.env["res.partner.category"].create({"name": "Adult"})
|
||||
teenager_category = self.env["res.partner.category"].create({"name": "Teenager"})
|
||||
teenager_category = self.env["res.partner.category"].create(
|
||||
{"name": "Teenager"}
|
||||
)
|
||||
child_category = self.env["res.partner.category"].create({"name": "Child"})
|
||||
self.question_category = self._add_question(
|
||||
page=None,
|
||||
@@ -224,12 +240,18 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
],
|
||||
survey_id=self.survey.id,
|
||||
sequence=1,
|
||||
answer_values_type="record"
|
||||
answer_values_type="record",
|
||||
)
|
||||
|
||||
self.question_category.suggested_answer_ids[0].record_id = f"res.partner.category,{adult_category.id}"
|
||||
self.question_category.suggested_answer_ids[1].record_id = f"res.partner.category,{teenager_category.id}"
|
||||
self.question_category.suggested_answer_ids[2].record_id = f"res.partner.category,{child_category.id}"
|
||||
self.question_category.suggested_answer_ids[
|
||||
0
|
||||
].record_id = f"res.partner.category,{adult_category.id}"
|
||||
self.question_category.suggested_answer_ids[
|
||||
1
|
||||
].record_id = f"res.partner.category,{teenager_category.id}"
|
||||
self.question_category.suggested_answer_ids[
|
||||
2
|
||||
].record_id = f"res.partner.category,{child_category.id}"
|
||||
|
||||
category_field = self.env["ir.model.fields"].search(
|
||||
[("model", "=", "res.partner"), ("name", "=", "category_id")]
|
||||
@@ -246,12 +268,14 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
)
|
||||
|
||||
self._add_answer_line(
|
||||
question=self.question_category, answer=self.answer,
|
||||
answer_value=self.question_category.suggested_answer_ids[0].id
|
||||
question=self.question_category,
|
||||
answer=self.answer,
|
||||
answer_value=self.question_category.suggested_answer_ids[0].id,
|
||||
)
|
||||
self._add_answer_line(
|
||||
question=self.question_category, answer=self.answer,
|
||||
answer_value=self.question_category.suggested_answer_ids[1].id
|
||||
question=self.question_category,
|
||||
answer=self.answer,
|
||||
answer_value=self.question_category.suggested_answer_ids[1].id,
|
||||
)
|
||||
|
||||
self.answer._mark_done()
|
||||
@@ -280,7 +304,7 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
"model_id": res_partner_bank_model.id,
|
||||
}
|
||||
)
|
||||
# Below we test "value_origin": "other_record"
|
||||
# Below we test "value_origin": "other_record" with a required field
|
||||
partner_field = self.env["ir.model.fields"].search(
|
||||
[("model", "=", "res.partner.bank"), ("name", "=", "partner_id")]
|
||||
)
|
||||
@@ -308,6 +332,20 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
"fixed_value_char": "FR76 1444 5004 0004 0000 0000 000",
|
||||
}
|
||||
)
|
||||
# Below we test "value_origin": "other_record" with a NOT required field
|
||||
bank_ids_field = self.env["ir.model.fields"].search(
|
||||
[("model", "=", "res.partner"), ("name", "=", "bank_ids")]
|
||||
)
|
||||
self.env["survey.record.creation.field.values"].create(
|
||||
{
|
||||
"survey_record_creation_id": self.survey_record_creation.id,
|
||||
"survey_id": self.survey.id,
|
||||
"model_id": self.res_partner_model.id,
|
||||
"field_id": bank_ids_field.id,
|
||||
"value_origin": "other_record",
|
||||
"other_created_record_id": self.bank_survey_record_creation.id,
|
||||
}
|
||||
)
|
||||
|
||||
self.answer = self._add_answer(
|
||||
survey=self.survey, partner=False, email="jean@test.fr"
|
||||
@@ -325,7 +363,8 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
self.assertTrue(bank_account.acc_number == "FR76 1444 5004 0004 0000 0000 000")
|
||||
|
||||
def test_records_of_same_model_are_created(self):
|
||||
# When we have 2 survey.record.creation on res.partner, we check that 2 contacts are created
|
||||
# When we have 2 survey.record.creation on res.partner,
|
||||
# we check that 2 contacts are created
|
||||
self.second_question_name = self._add_question(
|
||||
page=None,
|
||||
name="Name of second person",
|
||||
@@ -334,9 +373,7 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
sequence=1,
|
||||
)
|
||||
|
||||
self.second_contact_survey_record_creation = self.env[
|
||||
"survey.record.creation"
|
||||
].create(
|
||||
self.second_contact_creation = self.env["survey.record.creation"].create(
|
||||
{
|
||||
"name": "Second contact",
|
||||
"survey_id": self.survey.id,
|
||||
@@ -345,7 +382,7 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
)
|
||||
self.env["survey.record.creation.field.values"].create(
|
||||
{
|
||||
"survey_record_creation_id": self.second_contact_survey_record_creation.id,
|
||||
"survey_record_creation_id": self.second_contact_creation.id,
|
||||
"survey_id": self.survey.id,
|
||||
"model_id": self.res_partner_model.id,
|
||||
"field_id": self.name_field.id,
|
||||
@@ -402,11 +439,14 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
survey=self.survey, partner=False, email="jean@test.fr"
|
||||
)
|
||||
self._add_answer_line(
|
||||
question=self.question_email, answer=self.answer, answer_value="jean@test.fr"
|
||||
question=self.question_email,
|
||||
answer=self.answer,
|
||||
answer_value="jean@test.fr",
|
||||
)
|
||||
|
||||
with self.assertRaises(IntegrityError):
|
||||
# TODO : propose a better user experience than IntegrityError when a mandatory field is missing
|
||||
# TODO : propose a better user experience than IntegrityError when
|
||||
# a mandatory field is missing
|
||||
self.answer._mark_done()
|
||||
|
||||
def test_survey_submitted_twice_by_same_user(self):
|
||||
@@ -479,10 +519,14 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
],
|
||||
survey_id=self.survey.id,
|
||||
sequence=1,
|
||||
answer_values_type="record"
|
||||
answer_values_type="record",
|
||||
)
|
||||
self.question_title.suggested_answer_ids[0].record_id = f"res.partner.title,{mister_title.id}"
|
||||
self.question_title.suggested_answer_ids[1].record_id = f"res.partner.title,{madam_title.id}"
|
||||
self.question_title.suggested_answer_ids[
|
||||
0
|
||||
].record_id = f"res.partner.title,{mister_title.id}"
|
||||
self.question_title.suggested_answer_ids[
|
||||
1
|
||||
].record_id = f"res.partner.title,{madam_title.id}"
|
||||
|
||||
self.question_street = self._add_question(
|
||||
page=None,
|
||||
@@ -539,10 +583,18 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
question=self.question_name, answer=self.answer, answer_value="Jean"
|
||||
)
|
||||
self._add_answer_line(
|
||||
question=self.question_email, answer=self.answer, answer_value=False, skipped=True, answer_type=False
|
||||
question=self.question_email,
|
||||
answer=self.answer,
|
||||
answer_value=False,
|
||||
skipped=True,
|
||||
answer_type=False,
|
||||
)
|
||||
self._add_answer_line(
|
||||
question=self.question_title, answer=self.answer, answer_value=False, skipped=True, answer_type=False
|
||||
question=self.question_title,
|
||||
answer=self.answer,
|
||||
answer_value=False,
|
||||
skipped=True,
|
||||
answer_type=False,
|
||||
)
|
||||
self.answer._mark_done()
|
||||
|
||||
@@ -563,11 +615,15 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
],
|
||||
survey_id=self.survey.id,
|
||||
sequence=1,
|
||||
answer_values_type="value"
|
||||
answer_values_type="value",
|
||||
)
|
||||
|
||||
self.question_employee.suggested_answer_ids[0].value_char = self.question_employee.suggested_answer_ids[0].value
|
||||
self.question_employee.suggested_answer_ids[1].value_char = self.question_employee.suggested_answer_ids[1].value
|
||||
self.question_employee.suggested_answer_ids[
|
||||
0
|
||||
].value_char = self.question_employee.suggested_answer_ids[0].value
|
||||
self.question_employee.suggested_answer_ids[
|
||||
1
|
||||
].value_char = self.question_employee.suggested_answer_ids[1].value
|
||||
|
||||
employee_field = self.env["ir.model.fields"].search(
|
||||
[("model", "=", "res.partner"), ("name", "=", "employee")]
|
||||
@@ -587,12 +643,12 @@ class TestSurveyRecordCreation(SurveyCase):
|
||||
survey=self.survey, partner=False, email="jean@test.fr"
|
||||
)
|
||||
self._add_answer_line(
|
||||
question=self.question_name, answer=self.answer,
|
||||
answer_value="Jean"
|
||||
question=self.question_name, answer=self.answer, answer_value="Jean"
|
||||
)
|
||||
self._add_answer_line(
|
||||
question=self.question_employee, answer=self.answer,
|
||||
answer_value=self.question_employee.suggested_answer_ids[0].id
|
||||
question=self.question_employee,
|
||||
answer=self.answer,
|
||||
answer_value=self.question_employee.suggested_answer_ids[0].id,
|
||||
)
|
||||
self.answer._mark_done()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user