51 lines
1.6 KiB
Python
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/')
|