diff options
| author | trontelj <tronteljklemen@gmail.com> | 2023-10-28 00:24:09 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-11-24 13:42:40 +0100 |
| commit | b0ec87b8578147be4357c90eabcd2b916c780810 (patch) | |
| tree | 15a7c13f473ab5f2d0056aa8f5dec6ba0667ce58 /tests/basic/tests.py | |
| parent | 1c6e8ec4ed6d9c374161eda965160e4782c7d71e (diff) | |
Fixed #34925 -- Prevented Model.refresh_from_db() from mutating list of fields.
Diffstat (limited to 'tests/basic/tests.py')
| -rw-r--r-- | tests/basic/tests.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/tests/basic/tests.py b/tests/basic/tests.py index 3c2d1dead9..c6ad1faefd 100644 --- a/tests/basic/tests.py +++ b/tests/basic/tests.py @@ -926,24 +926,32 @@ class ModelRefreshTests(TestCase): def test_prefetched_cache_cleared(self): a = Article.objects.create(pub_date=datetime(2005, 7, 28)) - s = SelfRef.objects.create(article=a) + s = SelfRef.objects.create(article=a, article_cited=a) # refresh_from_db() without fields=[...] - a1_prefetched = Article.objects.prefetch_related("selfref_set").first() + a1_prefetched = Article.objects.prefetch_related("selfref_set", "cited").first() self.assertCountEqual(a1_prefetched.selfref_set.all(), [s]) + self.assertCountEqual(a1_prefetched.cited.all(), [s]) s.article = None + s.article_cited = None s.save() # Relation is cleared and prefetch cache is stale. self.assertCountEqual(a1_prefetched.selfref_set.all(), [s]) + self.assertCountEqual(a1_prefetched.cited.all(), [s]) a1_prefetched.refresh_from_db() # Cache was cleared and new results are available. self.assertCountEqual(a1_prefetched.selfref_set.all(), []) + self.assertCountEqual(a1_prefetched.cited.all(), []) # refresh_from_db() with fields=[...] - a2_prefetched = Article.objects.prefetch_related("selfref_set").first() + a2_prefetched = Article.objects.prefetch_related("selfref_set", "cited").first() self.assertCountEqual(a2_prefetched.selfref_set.all(), []) + self.assertCountEqual(a2_prefetched.cited.all(), []) s.article = a + s.article_cited = a s.save() # Relation is added and prefetch cache is stale. self.assertCountEqual(a2_prefetched.selfref_set.all(), []) - a2_prefetched.refresh_from_db(fields=["selfref_set"]) + self.assertCountEqual(a2_prefetched.cited.all(), []) + a2_prefetched.refresh_from_db(fields=["selfref_set", "cited"]) # Cache was cleared and new results are available. self.assertCountEqual(a2_prefetched.selfref_set.all(), [s]) + self.assertCountEqual(a2_prefetched.cited.all(), [s]) |
