feat: Implement MFA authentication, add ride statistics model, and update various services, APIs, and tests across the application.

This commit is contained in:
pacnpal
2025-12-28 17:32:53 -05:00
parent aa56c46c27
commit c95f99ca10
452 changed files with 7948 additions and 6073 deletions

View File

@@ -12,11 +12,11 @@ These are faster than E2E tests and don't require Playwright.
"""
import json
import pytest
from django.test import TestCase, Client
from django.urls import reverse
from django.contrib.auth import get_user_model
from django.contrib.contenttypes.models import ContentType
from django.test import Client, TestCase
from django.urls import reverse
User = get_user_model()
@@ -730,9 +730,10 @@ class TestFSMTransitionViewStateLog(TestCase):
def test_transition_creates_state_log(self):
"""Test that FSM transition creates a StateLog entry."""
from django_fsm_log.models import StateLog
from apps.moderation.models import EditSubmission
from apps.parks.models import Park
from django_fsm_log.models import StateLog
park = Park.objects.first()
if not park:

View File

@@ -5,19 +5,16 @@ These tests verify the complete state transition workflows for
Parks and Rides using the FSM implementation.
"""
import pytest
from datetime import date, timedelta
from django.test import TestCase
from django.core.exceptions import ValidationError
from apps.parks.models import Park
from apps.rides.models import Ride
import pytest
from django.test import TestCase
from tests.factories import (
ParkAreaFactory,
ParkFactory,
RideFactory,
UserFactory,
ParkAreaFactory,
)

View File

@@ -6,18 +6,15 @@ validation, location creation, and related operations.
"""
import pytest
from django.test import TestCase, TransactionTestCase
from django.db import transaction
from django.test import TestCase
from apps.parks.models import Park, ParkArea, ParkReview
from apps.parks.forms import ParkForm
from tests.factories import (
ParkFactory,
ParkAreaFactory,
OperatorCompanyFactory,
UserFactory,
ParkAreaFactory,
ParkFactory,
RideFactory,
UserFactory,
)
@@ -61,9 +58,9 @@ class TestParkCreationWorkflow(TestCase):
park = ParkFactory()
# Add areas
area1 = ParkAreaFactory(park=park, name="Main Entrance")
area2 = ParkAreaFactory(park=park, name="Thrill Zone")
area3 = ParkAreaFactory(park=park, name="Kids Area")
ParkAreaFactory(park=park, name="Main Entrance")
ParkAreaFactory(park=park, name="Thrill Zone")
ParkAreaFactory(park=park, name="Kids Area")
# Verify structure
assert park.areas.count() == 3
@@ -156,7 +153,7 @@ class TestParkReviewWorkflow(TestCase):
from tests.factories import ParkReviewFactory
review1 = ParkReviewFactory(park=park, user=user1, rating=10, is_published=True)
ParkReviewFactory(park=park, user=user1, rating=10, is_published=True)
review2 = ParkReviewFactory(park=park, user=user2, rating=2, is_published=True)
# Unpublish the low rating

View File

@@ -5,22 +5,21 @@ These tests verify the complete workflow of photo uploads including
validation, processing, and moderation.
"""
import pytest
from unittest.mock import Mock, patch
from django.test import TestCase
import pytest
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import TestCase
from apps.parks.models import ParkPhoto
from apps.rides.models import RidePhoto
from apps.parks.services.media_service import ParkMediaService
from tests.factories import (
ParkFactory,
RideFactory,
ParkPhotoFactory,
RideFactory,
RidePhotoFactory,
UserFactory,
StaffUserFactory,
UserFactory,
)
@@ -215,9 +214,9 @@ class TestRidePhotoWorkflow(TestCase):
"""Test ride photos can have different types."""
ride = RideFactory()
exterior = RidePhotoFactory(ride=ride, photo_type="exterior")
queue = RidePhotoFactory(ride=ride, photo_type="queue")
onride = RidePhotoFactory(ride=ride, photo_type="onride")
RidePhotoFactory(ride=ride, photo_type="exterior")
RidePhotoFactory(ride=ride, photo_type="queue")
RidePhotoFactory(ride=ride, photo_type="onride")
assert ride.photos.filter(photo_type="exterior").count() == 1
assert ride.photos.filter(photo_type="queue").count() == 1