From 86b6a929be8b067aff5db39395fe34f347099ba1 Mon Sep 17 00:00:00 2001 From: Thomas Kairos Date: Tue, 18 Apr 2023 18:27:33 +0200 Subject: [PATCH] #97: Schedule default timezone error + episode model tests (#98) #97 Co-authored-by: bkfox Reviewed-on: https://git.radiocampus.be/rc/aircox/pulls/98 --- aircox/models/episode.py | 2 +- aircox/models/schedule.py | 2 +- aircox/tests/conftest.py | 40 ++++++++++++++++++++++++++++++++++----- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/aircox/models/episode.py b/aircox/models/episode.py index bf15fe9..9d94439 100644 --- a/aircox/models/episode.py +++ b/aircox/models/episode.py @@ -66,7 +66,7 @@ class Episode(Page): ) @classmethod - def get_init_kwargs_from(cls, page, date, title=None, **kwargs): + def get_init_kwargs_from(cls, page, date=None, title=None, **kwargs): """Get default Episode's title.""" title = ( settings.EPISODE_TITLE.format( diff --git a/aircox/models/schedule.py b/aircox/models/schedule.py index e867682..acae2f5 100644 --- a/aircox/models/schedule.py +++ b/aircox/models/schedule.py @@ -49,7 +49,7 @@ class Schedule(Rerun): ) timezone = models.CharField( _("timezone"), - default=lambda: tz.get_current_timezone().zone, + default=lambda: tz.get_current_timezone().key, max_length=100, choices=[(x, x) for x in pytz.all_timezones], help_text=_("timezone used for the date"), diff --git a/aircox/tests/conftest.py b/aircox/tests/conftest.py index 2a29393..bb93cca 100644 --- a/aircox/tests/conftest.py +++ b/aircox/tests/conftest.py @@ -9,7 +9,7 @@ from aircox import models @pytest.fixture def stations(): - return baker.make("aircox.station", _quantity=2) + return baker.make(models.Station, _quantity=2) @pytest.fixture @@ -17,7 +17,9 @@ def programs(stations): items = list( itertools.chain( *( - baker.make("aircox.program", station=station, _quantity=3) + baker.make( + models.Program, station=station, cover=None, _quantity=2 + ) for station in stations ) ) @@ -27,12 +29,17 @@ def programs(stations): return items +@pytest.fixture +def program(programs): + return programs[0] + + @pytest.fixture def sched_initials(programs): # use concrete class; timezone is provided in order to ensure DST items = [ baker.prepare( - "aircox.schedule", + models.Schedule, program=program, time=time(16, 00), timezone="Europe/Brussels", @@ -48,7 +55,7 @@ def sched_reruns(sched_initials): # use concrete class items = [ baker.prepare( - "aircox.schedule", + models.Schedule, initial=initial, program=initial.program, date=initial.date, @@ -68,5 +75,28 @@ def schedules(sched_initials, sched_reruns): @pytest.fixture def episodes(programs): return [ - baker.make("aircox.episode", parent=program) for program in programs + baker.make(models.Episode, parent=program, cover=None) + for program in programs ] + + +@pytest.fixture +def episode(episodes): + return episodes[0] + + +@pytest.fixture +def podcasts(episodes): + items = [] + for episode in episodes: + sounds = baker.prepare( + models.Sound, + episode=episode, + program=episode.program, + is_public=True, + _quantity=2, + ) + for i, sound in enumerate(sounds): + sound.file = f"test_sound_{episode.pk}_{i}.mp3" + items += sounds + return items