diff --git a/aircox/tests/conftest.py b/aircox/tests/conftest.py index 4c1a736..fe30303 100644 --- a/aircox/tests/conftest.py +++ b/aircox/tests/conftest.py @@ -107,37 +107,37 @@ def podcasts(episodes): @pytest.fixture -def diffusions_time_variation(episodes): +def diff_time_var(episodes): random_episode = random.choice([episodes[0], episodes[1], episodes[2]]) now_date = datetime.date.today() now_datetime = tz.now() tomorrow_datetime = now_datetime + timedelta(hours=25) yesterday_datetime = now_datetime - timedelta(hours=25) - now_diffusion = baker.make( + now_diff = baker.make( models.Diffusion, episode=random_episode, start=now_datetime - timedelta(minutes=30), end=now_datetime + timedelta(minutes=30), ) - after_diffusion = baker.make( + after_diff = baker.make( models.Diffusion, episode=random_episode, start=now_datetime + timedelta(minutes=30), end=now_datetime + timedelta(minutes=60), ) - tomorrow_diffusion = baker.make( + tomorrow_diff = baker.make( models.Diffusion, episode=random_episode, start=tomorrow_datetime, end=tomorrow_datetime + timedelta(minutes=30), ) - before_diffusion = baker.make( + before_diff = baker.make( models.Diffusion, episode=random_episode, start=now_datetime - timedelta(minutes=60), end=now_datetime - timedelta(minutes=30), ) - yesterday_diffusion = baker.make( + yesterday_diff = baker.make( models.Diffusion, episode=random_episode, start=yesterday_datetime, @@ -146,50 +146,50 @@ def diffusions_time_variation(episodes): return ( now_date, now_datetime, - yesterday_diffusion, - before_diffusion, - now_diffusion, - after_diffusion, - tomorrow_diffusion, + yesterday_diff, + before_diff, + now_diff, + after_diff, + tomorrow_diff, ) @pytest.fixture -def diffusions_episode_variation(episodes): +def diff_episode_var(episodes): key_episode = episodes[1] another_episode = episodes[2] - diffusions_with_the_key_episode = baker.make( + diff_with_key_episode = baker.make( models.Diffusion, _quantity=3, episode=key_episode ) - diffusions_without_the_key_episode = baker.make( + diff_without_key_ep = baker.make( models.Diffusion, _quantity=3, episode=another_episode ) return ( key_episode, another_episode, - diffusions_with_the_key_episode, - diffusions_without_the_key_episode, + diff_with_key_episode, + diff_without_key_ep, ) @pytest.fixture -def diffusions_with_rerun(episodes, programs): - initial_diffusion = baker.make( +def diff_with_rerun(episodes, programs): + initial_diff = baker.make( models.Diffusion, program=programs[0], episode=episodes[0], start=datetime.datetime(2023, 5, 12, 13, 0, tzinfo=pytz.UTC), end=datetime.datetime(2023, 5, 12, 13, 30, tzinfo=pytz.UTC), ) - rerun_diffusion = baker.make( + rerun_diff = baker.make( models.Diffusion, program=programs[0], episode=episodes[0], - initial=initial_diffusion, + initial=initial_diff, ) - return initial_diffusion, rerun_diffusion + return initial_diff, rerun_diff @pytest.fixture -def diffusion(diffusions_with_rerun): - return diffusions_with_rerun[0] +def diff(diff_with_rerun): + return diff_with_rerun[0] diff --git a/aircox/tests/models/test_diffusion.py b/aircox/tests/models/test_diffusion.py index 00d1a67..d08a60d 100644 --- a/aircox/tests/models/test_diffusion.py +++ b/aircox/tests/models/test_diffusion.py @@ -10,387 +10,258 @@ from aircox.models import Diffusion class TestDiffusionQuerySet: @pytest.mark.django_db - def test_episode_by_obj(self, diffusions_episode_variation): - ( - key_episode, - _, - diffusions_with_the_key_episode, - diffusions_without_the_key_episode, - ) = diffusions_episode_variation + def test_episode_by_obj(self, diff_episode_var): + key_episode = diff_episode_var[0] + diff_with_key_episode = diff_episode_var[2] + diff_without_key_episode = diff_episode_var[3] result = Diffusion.objects.episode(episode=key_episode) - for diffusion in diffusions_with_the_key_episode: - assert diffusion in result - for diffusion in diffusions_without_the_key_episode: - assert diffusion not in result + assert all(diff in result for diff in diff_with_key_episode) + assert all(diff not in result for diff in diff_without_key_episode) @pytest.mark.django_db - def test_episode_by_id(self, diffusions_episode_variation): - ( - key_episode, - _, - diffusions_with_the_key_episode, - diffusions_without_the_key_episode, - ) = diffusions_episode_variation + def test_episode_by_id(self, diff_episode_var): + key_episode = diff_episode_var[0] + diff_with_key_episode = diff_episode_var[2] + diff_without_key_episode = diff_episode_var[3] result = Diffusion.objects.episode(id=key_episode.id) - for diffusion in diffusions_with_the_key_episode: - assert diffusion in result - for diffusion in diffusions_without_the_key_episode: - assert diffusion not in result + assert all(diff in result for diff in diff_with_key_episode) + assert all(diff not in result for diff in diff_without_key_episode) @pytest.mark.django_db def test_on_air(self, episodes): for episode in episodes: - random_type = random.choice( - [Diffusion.TYPE_ON_AIR, Diffusion.TYPE_UNCONFIRMED] + baker.make( + Diffusion, + episode=episode, + type=random.choice( + [Diffusion.TYPE_ON_AIR, Diffusion.TYPE_UNCONFIRMED] + ), ) - baker.make(Diffusion, episode=episode, type=random_type) - result = Diffusion.objects.on_air() + assert all( + diff.type == Diffusion.TYPE_ON_AIR + for diff in Diffusion.objects.on_air() + ) - for diffusion in result: - assert diffusion.type == Diffusion.TYPE_ON_AIR - assert diffusion.type != Diffusion.TYPE_UNCONFIRMED - -# TODO test si il y a doublon qu'un seul objet soit récupéré. + # TODO test si il y a doublon qu'un seul objet soit récupéré. @pytest.mark.django_db - def test_now_test(self, diffusions_time_variation): - now = tz.now() - ( - _, - _, - _, - _, - now_diffusion, - _, - _, - ) = diffusions_time_variation - result = Diffusion.objects.now(now=now, order=True) - - assert len(result) == 1 - assert result[0] == now_diffusion - assert result[0].start <= now <= result[0].end + def test_now_test(self, diff_time_var): + now_diff, result = diff_time_var[4], Diffusion.objects.now(now=tz.now(), order=True) + assert len(result) == 1 and result[0] == now_diff and now_diff.start <= tz.now() <= now_diff.end @pytest.mark.django_db - def test_date_without_date_arg(self, diffusions_time_variation): - ( - _, - _, - _, - before_diffusion, - now_diffusion, - after_diffusion, - _, - ) = diffusions_time_variation + def test_date_without_date_arg(self, diff_time_var): + before_diff, now_diff, after_diff = diff_time_var[3:6] result = Diffusion.objects.date() - assert len(result) == 3 - assert result[0] == before_diffusion - assert result[1] == now_diffusion - assert result[2] == after_diffusion + assert before_diff, now_diff and after_diff in result @pytest.mark.django_db - def test_date_with_date_arg(self, diffusions_time_variation): - today_date = datetime.date.today() - tomorrow_date = today_date + timedelta(days=1) - ( - _, - _, - _, - _, - _, - _, - tomorrow_diffusion, - ) = diffusions_time_variation - result = Diffusion.objects.date(date=tomorrow_date) - - assert len(result) == 1 - assert result[0] == tomorrow_diffusion + def test_date_with_date_arg(self, diff_time_var): + tomorrow_date = datetime.date.today() + timedelta(days=1) + tomorrow_diff = diff_time_var[6] + assert Diffusion.objects.date(date=tomorrow_date).count() == 1 + assert Diffusion.objects.date(date=tomorrow_date)[0] == tomorrow_diff @pytest.mark.django_db - def test_at_datetimeobj(self, diffusions_time_variation): - ( - _, - now_datetime, - _, - _, - now_diffusion, - _, - _, - ) = diffusions_time_variation - result = Diffusion.objects.at(date=now_datetime) - - assert len(result) == 1 - assert now_diffusion in result + def test_at_datetimeobj(self, diff_time_var): + now_datetime, now_diff = diff_time_var[1], diff_time_var[4] + assert Diffusion.objects.at(date=now_datetime).count() == 1 + assert Diffusion.objects.at(date=now_datetime)[0] == now_diff @pytest.mark.django_db - def test_at_dateobj(self, diffusions_time_variation): - ( - now_date, - _, - _, - before_diffusion, - now_diffusion, - after_diffusion, - _, - ) = diffusions_time_variation + def test_at_dateobj(self, diff_time_var): + now_date=diff_time_var[0] + before_diff=diff_time_var[3] + now_diff=diff_time_var[4] + after_diff=diff_time_var[5] result = Diffusion.objects.at(date=now_date) - assert len(result) == 3 - assert result[0] == before_diffusion - assert result[1] == now_diffusion - assert result[2] == after_diffusion + assert before_diff, now_diff and after_diff in result @pytest.mark.django_db - def test_after_without_arg(self, diffusions_time_variation): - ( - _, - _, - yesterday_diffusion, - before_diffusion, - now_diffusion, - after_diffusion, - tomorrow_diffusion, - ) = diffusions_time_variation - from_now_diffusions = Diffusion.objects.after() - - assert tomorrow_diffusion in from_now_diffusions - assert after_diffusion in from_now_diffusions - assert now_diffusion in from_now_diffusions - assert before_diffusion not in from_now_diffusions - assert yesterday_diffusion not in from_now_diffusions + def test_after_without_arg(self, diff_time_var): + yesterday_diff=diff_time_var[2] + before_diff=diff_time_var[3] + now_diff=diff_time_var[4] + after_diff=diff_time_var[5] + tomorrow_diff=diff_time_var[6] + from_now_diff = Diffusion.objects.after() + assert set([tomorrow_diff, after_diff, now_diff]).issubset(set(from_now_diff)) + assert before_diff not in from_now_diff and yesterday_diff not in from_now_diff @pytest.mark.django_db - def test_after_with_datetime_arg(self, diffusions_time_variation): - ( - _, - now_datetime, - yesterday_diffusion, - before_diffusion, - now_diffusion, - after_diffusion, - tomorrow_diffusion, - ) = diffusions_time_variation - from_now_diffusions = Diffusion.objects.after(date=now_datetime) - - assert tomorrow_diffusion in from_now_diffusions - assert after_diffusion in from_now_diffusions - assert now_diffusion in from_now_diffusions - assert before_diffusion not in from_now_diffusions - assert yesterday_diffusion not in from_now_diffusions + def test_after_with_datetime_arg(self, diff_time_var): + now_datetime=diff_time_var[1] + yesterday_diff=diff_time_var[2] + before_diff=diff_time_var[3] + now_diff=diff_time_var[4] + after_diff=diff_time_var[5] + tomorrow_diff=diff_time_var[6] + from_now_diff = Diffusion.objects.after(date=now_datetime) + assert set([tomorrow_diff, after_diff, now_diff]).issubset(set(from_now_diff)) + assert before_diff not in from_now_diff and yesterday_diff not in from_now_diff @pytest.mark.django_db - def test_after_with_date_arg(self, diffusions_time_variation): - ( - now_date, - _, - yesterday_diffusion, - before_diffusion, - now_diffusion, - after_diffusion, - tomorrow_diffusion, - ) = diffusions_time_variation - from_today_diffusions = Diffusion.objects.after(date=now_date) - - assert tomorrow_diffusion in from_today_diffusions - assert after_diffusion in from_today_diffusions - assert now_diffusion in from_today_diffusions - assert before_diffusion in from_today_diffusions - assert yesterday_diffusion not in from_today_diffusions + def test_after_with_date_arg(self, diff_time_var): + now_date=diff_time_var[0] + yesterday_diff=diff_time_var[2] + before_diff=diff_time_var[3] + now_diff=diff_time_var[4] + after_diff=diff_time_var[5] + tomorrow_diff=diff_time_var[6] + from_today_diff = Diffusion.objects.after(date=now_date) + assert set([tomorrow_diff, after_diff, now_diff, before_diff]).issubset(set(from_today_diff)) + assert yesterday_diff not in from_today_diff @pytest.mark.django_db - def test_before_without_arg(self, diffusions_time_variation): - ( - _, - _, - yesterday_diffusion, - before_diffusion, - now_diffusion, - after_diffusion, - tomorrow_diffusion, - ) = diffusions_time_variation - before_now_diffusions = Diffusion.objects.before() - - assert tomorrow_diffusion not in before_now_diffusions - assert after_diffusion not in before_now_diffusions - assert now_diffusion in before_now_diffusions - assert before_diffusion in before_now_diffusions - assert yesterday_diffusion in before_now_diffusions + def test_before_without_arg(self, diff_time_var): + yesterday_diff=diff_time_var[2] + before_diff=diff_time_var[3] + now_diff=diff_time_var[4] + after_diff=diff_time_var[5] + tomorrow_diff=diff_time_var[6] + before_now_diff = Diffusion.objects.before() + assert tomorrow_diff not in before_now_diff and after_diff not in before_now_diff + assert set([now_diff, before_diff, yesterday_diff]).issubset(set(before_now_diff)) + @pytest.mark.django_db - def test_before_with_datetime_arg(self, diffusions_time_variation): - ( - _, - now_datetime, - yesterday_diffusion, - before_diffusion, - now_diffusion, - after_diffusion, - tomorrow_diffusion, - ) = diffusions_time_variation - before_now_diffusions = Diffusion.objects.before(date=now_datetime) - - assert tomorrow_diffusion not in before_now_diffusions - assert after_diffusion not in before_now_diffusions - assert now_diffusion in before_now_diffusions - assert before_diffusion in before_now_diffusions - assert yesterday_diffusion in before_now_diffusions + def test_before_with_datetime_arg(self, diff_time_var): + now_datetime=diff_time_var[1] + yesterday_diff=diff_time_var[2] + before_diff=diff_time_var[3] + now_diff=diff_time_var[4] + after_diff=diff_time_var[5] + tomorrow_diff=diff_time_var[6] + before_now_diff = Diffusion.objects.before(date=now_datetime) + assert tomorrow_diff not in before_now_diff and after_diff not in before_now_diff + assert set([now_diff, before_diff, yesterday_diff]).issubset(set(before_now_diff)) @pytest.mark.django_db - def test_before_with_date_arg(self, diffusions_time_variation): - ( - now_date, - _, - yesterday_diffusion, - before_diffusion, - now_diffusion, - after_diffusion, - tomorrow_diffusion, - ) = diffusions_time_variation - before_today_diffusions = Diffusion.objects.before(date=now_date) - - assert tomorrow_diffusion not in before_today_diffusions - assert after_diffusion not in before_today_diffusions - assert now_diffusion not in before_today_diffusions - assert before_diffusion not in before_today_diffusions - assert yesterday_diffusion in before_today_diffusions + def test_before_with_date_arg(self, diff_time_var): + now_date=diff_time_var[0] + yesterday_diff=diff_time_var[2] + before_diff=diff_time_var[3] + now_diff=diff_time_var[4] + after_diff=diff_time_var[5] + tomorrow_diff=diff_time_var[6] + before_today_diff = Diffusion.objects.before(date=now_date) + assert all(diff not in before_today_diff for diff in [tomorrow_diff, after_diff, now_diff]) + assert yesterday_diff in before_today_diff @pytest.mark.django_db - def test_range(self, episodes, diffusions_time_variation): - ( - _, - _, - yesterday_diffusion, - before_diffusion, - now_diffusion, - after_diffusion, - tomorrow_diffusion, - ) = diffusions_time_variation - start = before_diffusion.start - end = after_diffusion.end - overlaping_start_diffusion = baker.make( - Diffusion, - episode=episodes[0], - start=start - timedelta(minutes=30), - end=end, - ) - overlaping_end_diffusion = baker.make( - Diffusion, - episode=episodes[0], - start=start, - end=end + timedelta(minutes=30), - ) - range_diffusion = Diffusion.objects.range(start=start, end=end) - - assert before_diffusion in range_diffusion - assert after_diffusion in range_diffusion - assert now_diffusion in range_diffusion - assert overlaping_start_diffusion not in range_diffusion - assert overlaping_end_diffusion not in range_diffusion - assert tomorrow_diffusion not in range_diffusion - assert yesterday_diffusion not in range_diffusion + def test_range(self, episodes, diff_time_var): + start, end = diff_time_var[3].start, diff_time_var[5].end + yesterday_diff, before_diff, now_diff, after_diff, tomorrow_diff = diff_time_var[2:7] + overlaping_start_diff = baker.make(Diffusion, episode=episodes[0], start=start - timedelta(minutes=30), end=end) + overlaping_end_diff = baker.make(Diffusion, episode=episodes[0], start=start, end=end + timedelta(minutes=30)) + range_diff = Diffusion.objects.range(start=start, end=end) + assert set([before_diff, after_diff, now_diff]).issubset(range_diff) + assert not set([overlaping_start_diff, overlaping_end_diff, tomorrow_diff, yesterday_diff]).intersection(range_diff) +#TODO CLEAN ce qu'il y a en dessous et terminer les tests de diffusion.py class TestDiffusion: @pytest.mark.django_db - def test__str__initial_diffusion(self, diffusions_with_rerun): + def test__str__initial_diff(self, diff_with_rerun): ( - initial_diffusion, + initial_diff, _, - ) = diffusions_with_rerun - initial_diffusion.episode.title = "Episode title" - initial_diffusion.start = datetime.datetime( + ) = diff_with_rerun + initial_diff.episode.title = "Episode title" + initial_diff.start = datetime.datetime( 2023, 5, 12, 13, 0, tzinfo=pytz.UTC ) assert ( - initial_diffusion.__str__() - == "Episode title - 2023/05/12 13:00+0000" + initial_diff.__str__() == "Episode title - 2023/05/12 13:00+0000" ) @pytest.mark.django_db - def test__str__rerun_diffusion(self, diffusions_with_rerun): + def test__str__rerun_diff(self, diff_with_rerun): ( - initial_diffusion, - rerun_diffusion, - ) = diffusions_with_rerun - initial_diffusion.episode.title = "Episode title" - rerun_diffusion.start = datetime.datetime( + initial_diff, + rerun_diff, + ) = diff_with_rerun + initial_diff.episode.title = "Episode title" + rerun_diff.start = datetime.datetime( 2023, 5, 12, 13, 0, tzinfo=pytz.UTC ) assert ( - rerun_diffusion.__str__() + rerun_diff.__str__() == "Episode title - 2023/05/12 13:00+0000 (rerun)" ) # dans la méthode self._initial[valeur] est un dictionnaire qui stocke les valeurs initiales des champs de l'objet au moment de sa création # save - # si diffusion est initial et si son épisode a été modifié depuis la création initiale - # la méthode save update l'épisode et le programme sur paramètre initial (rerun_set) de la rediffusion (qui représente l'objet diffusion initial). - """ je ne comprends pas rerun_set.update, que la méthode l'update ou pas, on accède quand même à l'épisode mis à jour sur la diffusion initiale""" + # si diff est initial et si son épisode a été modifié depuis la création initiale + # la méthode save update l'épisode et le programme sur paramètre initial (rerun_set) de la rediff (qui représente l'objet diff initial). + """ je ne comprends pas rerun_set.update, que la méthode l'update ou pas, on accède quand même à l'épisode mis à jour sur la diff initiale""" @pytest.mark.django_db - def test_save_rerun_diffusion(self, episodes, diffusions_with_rerun): + def test_save_rerun_diff(self, episodes, diff_with_rerun): ( - initial_diffusion, - rerun_diffusion, - ) = diffusions_with_rerun - initial_diffusion.episode = episodes[1] - initial_diffusion.program = episodes[1].program - initial_diffusion.save() - assert rerun_diffusion.initial.episode == episodes[1] - assert rerun_diffusion.initial.program == episodes[1].program + initial_diff, + rerun_diff, + ) = diff_with_rerun + initial_diff.episode = episodes[1] + initial_diff.program = episodes[1].program + initial_diff.save() + assert rerun_diff.initial.episode == episodes[1] + assert rerun_diff.initial.program == episodes[1].program @pytest.mark.django_db - def test_save_rerun(self, diffusions_with_rerun): + def test_save_rerun(self, diff_with_rerun): ( - initial_diffusion, - rerun_diffusion, - ) = diffusions_with_rerun - rerun_diffusion.save_rerun() - assert rerun_diffusion.episode == initial_diffusion.episode + initial_diff, + rerun_diff, + ) = diff_with_rerun + rerun_diff.save_rerun() + assert rerun_diff.episode == initial_diff.episode @pytest.mark.django_db - def test_save_initial(self, diffusions_with_rerun): + def test_save_initial(self, diff_with_rerun): ( - initial_diffusion, - rerun_diffusion, - ) = diffusions_with_rerun - initial_diffusion.save_initial() - assert initial_diffusion.program == initial_diffusion.episode.program + initial_diff, + rerun_diff, + ) = diff_with_rerun + initial_diff.save_initial() + assert initial_diff.program == initial_diff.episode.program @pytest.mark.django_db - def test_duration(self, diffusion): - assert diffusion.duration == datetime.timedelta(seconds=1800) + def test_duration(self, diff): + assert diff.duration == datetime.timedelta(seconds=1800) @pytest.mark.django_db - def test_date(self, diffusion): - assert diffusion.date == datetime.date(2023, 5, 12) + def test_date(self, diff): + assert diff.date == datetime.date(2023, 5, 12) @pytest.mark.django_db - def test_local_start(self, diffusion): - assert diffusion.local_start == datetime.datetime( + def test_local_start(self, diff): + assert diff.local_start == datetime.datetime( 2023, 5, 12, 13, 00, tzinfo=pytz.UTC ) @pytest.mark.django_db - def test_local_end(self, diffusion): - assert diffusion.local_end == datetime.datetime( + def test_local_end(self, diff): + assert diff.local_end == datetime.datetime( 2023, 5, 12, 13, 30, tzinfo=pytz.UTC ) @pytest.mark.django_db - def test_is_now(self, diffusion): - diffusion.type = Diffusion.TYPE_ON_AIR - diffusion.start = tz.now() - diffusion.end = tz.now() + timedelta(minutes=30) - assert diffusion.is_now == True + def test_is_now(self, diff): + diff.type = Diffusion.TYPE_ON_AIR + diff.start = tz.now() + diff.end = tz.now() + timedelta(minutes=30) + assert diff.is_now == True @pytest.mark.django_db - def test_is_live(self, diffusion): - diffusion.type = Diffusion.TYPE_ON_AIR - diffusion.episode.sound_set == None - assert diffusion.is_live == True + def test_is_live(self, diff): + diff.type = Diffusion.TYPE_ON_AIR + diff.episode.sound_set == None + assert diff.is_live == True - # on ne peut pas changer l'heure de diffusion ? + # on ne peut pas changer l'heure de diff ? # souci avec save # un autre souci ailleurs : est overlaping devrait être testé partout aussi ?