generated from bisco/codex-bootstrap
feat: build headless theatre laboratory website
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
import tempfile
|
||||
|
||||
from django.core.management import call_command
|
||||
from django.test import TestCase, override_settings
|
||||
|
||||
from home.models import GalleryItem, HomePage, Show
|
||||
|
||||
|
||||
@override_settings(WAGTAILADMIN_BASE_URL="https://cms.example.test")
|
||||
class HomeApiTests(TestCase):
|
||||
def setUp(self):
|
||||
self.media_directory = tempfile.TemporaryDirectory()
|
||||
self.settings_override = override_settings(MEDIA_ROOT=self.media_directory.name)
|
||||
self.settings_override.enable()
|
||||
call_command("seed_demo", verbosity=0)
|
||||
|
||||
def tearDown(self):
|
||||
self.settings_override.disable()
|
||||
self.media_directory.cleanup()
|
||||
|
||||
def test_home_endpoint_returns_aggregated_content(self):
|
||||
response = self.client.get("/api/site/home/", HTTP_HOST="localhost")
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
payload = response.json()
|
||||
self.assertEqual(
|
||||
set(payload),
|
||||
{
|
||||
"settings",
|
||||
"homepage",
|
||||
"feature_cards",
|
||||
"teacher",
|
||||
"lesson_info",
|
||||
"shows",
|
||||
"gallery_items",
|
||||
},
|
||||
)
|
||||
self.assertEqual(payload["homepage"]["hero_title"], "Il teatro diventa presenza.")
|
||||
self.assertEqual(len(payload["feature_cards"]), 3)
|
||||
self.assertTrue(
|
||||
payload["homepage"]["hero_image"]["url"].startswith(
|
||||
"https://cms.example.test/media/"
|
||||
)
|
||||
)
|
||||
self.assertEqual(payload["homepage"]["hero_image"]["alt"], "Prova in sala")
|
||||
|
||||
def test_home_endpoint_only_includes_visible_items(self):
|
||||
Show.objects.update(visible_on_home=False)
|
||||
GalleryItem.objects.update(visible_on_home=False)
|
||||
|
||||
payload = self.client.get("/api/site/home/", HTTP_HOST="localhost").json()
|
||||
|
||||
self.assertEqual(payload["shows"], [])
|
||||
self.assertEqual(payload["gallery_items"], [])
|
||||
|
||||
def test_seed_command_is_idempotent(self):
|
||||
call_command("seed_demo", verbosity=0)
|
||||
|
||||
self.assertEqual(HomePage.objects.count(), 1)
|
||||
self.assertEqual(HomePage.objects.first().feature_cards.count(), 3)
|
||||
self.assertEqual(Show.objects.count(), 2)
|
||||
self.assertEqual(GalleryItem.objects.count(), 4)
|
||||
|
||||
|
||||
class HealthTests(TestCase):
|
||||
def test_health_endpoint_checks_database(self):
|
||||
response = self.client.get("/health/")
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.json(), {"status": "ok"})
|
||||
Reference in New Issue
Block a user