[IMP]survey_record_generation:show alerte when deleting a crm tag used in lead record creation
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m42s
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m42s
This commit is contained in:
@@ -1 +1,2 @@
|
||||
from . import test_survey_record_creation
|
||||
from . import test_referenced_record_protection
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.addons.survey.tests.common import SurveyCase
|
||||
|
||||
|
||||
class TestReferencedRecordProtection(SurveyCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.survey = self.env["survey.survey"].create({"title": "Test Survey"})
|
||||
self.res_partner_model = self.env["ir.model"]._get("res.partner")
|
||||
self.survey_record_creation = self.env["survey.record.creation"].create(
|
||||
{
|
||||
"name": "Contact",
|
||||
"survey_id": self.survey.id,
|
||||
"model_id": self.res_partner_model.id,
|
||||
}
|
||||
)
|
||||
|
||||
def test_unlink_blocked_when_referenced_via_many2one(self):
|
||||
title = self.env["res.partner.title"].create({"name": "Mister"})
|
||||
title_field = self.env["ir.model.fields"].search(
|
||||
[("model", "=", "res.partner"), ("name", "=", "title")]
|
||||
)
|
||||
self.env["survey.record.creation.field.values"].create(
|
||||
{
|
||||
"survey_record_creation_id": self.survey_record_creation.id,
|
||||
"field_id": title_field.id,
|
||||
"value_origin": "fixed",
|
||||
"fixed_value_many2one": f"res.partner.title,{title.id}",
|
||||
}
|
||||
)
|
||||
|
||||
with self.assertRaises(UserError) as ctx:
|
||||
title.unlink()
|
||||
self.assertIn("Test Survey", str(ctx.exception))
|
||||
self.assertIn("Mister", str(ctx.exception))
|
||||
|
||||
def test_unlink_blocked_when_referenced_via_many2many(self):
|
||||
category = self.env["res.partner.category"].create({"name": "Adult"})
|
||||
category_field = self.env["ir.model.fields"].search(
|
||||
[("model", "=", "res.partner"), ("name", "=", "category_id")]
|
||||
)
|
||||
field_values = self.env["survey.record.creation.field.values"].create(
|
||||
{
|
||||
"survey_record_creation_id": self.survey_record_creation.id,
|
||||
"field_id": category_field.id,
|
||||
"value_origin": "fixed",
|
||||
}
|
||||
)
|
||||
self.env["survey.record.creation.field.values.x2m"].create(
|
||||
{
|
||||
"survey_record_creation_field_values_id": field_values.id,
|
||||
"value_reference": f"res.partner.category,{category.id}",
|
||||
}
|
||||
)
|
||||
|
||||
with self.assertRaises(UserError) as ctx:
|
||||
category.unlink()
|
||||
self.assertIn("Test Survey", str(ctx.exception))
|
||||
self.assertIn("Adult", str(ctx.exception))
|
||||
|
||||
def test_unlink_allowed_when_not_referenced(self):
|
||||
title = self.env["res.partner.title"].create({"name": "Sir"})
|
||||
# No survey config references this title
|
||||
title.unlink()
|
||||
self.assertFalse(title.exists())
|
||||
|
||||
def test_unlink_allowed_after_removing_survey_config(self):
|
||||
title = self.env["res.partner.title"].create({"name": "Mister"})
|
||||
title_field = self.env["ir.model.fields"].search(
|
||||
[("model", "=", "res.partner"), ("name", "=", "title")]
|
||||
)
|
||||
field_values = self.env["survey.record.creation.field.values"].create(
|
||||
{
|
||||
"survey_record_creation_id": self.survey_record_creation.id,
|
||||
"field_id": title_field.id,
|
||||
"value_origin": "fixed",
|
||||
"fixed_value_many2one": f"res.partner.title,{title.id}",
|
||||
}
|
||||
)
|
||||
field_values.unlink()
|
||||
title.unlink()
|
||||
self.assertFalse(title.exists())
|
||||
|
||||
def test_unlink_allowed_during_module_uninstall(self):
|
||||
title = self.env["res.partner.title"].create({"name": "Mister"})
|
||||
title_field = self.env["ir.model.fields"].search(
|
||||
[("model", "=", "res.partner"), ("name", "=", "title")]
|
||||
)
|
||||
self.env["survey.record.creation.field.values"].create(
|
||||
{
|
||||
"survey_record_creation_id": self.survey_record_creation.id,
|
||||
"field_id": title_field.id,
|
||||
"value_origin": "fixed",
|
||||
"fixed_value_many2one": f"res.partner.title,{title.id}",
|
||||
}
|
||||
)
|
||||
title.with_context(module_uninstall=True).unlink()
|
||||
self.assertFalse(title.exists())
|
||||
Reference in New Issue
Block a user