Skip to content

Commit e4c4f43

Browse files
committed
chore: fix failing tests
Signed-off-by: tdruez <tdruez@aboutcode.org>
1 parent d9e4224 commit e4c4f43

2 files changed

Lines changed: 21 additions & 10 deletions

File tree

component_catalog/admin.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -555,15 +555,23 @@ def get_actions(self, request):
555555
del actions["set_policy"]
556556
return actions
557557

558-
def log_deletion(self, request, object, object_repr):
558+
def delete_model(self, request, obj):
559559
"""
560+
Handle single object deletion from the delete view.
560561
Add the option to delete associated `Package` instances.
561-
We use this method rather than `self.delete_model()` since we want to support both
562-
the delete_view and the `delete_selected` action.
563562
"""
564-
super().log_deletion(request, object, object_repr)
565563
if request.POST.get("delete_packages"):
566-
object.packages.all().delete()
564+
obj.packages.all().delete()
565+
super().delete_model(request, obj)
566+
567+
def delete_queryset(self, request, queryset):
568+
"""
569+
Handle bulk deletion from the delete_selected action.
570+
Add the option to delete associated `Package` instances.
571+
"""
572+
if request.POST.get("delete_packages"):
573+
Package.objects.filter(component__in=queryset).delete()
574+
super().delete_queryset(request, queryset)
567575

568576
def changeform_view(self, request, object_id=None, form_url="", extra_context=None):
569577
"""

component_catalog/tests/test_admin.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2204,18 +2204,20 @@ def test_component_admin_delete_confirmation_include_associated_packages(self):
22042204
expected = "Would you also like to delete Packages associated with this Component"
22052205
self.assertNotContains(response, expected)
22062206

2207-
package1 = Package.objects.create(filename="package1.zip", dataspace=self.dataspace1)
2207+
package1 = make_package(dataspace=self.dataspace1, filename="package1.zip")
22082208
ComponentAssignedPackage.objects.create(
22092209
component=self.component1, package=package1, dataspace=self.dataspace1
22102210
)
2211-
package2 = Package.objects.create(filename="package2.zip", dataspace=self.dataspace1)
2211+
package2 = make_package(dataspace=self.dataspace1, filename="package2.zip")
22122212
ComponentAssignedPackage.objects.create(
22132213
component=self.component1, package=package2, dataspace=self.dataspace1
22142214
)
2215+
self.assertEqual(2, self.component1.packages.count())
22152216

2216-
self.assertTrue(self.component1.packages.exists())
22172217
response = self.client.get(delete_url)
22182218
self.assertContains(response, expected)
2219+
field = '<input type="checkbox" name="enable_delete_packages" id="enable_delete_packages">'
2220+
self.assertContains(response, field)
22192221

22202222
data = {
22212223
"post": "yes",
@@ -2224,9 +2226,10 @@ def test_component_admin_delete_confirmation_include_associated_packages(self):
22242226
response = self.client.post(delete_url, data=data, follow=True)
22252227
self.assertContains(response, "was deleted successfully.")
22262228
self.assertFalse(Component.objects.filter(pk=self.component1.pk).exists())
2227-
self.assertFalse(Package.objects.filter(pk__in=[package1.pk, package2.pk]).exists())
2229+
package_qs = Package.objects.filter(pk__in=[package1.pk, package2.pk])
2230+
self.assertFalse(package_qs.exists())
22282231

2229-
package3 = Package.objects.create(filename="package3.zip", dataspace=self.dataspace1)
2232+
package3 = make_package(dataspace=self.dataspace1, filename="package3.zip")
22302233
ComponentAssignedPackage.objects.create(
22312234
component=self.component2, package=package3, dataspace=self.dataspace1
22322235
)

0 commit comments

Comments
 (0)