diff options
| author | Gert Burger <gertburger@gmail.com> | 2020-08-07 10:02:29 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-08-13 15:28:21 +0200 |
| commit | 0a7d321bf7e126612a43b8aade81cdef1c7dd308 (patch) | |
| tree | 3387c80a46a0d8eee9924462b39ba19d8ac327ee /tests | |
| parent | 839f906a23271b24bf435b16575bbbfd0d2ddcf9 (diff) | |
[2.2.x] Fixed #31863 -- Prevented mutating model state by copies of model instances.
Regression in bfb746f983aa741afa3709794e70f1e0ab6040b5.
Backport of 94ea79be137f3cb30949bf82198e96e094f2650d from master
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/model_regress/tests.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/model_regress/tests.py b/tests/model_regress/tests.py index 28eed87008..87df240d81 100644 --- a/tests/model_regress/tests.py +++ b/tests/model_regress/tests.py @@ -1,3 +1,4 @@ +import copy import datetime from operator import attrgetter @@ -256,3 +257,17 @@ class EvaluateMethodTest(TestCase): dept = Department.objects.create(pk=1, name='abc') dept.evaluate = 'abc' Worker.objects.filter(department=dept) + + +class ModelFieldsCacheTest(TestCase): + def test_fields_cache_reset_on_copy(self): + department1 = Department.objects.create(id=1, name='department1') + department2 = Department.objects.create(id=2, name='department2') + worker1 = Worker.objects.create(name='worker', department=department1) + worker2 = copy.copy(worker1) + + self.assertEqual(worker2.department, department1) + # Changing related fields doesn't mutate the base object. + worker2.department = department2 + self.assertEqual(worker2.department, department2) + self.assertEqual(worker1.department, department1) |
