from types import SimpleNamespace import pytest from apps.gallery.admin import GalleryAdmin pytestmark = pytest.mark.unit def test_gallery_admin_metadata_and_previews(): admin = GalleryAdmin.__new__(GalleryAdmin) empty = SimpleNamespace(image=None, file_size=0, width=0, height=0) assert admin.image_preview(empty) == "No Image" assert admin.image_preview_large(empty) == "No Image" assert admin.file_size_display(empty) == "Unknown" assert admin.dimensions(empty) == "Unknown" image = SimpleNamespace(image=SimpleNamespace(url="/image.png"), file_size=1048576, file_size_mb=1, width=100, height=80) assert "/image.png" in admin.image_preview(image) assert "/image.png" in admin.image_preview_large(image) assert admin.file_size_display(image) == "1 MB" assert admin.dimensions(image) == "100 × 80" def test_gallery_admin_bulk_actions(mocker): admin = GalleryAdmin.__new__(GalleryAdmin) message = mocker.patch.object(admin, "message_user") queryset = mocker.Mock() queryset.count.return_value = 2 admin.make_public(None, queryset) queryset.update.assert_called_with(is_public=True) admin.make_private(None, queryset) queryset.update.assert_called_with(is_public=False) first = mocker.Mock() second = mocker.Mock() queryset.__iter__ = mocker.Mock(return_value=iter([first, second])) admin.restore_images(None, queryset) first.restore.assert_called_once() second.restore.assert_called_once() assert message.call_count == 3