Merge pull request #1247 from joachimesque/image-absolute-url-getter

Add get_absolute_url to ImageField
This commit is contained in:
Mouse Reeve
2021-11-10 10:27:29 -08:00
committed by GitHub
3 changed files with 41 additions and 19 deletions

View File

@ -22,6 +22,7 @@ from bookwyrm.activitypub.base_activity import ActivityObject
from bookwyrm.models import fields, User, Status
from bookwyrm.models.base_model import BookWyrmModel
from bookwyrm.models.activitypub_mixin import ActivitypubMixin
from bookwyrm.settings import DOMAIN
# pylint: disable=too-many-public-methods
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
@ -424,21 +425,18 @@ class ModelFields(TestCase):
image.save(output, format=image.format)
user.avatar.save("test.jpg", ContentFile(output.getvalue()))
output = fields.image_serializer(user.avatar, alt="alt text")
instance = fields.ImageField()
output = instance.field_to_activity(user.avatar)
self.assertIsNotNone(
re.match(
r".*\.jpg",
fr"https:\/\/{DOMAIN}\/.*\.jpg",
output.url,
)
)
self.assertEqual(output.name, "alt text")
self.assertEqual(output.name, "")
self.assertEqual(output.type, "Document")
instance = fields.ImageField()
output = fields.image_serializer(user.avatar, alt=None)
self.assertEqual(instance.field_to_activity(user.avatar), output)
responses.add(
responses.GET,
"http://www.example.com/image.jpg",
@ -452,7 +450,7 @@ class ModelFields(TestCase):
def test_image_serialize(self, *_):
"""make sure we're creating sensible image paths"""
ValueMock = namedtuple("ValueMock", ("url"))
value_mock = ValueMock("/images/fish.jpg")
value_mock = ValueMock("https://your.domain.here/images/fish.jpg")
result = fields.image_serializer(value_mock, "hello")
self.assertEqual(result.type, "Document")
self.assertEqual(result.url, "https://your.domain.here/images/fish.jpg")

View File

@ -2,6 +2,7 @@
from unittest.mock import patch
from io import BytesIO
import pathlib
from urllib.parse import urljoin
from django.http import Http404
from django.core.files.base import ContentFile
@ -192,7 +193,7 @@ class Status(TestCase):
self.assertEqual(activity["attachment"][0].type, "Document")
self.assertEqual(
activity["attachment"][0].url,
f"https://{settings.DOMAIN}{self.book.cover.url}",
urljoin(settings.MEDIA_FULL_URL, self.book.cover.url.lstrip("/")),
)
self.assertEqual(activity["attachment"][0].name, "Test Edition")
@ -222,7 +223,7 @@ class Status(TestCase):
self.assertEqual(activity["attachment"][0].type, "Document")
self.assertEqual(
activity["attachment"][0].url,
f"https://{settings.DOMAIN}{self.book.cover.url}",
urljoin(settings.MEDIA_FULL_URL, self.book.cover.url.lstrip("/")),
)
self.assertEqual(activity["attachment"][0].name, "Test Edition")
@ -259,7 +260,7 @@ class Status(TestCase):
self.assertEqual(activity["attachment"][0].type, "Document")
self.assertEqual(
activity["attachment"][0].url,
f"https://{settings.DOMAIN}{self.book.cover.url}",
urljoin(settings.MEDIA_FULL_URL, self.book.cover.url.lstrip("/")),
)
self.assertEqual(activity["attachment"][0].name, "Test Edition")
@ -300,7 +301,7 @@ class Status(TestCase):
self.assertEqual(activity["attachment"][0].type, "Document")
self.assertEqual(
activity["attachment"][0].url,
f"https://{settings.DOMAIN}{self.book.cover.url}",
urljoin(settings.MEDIA_FULL_URL, self.book.cover.url.lstrip("/")),
)
self.assertEqual(activity["attachment"][0].name, "Test Edition")
@ -322,7 +323,7 @@ class Status(TestCase):
self.assertEqual(activity["attachment"][0].type, "Document")
self.assertEqual(
activity["attachment"][0].url,
f"https://{settings.DOMAIN}{self.book.cover.url}",
urljoin(settings.MEDIA_FULL_URL, self.book.cover.url.lstrip("/")),
)
self.assertEqual(activity["attachment"][0].name, "Test Edition")
@ -343,7 +344,7 @@ class Status(TestCase):
self.assertEqual(activity["attachment"][0].type, "Document")
self.assertEqual(
activity["attachment"][0].url,
f"https://{settings.DOMAIN}{self.book.cover.url}",
urljoin(settings.MEDIA_FULL_URL, self.book.cover.url.lstrip("/")),
)
self.assertEqual(activity["attachment"][0].name, "Test Edition")