Refactor test utilities and enhance ASGI settings

- Cleaned up and standardized assertions in ApiTestMixin for API response validation.
- Updated ASGI settings to use os.environ for setting the DJANGO_SETTINGS_MODULE.
- Removed unused imports and improved formatting in settings.py.
- Refactored URL patterns in urls.py for better readability and organization.
- Enhanced view functions in views.py for consistency and clarity.
- Added .flake8 configuration for linting and style enforcement.
- Introduced type stubs for django-environ to improve type checking with Pylance.
This commit is contained in:
pacnpal
2025-08-20 19:51:59 -04:00
parent 69c07d1381
commit 66ed4347a9
230 changed files with 15094 additions and 11578 deletions

View File

@@ -1,101 +1,106 @@
from django.test import TestCase
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ValidationError
from django.contrib.gis.geos import Point
from django.contrib.gis.measure import D
from .models import Location
from parks.models.companies import Operator
from parks.models import Park
from parks.models import Park, Company as Operator
class LocationModelTests(TestCase):
def setUp(self):
# Create test company
self.operator = Operator.objects.create(
name='Test Operator',
website='http://example.com'
name="Test Operator", website="http://example.com"
)
# Create test park
self.park = Park.objects.create(
name='Test Park',
owner=self.operator,
status='OPERATING'
name="Test Park", owner=self.operator, status="OPERATING"
)
# Create test location for company
self.operator_location = Location.objects.create(
content_type=ContentType.objects.get_for_model(Operator),
object_id=self.operator.pk,
name='Test Operator HQ',
location_type='business',
street_address='123 Operator St',
city='Operator City',
state='CS',
country='Test Country',
postal_code='12345',
point=Point(-118.2437, 34.0522) # Los Angeles coordinates
name="Test Operator HQ",
location_type="business",
street_address="123 Operator St",
city="Operator City",
state="CS",
country="Test Country",
postal_code="12345",
point=Point(-118.2437, 34.0522), # Los Angeles coordinates
)
# Create test location for park
self.park_location = Location.objects.create(
content_type=ContentType.objects.get_for_model(Park),
object_id=self.park.pk,
name='Test Park Location',
location_type='park',
street_address='456 Park Ave',
city='Park City',
state='PC',
country='Test Country',
postal_code='67890',
point=Point(-111.8910, 40.7608) # Park City coordinates
name="Test Park Location",
location_type="park",
street_address="456 Park Ave",
city="Park City",
state="PC",
country="Test Country",
postal_code="67890",
point=Point(-111.8910, 40.7608), # Park City coordinates
)
def test_location_creation(self):
"""Test location instance creation and field values"""
# Test company location
self.assertEqual(self.operator_location.name, 'Test Operator HQ')
self.assertEqual(self.operator_location.location_type, 'business')
self.assertEqual(self.operator_location.street_address, '123 Operator St')
self.assertEqual(self.operator_location.city, 'Operator City')
self.assertEqual(self.operator_location.state, 'CS')
self.assertEqual(self.operator_location.country, 'Test Country')
self.assertEqual(self.operator_location.postal_code, '12345')
self.assertEqual(self.operator_location.name, "Test Operator HQ")
self.assertEqual(self.operator_location.location_type, "business")
self.assertEqual(self.operator_location.street_address, "123 Operator St")
self.assertEqual(self.operator_location.city, "Operator City")
self.assertEqual(self.operator_location.state, "CS")
self.assertEqual(self.operator_location.country, "Test Country")
self.assertEqual(self.operator_location.postal_code, "12345")
self.assertIsNotNone(self.operator_location.point)
# Test park location
self.assertEqual(self.park_location.name, 'Test Park Location')
self.assertEqual(self.park_location.location_type, 'park')
self.assertEqual(self.park_location.street_address, '456 Park Ave')
self.assertEqual(self.park_location.city, 'Park City')
self.assertEqual(self.park_location.state, 'PC')
self.assertEqual(self.park_location.country, 'Test Country')
self.assertEqual(self.park_location.postal_code, '67890')
self.assertEqual(self.park_location.name, "Test Park Location")
self.assertEqual(self.park_location.location_type, "park")
self.assertEqual(self.park_location.street_address, "456 Park Ave")
self.assertEqual(self.park_location.city, "Park City")
self.assertEqual(self.park_location.state, "PC")
self.assertEqual(self.park_location.country, "Test Country")
self.assertEqual(self.park_location.postal_code, "67890")
self.assertIsNotNone(self.park_location.point)
def test_location_str_representation(self):
"""Test string representation of location"""
expected_company_str = 'Test Operator HQ (Operator City, Test Country)'
expected_company_str = "Test Operator HQ (Operator City, Test Country)"
self.assertEqual(str(self.operator_location), expected_company_str)
expected_park_str = 'Test Park Location (Park City, Test Country)'
expected_park_str = "Test Park Location (Park City, Test Country)"
self.assertEqual(str(self.park_location), expected_park_str)
def test_get_formatted_address(self):
"""Test get_formatted_address method"""
expected_address = '123 Operator St, Operator City, CS, 12345, Test Country'
self.assertEqual(self.operator_location.get_formatted_address(), expected_address)
expected_address = "123 Operator St, Operator City, CS, 12345, Test Country"
self.assertEqual(
self.operator_location.get_formatted_address(), expected_address
)
def test_point_coordinates(self):
"""Test point coordinates"""
# Test company location point
self.assertIsNotNone(self.operator_location.point)
self.assertAlmostEqual(self.operator_location.point.y, 34.0522, places=4) # latitude
self.assertAlmostEqual(self.operator_location.point.x, -118.2437, places=4) # longitude
self.assertAlmostEqual(
self.operator_location.point.y, 34.0522, places=4
) # latitude
self.assertAlmostEqual(
self.operator_location.point.x, -118.2437, places=4
) # longitude
# Test park location point
self.assertIsNotNone(self.park_location.point)
self.assertAlmostEqual(self.park_location.point.y, 40.7608, places=4) # latitude
self.assertAlmostEqual(self.park_location.point.x, -111.8910, places=4) # longitude
self.assertAlmostEqual(
self.park_location.point.y, 40.7608, places=4
) # latitude
self.assertAlmostEqual(
self.park_location.point.x, -111.8910, places=4
) # longitude
def test_coordinates_property(self):
"""Test coordinates property"""
@@ -103,7 +108,7 @@ class LocationModelTests(TestCase):
self.assertIsNotNone(company_coords)
self.assertAlmostEqual(company_coords[0], 34.0522, places=4) # latitude
self.assertAlmostEqual(company_coords[1], -118.2437, places=4) # longitude
park_coords = self.park_location.coordinates
self.assertIsNotNone(park_coords)
self.assertAlmostEqual(park_coords[0], 40.7608, places=4) # latitude
@@ -121,14 +126,14 @@ class LocationModelTests(TestCase):
nearby_location = Location.objects.create(
content_type=ContentType.objects.get_for_model(Operator),
object_id=self.operator.pk,
name='Nearby Location',
location_type='business',
street_address='789 Nearby St',
city='Operator City',
country='Test Country',
point=Point(-118.2438, 34.0523) # Very close to company location
name="Nearby Location",
location_type="business",
street_address="789 Nearby St",
city="Operator City",
country="Test Country",
point=Point(-118.2438, 34.0523), # Very close to company location
)
nearby = self.operator_location.nearby_locations(distance_km=1)
self.assertEqual(nearby.count(), 1)
self.assertEqual(nearby.first(), nearby_location)
@@ -138,39 +143,39 @@ class LocationModelTests(TestCase):
# Test company location relation
company_location = Location.objects.get(
content_type=ContentType.objects.get_for_model(Operator),
object_id=self.operator.pk
object_id=self.operator.pk,
)
self.assertEqual(company_location, self.operator_location)
# Test park location relation
park_location = Location.objects.get(
content_type=ContentType.objects.get_for_model(Park),
object_id=self.park.pk
object_id=self.park.pk,
)
self.assertEqual(park_location, self.park_location)
def test_location_updates(self):
"""Test location updates"""
# Update company location
self.operator_location.street_address = 'Updated Address'
self.operator_location.city = 'Updated City'
self.operator_location.street_address = "Updated Address"
self.operator_location.city = "Updated City"
self.operator_location.save()
updated_location = Location.objects.get(pk=self.operator_location.pk)
self.assertEqual(updated_location.street_address, 'Updated Address')
self.assertEqual(updated_location.city, 'Updated City')
self.assertEqual(updated_location.street_address, "Updated Address")
self.assertEqual(updated_location.city, "Updated City")
def test_point_sync_with_lat_lon(self):
"""Test point synchronization with latitude/longitude fields"""
location = Location.objects.create(
content_type=ContentType.objects.get_for_model(Operator),
object_id=self.operator.pk,
name='Test Sync Location',
location_type='business',
name="Test Sync Location",
location_type="business",
latitude=34.0522,
longitude=-118.2437
longitude=-118.2437,
)
self.assertIsNotNone(location.point)
self.assertAlmostEqual(location.point.y, 34.0522, places=4)
self.assertAlmostEqual(location.point.x, -118.2437, places=4)