Skip to content

Commit f57a900

Browse files
authored
Removed integer pk assumption in AdminCustomQuerysetTest.
1 parent a53e02a commit f57a900

3 files changed

Lines changed: 32 additions & 24 deletions

File tree

tests/admin_views/admin.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
CyclicTwo,
6262
DependentChild,
6363
DooHickey,
64-
EmptyModel,
6564
EmptyModelHidden,
6665
EmptyModelMixin,
6766
EmptyModelVisible,
@@ -77,6 +76,7 @@
7776
Gadget,
7877
Gallery,
7978
GenRelReference,
79+
GetQuerySetModel,
8080
Grommet,
8181
ImplicitlyGeneratedPK,
8282
Ingredient,
@@ -542,9 +542,9 @@ def save_related(self, request, form, formsets, change):
542542
child.save()
543543

544544

545-
class EmptyModelAdmin(admin.ModelAdmin):
545+
class GetQuerySetModelAdmin(admin.ModelAdmin):
546546
def get_queryset(self, request):
547-
return super().get_queryset(request).filter(pk__gt=1)
547+
return super().get_queryset(request).filter(deleted=False)
548548

549549

550550
class OldSubscriberAdmin(admin.ModelAdmin):
@@ -1333,7 +1333,7 @@ def test_action(self, request, selected):
13331333
site.register(Podcast, PodcastAdmin)
13341334
site.register(Vodcast, VodcastAdmin)
13351335
site.register(Parent, ParentAdmin)
1336-
site.register(EmptyModel, EmptyModelAdmin)
1336+
site.register(GetQuerySetModel, GetQuerySetModelAdmin)
13371337
site.register(Fabric, FabricAdmin)
13381338
site.register(Gallery, GalleryAdmin)
13391339
site.register(Picture, PictureAdmin)

tests/admin_views/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,9 @@ class Toy(models.Model):
390390
child = models.ForeignKey(PKChild, models.CASCADE)
391391

392392

393-
class EmptyModel(models.Model):
393+
class GetQuerySetModel(models.Model):
394+
deleted = models.BooleanField(default=False)
395+
394396
def __str__(self):
395397
return "Primary key = %s" % self.id
396398

tests/admin_views/tests.py

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@
8080
CyclicTwo,
8181
DooHickey,
8282
Employee,
83-
EmptyModel,
8483
Fabric,
8584
FancyDoodad,
8685
FieldOverridePost,
@@ -89,6 +88,7 @@
8988
FoodDelivery,
9089
FunkyTag,
9190
Gallery,
91+
GetQuerySetModel,
9292
Grommet,
9393
Inquisition,
9494
Language,
@@ -5454,7 +5454,8 @@ def setUpTestData(cls):
54545454
cls.superuser = User.objects.create_superuser(
54555455
username="super", password="secret", email="super@example.com"
54565456
)
5457-
cls.pks = [EmptyModel.objects.create().id for i in range(3)]
5457+
cls.obj = GetQuerySetModel.objects.create()
5458+
cls.deleted_obj = GetQuerySetModel.objects.create(deleted=True)
54585459

54595460
def setUp(self):
54605461
self.client.force_login(self.superuser)
@@ -5465,12 +5466,11 @@ def setUp(self):
54655466
}
54665467

54675468
def test_changelist_view(self):
5468-
response = self.client.get(reverse("admin:admin_views_emptymodel_changelist"))
5469-
for i in self.pks:
5470-
if i > 1:
5471-
self.assertContains(response, "Primary key = %s" % i)
5472-
else:
5473-
self.assertNotContains(response, "Primary key = %s" % i)
5469+
# The changelist filters objects using ModelAdmin.get_queryset().
5470+
url = reverse("admin:admin_views_getquerysetmodel_changelist")
5471+
response = self.client.get(url)
5472+
self.assertContains(response, str(self.obj))
5473+
self.assertNotContains(response, str(self.deleted_obj))
54745474

54755475
def test_changelist_view_count_queries(self):
54765476
# create 2 Person objects
@@ -5501,17 +5501,23 @@ def test_changelist_view_count_queries(self):
55015501
self.assertEqual(resp.context["selection_note_all"], "1 selected")
55025502

55035503
def test_change_view(self):
5504-
for i in self.pks:
5505-
url = reverse("admin:admin_views_emptymodel_change", args=(i,))
5506-
response = self.client.get(url, follow=True)
5507-
if i > 1:
5508-
self.assertEqual(response.status_code, 200)
5509-
else:
5510-
self.assertRedirects(response, reverse("admin:index"))
5511-
self.assertEqual(
5512-
[m.message for m in response.context["messages"]],
5513-
["empty model with ID “1” doesn’t exist. Perhaps it was deleted?"],
5514-
)
5504+
# The change view filters objects using ModelAdmin.get_queryset().
5505+
url = reverse("admin:admin_views_getquerysetmodel_change", args=(self.obj.pk,))
5506+
response = self.client.get(url, follow=True)
5507+
self.assertEqual(response.status_code, 200)
5508+
# The deleted object isn't accessible.
5509+
url = reverse(
5510+
"admin:admin_views_getquerysetmodel_change", args=(self.deleted_obj.pk,)
5511+
)
5512+
response = self.client.get(url, follow=True)
5513+
self.assertRedirects(response, reverse("admin:index"))
5514+
self.assertEqual(
5515+
[m.message for m in response.context["messages"]],
5516+
[
5517+
f"get query set model with ID “{self.deleted_obj.pk}” doesn’t "
5518+
"exist. Perhaps it was deleted?"
5519+
],
5520+
)
55155521

55165522
def test_add_model_modeladmin_defer_qs(self):
55175523
# Test for #14529. defer() is used in ModelAdmin.get_queryset()

0 commit comments

Comments
 (0)