bloombase/plants/tests/test_location_redesign.py

51 lines
1.6 KiB
Python

import pytest
from django.core.files.uploadedfile import SimpleUploadedFile
from plants.models import Location
from django.test import Client
from django.urls import reverse
@pytest.mark.django_db
def test_location_cover_photo_field_exists():
"""Location can be saved with and without a cover_photo."""
loc = Location.objects.create(name='Test Garden')
assert loc.cover_photo.name == '' or loc.cover_photo.name is None
fake_img = SimpleUploadedFile('cover.jpg', b'fake-image-data', content_type='image/jpeg')
loc.cover_photo = fake_img
loc.save()
loc.refresh_from_db()
assert loc.cover_photo.name.startswith('locations/')
@pytest.fixture
def client():
return Client()
@pytest.mark.django_db
def test_location_detail_view_returns_200(client):
loc = Location.objects.create(name='My Terrace')
resp = client.get(reverse('location_detail', kwargs={'pk': loc.pk}))
assert resp.status_code == 200
assert b'My Terrace' in resp.content
@pytest.mark.django_db
def test_location_edit_with_cover_photo(client):
import io
from PIL import Image
loc = Location.objects.create(name='Balcony')
buf = io.BytesIO()
Image.new('RGB', (1, 1), color=(0, 255, 0)).save(buf, format='JPEG')
buf.seek(0)
fake_img = SimpleUploadedFile('cover.jpg', buf.read(), content_type='image/jpeg')
resp = client.post(
reverse('location_edit', kwargs={'pk': loc.pk}),
{'name': 'Balcony Updated', 'cover_photo': fake_img},
)
assert resp.status_code == 302
loc.refresh_from_db()
assert loc.name == 'Balcony Updated'
assert loc.cover_photo.name.startswith('locations/')