Files

60 lines
2.0 KiB
Python

from django.test import TestCase
from django.urls import reverse
from showcase.models import PortfolioEntry, Region
class MapRegionsViewTests(TestCase):
def setUp(self):
self.us = Region.objects.get(code="USA")
self.california = Region.objects.get(code="US-CA")
self.canada = Region.objects.get(code="CAN")
def regions_by_code(self):
response = self.client.get(reverse("map-regions"))
self.assertEqual(response.status_code, 200)
return {region["code"]: region for region in response.json()["regions"]}
def test_homepage_contains_map_mount(self):
response = self.client.get(reverse("home"))
self.assertContains(response, 'id="portfolio-map-root"')
self.assertContains(response, "showcase/dist/map.js")
def test_api_returns_seeded_regions_with_empty_entries(self):
regions = self.regions_by_code()
self.assertIn("USA", regions)
self.assertIn("CAN", regions)
self.assertIn("US-CA", regions)
self.assertEqual(regions["US-CA"]["parentCode"], "USA")
self.assertEqual(regions["USA"]["entries"], [])
def test_country_aggregates_subdivision_entries_and_deduplicates(self):
entry = PortfolioEntry.objects.create(
entry_type=PortfolioEntry.EntryType.WORK,
title="West Coast delivery",
summary="Delivered a regional engagement.",
is_published=True,
)
entry.regions.add(self.us, self.california)
regions = self.regions_by_code()
self.assertEqual(len(regions["USA"]["entries"]), 1)
self.assertEqual(regions["US-CA"]["entries"][0]["title"], entry.title)
def test_api_excludes_unpublished_entries(self):
entry = PortfolioEntry.objects.create(
entry_type=PortfolioEntry.EntryType.CV,
title="Draft entry",
summary="Not visible yet.",
is_published=False,
)
entry.regions.add(self.canada)
regions = self.regions_by_code()
self.assertEqual(regions["CAN"]["entries"], [])