Skip to content

Commit 599ac05

Browse files
committed
[ADD] tests: test change_field_selection_values
Add a test for util.change_field_selection_values where the selection is also a default value.
1 parent 43bd59a commit 599ac05

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

src/base/tests/test_util.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,6 +1131,32 @@ def test_invert_boolean_field(self):
11311131
initial_repartition[False] += initial_repartition.pop(None, 0)
11321132
self.assertEqual(back_repartition, initial_repartition)
11331133

1134+
def test_change_field_selection_with_default(self):
1135+
cr = self.env.cr
1136+
lang = self.env["res.lang"].create({"name": "Elvish", "code": "el_VISH", "active": True})
1137+
if util.table_exists(cr, "ir_default"):
1138+
self.env["ir.default"].set("res.partner", "lang", "el_VISH")
1139+
else:
1140+
self.env["ir.values"].set_default("res.partner", "lang", "el_VISH")
1141+
util.flush(lang)
1142+
partner = self.env["res.partner"].create({"name": "Gandalf"})
1143+
self.assertEqual(partner.lang, "el_VISH")
1144+
1145+
util.invalidate(partner)
1146+
util.clear_cache(partner)
1147+
util.change_field_selection_values(cr, "res.partner", "lang", {"el_VISH": "en_US"})
1148+
1149+
self.assertEqual(partner.lang, "en_US")
1150+
1151+
if util.table_exists(cr, "ir_default"):
1152+
new_default = (getattr(self.env["ir.default"], "get", None) or self.env["ir.default"]._get)(
1153+
"res.partner", "lang"
1154+
)
1155+
else:
1156+
new_default = self.env["ir.values"].get_default("res.partner", "lang")
1157+
1158+
self.assertEqual(new_default, "en_US")
1159+
11341160

11351161
class TestHelpers(UnitTestCase):
11361162
def test_model_table_conversion(self):

src/util/orm.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,14 @@ def invalidate(records, *args):
229229
((env and getattr(records.env, "invalidate_all", None)) or records.invalidate_cache)(*args)
230230

231231

232+
def clear_cache(records):
233+
env = getattr(records, "env", None)
234+
(
235+
(env and getattr(records.env, "registry", None) and getattr(records.env.registry, "clear_cache", None))
236+
or records.clear_caches
237+
)()
238+
239+
232240
def no_selection_cache_validation(f=None):
233241
if not version_gte("8.0"):
234242
return f

0 commit comments

Comments
 (0)