tests: add view-level tests for special galleries (favorites directory and image view)
This commit is contained in:
@@ -34,6 +34,11 @@ class SpecialGalleriesTests(TestCase):
|
|||||||
Im.objects.create(
|
Im.objects.create(
|
||||||
user=self.user, path=str(c), favorite=True, visits=2, last_visited=now
|
user=self.user, path=str(c), favorite=True, visits=2, last_visited=now
|
||||||
)
|
)
|
||||||
|
# client for view tests
|
||||||
|
from django.test import Client
|
||||||
|
|
||||||
|
self.client = Client()
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.settings_override.disable()
|
self.settings_override.disable()
|
||||||
@@ -51,3 +56,37 @@ class SpecialGalleriesTests(TestCase):
|
|||||||
# most-visited should be ordered descending by visits, expect b.jpg first
|
# most-visited should be ordered descending by visits, expect b.jpg first
|
||||||
self.assertGreaterEqual(len(most), 1)
|
self.assertGreaterEqual(len(most), 1)
|
||||||
self.assertEqual(most[0].name, "b.jpg")
|
self.assertEqual(most[0].name, "b.jpg")
|
||||||
|
|
||||||
|
def test_favorites_directory_view_and_links(self):
|
||||||
|
# Directory listing for favorites should show only favorite images
|
||||||
|
resp = self.client.get("/gallery/favorites/")
|
||||||
|
self.assertEqual(resp.status_code, 200)
|
||||||
|
ctx = resp.context
|
||||||
|
self.assertTrue(ctx.get("is_special"))
|
||||||
|
names = [img["name"] for img in ctx.get("images")]
|
||||||
|
self.assertEqual(sorted(names), ["a.jpg", "c.jpg"])
|
||||||
|
# Back should be hidden (None) and home present
|
||||||
|
self.assertIsNone(ctx.get("back_url"))
|
||||||
|
self.assertIsNotNone(ctx.get("home_url"))
|
||||||
|
self.assertTrue(str(ctx.get("home_url")).startswith("/gallery/"))
|
||||||
|
# Breadcrumb should point to the special root
|
||||||
|
breadcrumbs = ctx.get("breadcrumbs")
|
||||||
|
self.assertEqual(breadcrumbs[0]["label"], "Favorites")
|
||||||
|
self.assertTrue(breadcrumbs[0]["path"].startswith("/gallery/favorites/"))
|
||||||
|
|
||||||
|
def test_favorites_image_view_prev_next_and_breadcrumbs(self):
|
||||||
|
# Image view under special gallery should scope prev/next to favorites only
|
||||||
|
resp = self.client.get("/gallery/favorites/a.jpg/")
|
||||||
|
self.assertEqual(resp.status_code, 200)
|
||||||
|
ctx = resp.context
|
||||||
|
self.assertTrue(ctx.get("is_special"))
|
||||||
|
# Breadcrumbs: first is special root (clickable), last is filename non-clickable
|
||||||
|
crumbs = ctx.get("breadcrumbs")
|
||||||
|
self.assertEqual(crumbs[0]["label"], "Favorites")
|
||||||
|
self.assertIsNotNone(crumbs[0]["path"])
|
||||||
|
self.assertEqual(crumbs[-1]["label"], "a.jpg")
|
||||||
|
self.assertIsNone(crumbs[-1]["path"])
|
||||||
|
# Prev should be None for first in alphabetical order among favorites
|
||||||
|
self.assertIsNone(ctx.get("prev"))
|
||||||
|
# Next should be c.jpg (since favorites are a.jpg and c.jpg sorted)
|
||||||
|
self.assertIn("c.jpg", ctx.get("next"))
|
||||||
|
|||||||
Reference in New Issue
Block a user