|
16 | 16 | from hvad.test_utils.context_managers import SettingsOverride |
17 | 17 | from hvad.test_utils.project.app.models import Normal, SimpleRelated, Other, AutoPopulated |
18 | 18 |
|
| 19 | +PREFETCH_RELATED = (django.VERSION >= (1, 4)) |
| 20 | + |
19 | 21 | class BaseAdminTests(object): |
20 | 22 | def _get_admin(self, model): |
21 | 23 | return admin.site._registry[model] |
@@ -83,13 +85,21 @@ def test_all_translations(self): |
83 | 85 | obj = Normal.objects.language("en").create( |
84 | 86 | shared_field="shared", |
85 | 87 | ) |
| 88 | + |
| 89 | + # Get the object back from db to test the use of prefetch_related |
| 90 | + qs = Normal.objects.language('en') |
| 91 | + if PREFETCH_RELATED: |
| 92 | + qs = qs.prefetch_related('translations') |
| 93 | + obj = qs.get(pk=obj.pk) |
86 | 94 | with LanguageOverride('en'): |
87 | | - self.assertTrue(myadmin.all_translations(obj).find("<strong>") != -1) |
88 | | - # Entries should be linked to the corresponding translation page |
89 | | - self.assertTrue(myadmin.all_translations(obj).find("?language=en") != -1) |
| 95 | + with self.assertNumQueries(0 if PREFETCH_RELATED else 2): |
| 96 | + self.assertTrue(myadmin.all_translations(obj).find("<strong>") != -1) |
| 97 | + # Entries should be linked to the corresponding translation page |
| 98 | + self.assertTrue(myadmin.all_translations(obj).find("?language=en") != -1) |
90 | 99 |
|
91 | 100 | with LanguageOverride('ja'): |
92 | | - self.assertTrue(myadmin.all_translations(obj).find("<strong>") == -1) |
| 101 | + with self.assertNumQueries(0 if PREFETCH_RELATED else 1): |
| 102 | + self.assertTrue(myadmin.all_translations(obj).find("<strong>") == -1) |
93 | 103 |
|
94 | 104 | # An unsaved object, shouldn't have any translations |
95 | 105 |
|
|
0 commit comments