65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
from pathlib import Path
|
|
|
|
from django.core.files import File
|
|
from django.test import RequestFactory, TestCase
|
|
from django.urls import reverse
|
|
|
|
from vbv_lernwelt.course.creators.test_utils import create_user
|
|
from vbv_lernwelt.media_files.models import UserImage
|
|
|
|
TEST_IMAGE = Path(__file__).parent / "test_images" / "user1_profile.jpg"
|
|
|
|
|
|
class UserImageViewTest(TestCase):
|
|
def setUp(self):
|
|
self.factory = RequestFactory()
|
|
self.user = create_user("supervisor")
|
|
|
|
with open(TEST_IMAGE, "rb") as f:
|
|
self.user_image, _ = UserImage.objects.get_or_create(
|
|
file=File(f, name=TEST_IMAGE.name),
|
|
)
|
|
|
|
def test_image(self):
|
|
# GIVEN
|
|
self.client.force_login(self.user)
|
|
|
|
# WHEN
|
|
response = self._get_image(self.user_image.id, "fill-300x150")
|
|
|
|
# THEN
|
|
self.assertEqual(response.status_code, 200)
|
|
self.assertEqual(response["Content-Type"], "image/jpeg")
|
|
|
|
def test_invalid_id(self):
|
|
# GIVEN
|
|
image_id = 123456789
|
|
self.client.force_login(self.user)
|
|
|
|
# WHEN
|
|
response = self._get_image(image_id)
|
|
|
|
# THEN
|
|
self.assertEqual(response.status_code, 404)
|
|
|
|
def test_invalid_filter(self):
|
|
# GIVEN
|
|
self.client.force_login(self.user)
|
|
filter_spec = "invalid-filter"
|
|
|
|
# WHEN
|
|
response = self._get_image(self.user_image.id, filter_spec)
|
|
|
|
# THEN
|
|
self.assertEqual(response.status_code, 400)
|
|
self.assertEqual(
|
|
response.content, f"Invalid filter spec: {filter_spec}".encode()
|
|
)
|
|
|
|
def _get_image(self, image_id, filter_spec=None):
|
|
url = reverse("user_image", kwargs={"image_id": image_id})
|
|
if filter_spec:
|
|
url += f"?filter={filter_spec}"
|
|
|
|
return self.client.get(url)
|