fixed timezone handling
This commit is contained in:
parent
5a42addc44
commit
11dedca338
13 changed files with 107 additions and 98 deletions
|
@ -1,3 +1,89 @@
|
|||
from django.test import TestCase
|
||||
import json
|
||||
|
||||
# Create your tests here.
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils import timezone
|
||||
from freezegun import freeze_time
|
||||
from rest_framework import status
|
||||
from rest_framework.test import APITestCase, APIClient
|
||||
|
||||
from movie_manager.models import Movie, Schedule, Showing
|
||||
|
||||
|
||||
class ShowingModelTestCase(APITestCase):
|
||||
def setUp(self):
|
||||
self.client: APIClient = APIClient()
|
||||
self.movie: Movie = Movie.objects.create(title="Test Movie")
|
||||
self.owner: User = User.objects.create(id=1, username="test_user")
|
||||
self.schedule: Schedule = Schedule.objects.create(
|
||||
owner=self.owner, name="Test Schedule"
|
||||
)
|
||||
|
||||
def test_it_creates_a_new_showing(self):
|
||||
self.client.force_authenticate(user=self.owner)
|
||||
|
||||
showing_time = timezone.now().isoformat().replace("+00:00", "Z")
|
||||
response = self.client.post(
|
||||
"/v1/showings/",
|
||||
{
|
||||
"movie": self.movie.id,
|
||||
"public": True,
|
||||
"schedule": self.schedule.id,
|
||||
"showtime": showing_time,
|
||||
},
|
||||
)
|
||||
|
||||
response_data = json.loads(response.content)
|
||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||
self.assertEqual(response_data.get("showtime"), showing_time)
|
||||
self.assertEqual(response_data.get("movie").get("title"), "Test Movie")
|
||||
|
||||
@freeze_time("2025-07-02 23:59:00", tz_offset=-5)
|
||||
def test_it_returns_active_showings(self):
|
||||
self.client.force_authenticate(user=self.schedule.owner)
|
||||
|
||||
showtimes_america_chicago_utc = [
|
||||
"2025-07-03T04:00:59.000Z", # 7/2/25 11:59pm
|
||||
"2025-07-01T04:00:59.000Z", # 6/30/25 11:59pm
|
||||
"2025-07-08T04:00:59.000Z", # 7/7/25 11:59pm
|
||||
]
|
||||
|
||||
for showtime in showtimes_america_chicago_utc:
|
||||
Showing.objects.create(
|
||||
movie=self.movie,
|
||||
schedule=self.schedule,
|
||||
showtime=showtime,
|
||||
public=True,
|
||||
owner=self.schedule.owner,
|
||||
)
|
||||
|
||||
response = self.client.get(f"/v1/schedules/{self.schedule.id}/")
|
||||
parsed_schedule = json.loads(response.content)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(len(parsed_schedule.get("showings")), 2)
|
||||
|
||||
|
||||
class ScheduleModelTestCase(APITestCase):
|
||||
def setUp(self):
|
||||
self.client: APIClient = APIClient()
|
||||
self.test_user: User = User.objects.create(id=1, username="test_user")
|
||||
|
||||
def test_it_creates_a_new_schedule(self):
|
||||
self.client.force_authenticate(user=self.test_user)
|
||||
response = self.client.post(
|
||||
"/v1/schedules/",
|
||||
{
|
||||
"name": "Test Schedule",
|
||||
"owner": self.test_user.id,
|
||||
"public": True,
|
||||
"slug": "test-schedule",
|
||||
},
|
||||
)
|
||||
|
||||
response_data = json.loads(response.content)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||
self.assertEqual(response_data.get("name"), "Test Schedule")
|
||||
self.assertEqual(response_data.get("owner"), 1)
|
||||
self.assertEqual(response_data.get("public"), True)
|
||||
self.assertEqual(response_data.get("slug"), "test-schedule")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue