test: update image view tests and add Image model tests
This commit is contained in:
@@ -10,11 +10,13 @@ from PIL import Image
|
|||||||
# Django imports.
|
# Django imports.
|
||||||
from django.test import Client, RequestFactory, TestCase, override_settings
|
from django.test import Client, RequestFactory, TestCase, override_settings
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
# Project imports.
|
# Project imports.
|
||||||
from viewer.common import SORT_LABELS
|
from viewer.common import SORT_LABELS
|
||||||
from viewer.directory import do_recursive_search
|
from viewer.directory import do_recursive_search
|
||||||
from viewer.views import gallery_view
|
from viewer.views import gallery_view
|
||||||
|
from viewer.models import Image as Im
|
||||||
|
|
||||||
|
|
||||||
class GalleryBaseTests(TestCase):
|
class GalleryBaseTests(TestCase):
|
||||||
@@ -363,6 +365,14 @@ class GalleryViewTests(GalleryBaseTests):
|
|||||||
)
|
)
|
||||||
self.assertIsNotNone(image_meta.get("created"))
|
self.assertIsNotNone(image_meta.get("created"))
|
||||||
self.assertIsNotNone(image_meta.get("modified"))
|
self.assertIsNotNone(image_meta.get("modified"))
|
||||||
|
# New image metadata fields: visits (int), visited (formatted ts), favorite (bool)
|
||||||
|
self.assertIn("visits", image_meta)
|
||||||
|
self.assertIsInstance(image_meta.get("visits"), int)
|
||||||
|
self.assertGreaterEqual(image_meta.get("visits"), 1)
|
||||||
|
self.assertIn("visited", image_meta)
|
||||||
|
self.assertIsNotNone(image_meta.get("visited"))
|
||||||
|
self.assertIn("favorite", image_meta)
|
||||||
|
self.assertIsInstance(image_meta.get("favorite"), bool)
|
||||||
|
|
||||||
def test_sort_modes_recent_and_tnecer_use_mtime(self):
|
def test_sort_modes_recent_and_tnecer_use_mtime(self):
|
||||||
recent = self.client.get("/gallery/?sort=recent")
|
recent = self.client.get("/gallery/?sort=recent")
|
||||||
@@ -451,3 +461,43 @@ class GalleryTemplateTests(GalleryBaseTests):
|
|||||||
css_path = Path(__file__).resolve().parent / "static" / "css" / "styles.css"
|
css_path = Path(__file__).resolve().parent / "static" / "css" / "styles.css"
|
||||||
css = css_path.read_text(encoding="utf-8")
|
css = css_path.read_text(encoding="utf-8")
|
||||||
self.assertIn("box-shadow: 0 5px 20px", css)
|
self.assertIn("box-shadow: 0 5px 20px", css)
|
||||||
|
|
||||||
|
|
||||||
|
class ImageModelTests(GalleryBaseTests):
|
||||||
|
def test_image_model_defaults_and_path_storage(self):
|
||||||
|
# Create a model entry and verify defaults
|
||||||
|
path_str = str(self.gallery_root / "alpha.jpg")
|
||||||
|
img = Im.objects.create(user=self.user, path=path_str)
|
||||||
|
|
||||||
|
self.assertEqual(img.visits, 0)
|
||||||
|
self.assertFalse(img.favorite)
|
||||||
|
self.assertIsNotNone(img.last_visited)
|
||||||
|
# FilePathField should store the provided path string
|
||||||
|
self.assertEqual(img.path, path_str)
|
||||||
|
|
||||||
|
def test_get_request_increments_visits_and_updates_last_visited(self):
|
||||||
|
path_url = "/gallery/alpha.jpg/"
|
||||||
|
before = timezone.now()
|
||||||
|
response = self.client.get(path_url, follow=True)
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
img = Im.objects.get(user=self.user, path=str(self.gallery_root / "alpha.jpg"))
|
||||||
|
self.assertGreaterEqual(img.visits, 1)
|
||||||
|
self.assertIsNotNone(img.last_visited)
|
||||||
|
# last_visited should be updated to a recent timestamp
|
||||||
|
self.assertGreaterEqual(img.last_visited, before)
|
||||||
|
|
||||||
|
def test_post_toggles_favorite_flag(self):
|
||||||
|
path_url = "/gallery/alpha.jpg/"
|
||||||
|
# Ensure initial state
|
||||||
|
img, _ = Im.objects.get_or_create(
|
||||||
|
user=self.user, path=str(self.gallery_root / "alpha.jpg")
|
||||||
|
)
|
||||||
|
img.favorite = False
|
||||||
|
img.save()
|
||||||
|
|
||||||
|
response = self.client.post(path_url, follow=True)
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
img.refresh_from_db()
|
||||||
|
self.assertTrue(img.favorite)
|
||||||
|
|||||||
Reference in New Issue
Block a user