From 16d43256807f1b4e0fecb261759f04104ad2fe66 Mon Sep 17 00:00:00 2001 From: lauvwbk Date: Thu, 11 May 2023 15:36:56 +0200 Subject: [PATCH] #103 test module diffusion --- aircox/tests/models/test_diffusion.py | 177 ++++++++++++++++++-------- 1 file changed, 127 insertions(+), 50 deletions(-) diff --git a/aircox/tests/models/test_diffusion.py b/aircox/tests/models/test_diffusion.py index d6a6608..b537607 100644 --- a/aircox/tests/models/test_diffusion.py +++ b/aircox/tests/models/test_diffusion.py @@ -7,7 +7,8 @@ from datetime import timedelta import pytz from aircox.models import Diffusion -#TODO déplacer fixutre dans conftest.py / rechercher si il y a une méthode plus lisible que celle utilisée dans ce test pour utiliser ces deux fixtures. + +# TODO déplacer fixutre dans conftest.py / rechercher si il y a une méthode plus lisible que celle utilisée dans ce test pour utiliser ces deux fixtures. @pytest.fixture def diffusions_time_variation(episodes): random_episode = random.choice([episodes[1], episodes[0], episodes[2]]) @@ -46,7 +47,16 @@ def diffusions_time_variation(episodes): start=yesterday_datetime, end=yesterday_datetime + timedelta(minutes=30), ) - return now_date, now_datetime, yesterday_diffusion, before_diffusion, now_diffusion, after_diffusion, tomorrow_diffusion + return ( + now_date, + now_datetime, + yesterday_diffusion, + before_diffusion, + now_diffusion, + after_diffusion, + tomorrow_diffusion, + ) + @pytest.fixture def diffusions_episode_variation(episodes): @@ -58,15 +68,23 @@ def diffusions_episode_variation(episodes): diffusions_without_the_key_episode = baker.make( Diffusion, _quantity=3, episode=another_episode ) - return key_episode, another_episode, diffusions_with_the_key_episode, diffusions_without_the_key_episode + return ( + key_episode, + another_episode, + diffusions_with_the_key_episode, + diffusions_without_the_key_episode, + ) + class TestDiffusionQuerySet: @pytest.mark.django_db def test_episode_by_obj(self, diffusions_episode_variation): - key_episode = diffusions_episode_variation[0] - another_episode = diffusions_episode_variation[1] - diffusions_with_the_key_episode = diffusions_episode_variation[2] - diffusions_without_the_key_episode = diffusions_episode_variation[3] + ( + key_episode, + _, + diffusions_with_the_key_episode, + diffusions_without_the_key_episode, + ) = diffusions_episode_variation result = Diffusion.objects.episode(episode=key_episode) for diffusion in diffusions_with_the_key_episode: @@ -76,10 +94,12 @@ class TestDiffusionQuerySet: @pytest.mark.django_db def test_episode_by_id(self, diffusions_episode_variation): - key_episode = diffusions_episode_variation[0] - another_episode = diffusions_episode_variation[1] - diffusions_with_the_key_episode = diffusions_episode_variation[2] - diffusions_without_the_key_episode = diffusions_episode_variation[3] + ( + key_episode, + _, + diffusions_with_the_key_episode, + diffusions_without_the_key_episode, + ) = diffusions_episode_variation result = Diffusion.objects.episode(id=key_episode.id) for diffusion in diffusions_with_the_key_episode: @@ -99,18 +119,24 @@ class TestDiffusionQuerySet: for diffusion in result: assert diffusion.type == Diffusion.TYPE_ON_AIR assert diffusion.type != Diffusion.TYPE_UNCONFIRMED - + # la méthode "now" filtre les diffusions en cours d'un moment précis. # elle prend en compte un objet datetime (date + heure) # les diffusions en cours sont définie en fonction de l'argument "now" ou de l'heure actuelle si now=None. # la méthode distinct élimine les doublons de diffusions (si ils ont des valeurs identiques pour tous les champs de la db) - #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, episodes, diffusions_time_variation): + def test_now_test(self, diffusions_time_variation): now = tz.now() - now_diffusion = diffusions_time_variation[4] - after_diffusion = diffusions_time_variation[5] - before_diffusion = diffusions_time_variation[3] + ( + _, + _, + _, + _, + now_diffusion, + _, + _, + ) = diffusions_time_variation result = Diffusion.objects.now(now=now, order=True) assert len(result) == 1 @@ -120,13 +146,19 @@ class TestDiffusionQuerySet: # méthode date filtre les diffusions en cours d'une date précise. # elle ne prend pas en compte un objet datetime mais un "objet date" uniquement # elle crée deux objets datetime (start and end) à partir de l'argument "date" (if none = today) - #elle utilise la méthode "combine" de la classe "datetime" pour créer ces deux objets à partir de la date - #elle filtre ensuite les diffusions qui ont lieu entre "start" et "end". + # elle utilise la méthode "combine" de la classe "datetime" pour créer ces deux objets à partir de la date + # elle filtre ensuite les diffusions qui ont lieu entre "start" et "end". @pytest.mark.django_db def test_date_without_date_arg(self, diffusions_time_variation): - now_diffusion = diffusions_time_variation[4] - after_diffusion = diffusions_time_variation[5] - before_diffusion = diffusions_time_variation[3] + ( + _, + _, + _, + before_diffusion, + now_diffusion, + after_diffusion, + _, + ) = diffusions_time_variation result = Diffusion.objects.date() assert len(result) == 3 @@ -138,34 +170,51 @@ class TestDiffusionQuerySet: def test_date_with_date_arg(self, diffusions_time_variation): today_date = datetime.date.today() tomorrow_date = today_date + timedelta(days=1) - today_diffusion = diffusions_time_variation[4] - tomorrow_diffusion = diffusions_time_variation[6] + ( + _, + _, + _, + _, + _, + _, + tomorrow_diffusion, + ) = diffusions_time_variation result = Diffusion.objects.date(date=tomorrow_date) assert len(result) == 1 assert result[0] == tomorrow_diffusion - #la méthode at récupère les diffusions à une date donnée. - #elle utilise la méthode now si la date est un objet datetime - #elle utilise la méthode date si la date est un objet date + # la méthode at récupère les diffusions à une date donnée. + # elle utilise la méthode now si la date est un objet datetime + # elle utilise la méthode date si la date est un objet date @pytest.mark.django_db def test_at_datetimeobj(self, diffusions_time_variation): - today_datetime = diffusions_time_variation[1] - now_diffusion = diffusions_time_variation[4] - after_diffusion = diffusions_time_variation[5] - before_diffusion = diffusions_time_variation[3] - result = Diffusion.objects.at(date=today_datetime) + ( + _, + now_datetime, + _, + _, + now_diffusion, + _, + _, + ) = diffusions_time_variation + result = Diffusion.objects.at(date=now_datetime) + assert len(result) == 1 assert now_diffusion in result @pytest.mark.django_db - def test_at_dateobj(self, episodes, diffusions_time_variation): - today_date = diffusions_time_variation[0] - after_diffusion = diffusions_time_variation[5] - now_diffusion = diffusions_time_variation[4] - before_diffusion = diffusions_time_variation[3] - another_day_diffusion = diffusions_time_variation[6] - result = Diffusion.objects.at(date=today_date) + def test_at_dateobj(self, diffusions_time_variation): + ( + now_date, + _, + _, + before_diffusion, + now_diffusion, + after_diffusion, + _, + ) = diffusions_time_variation + result = Diffusion.objects.at(date=now_date) assert len(result) == 3 assert result[0] == before_diffusion @@ -174,29 +223,57 @@ class TestDiffusionQuerySet: @pytest.mark.django_db def test_after_without_date_arg(self, diffusions_time_variation): - yesterday_diffusion = diffusions_time_variation[2] - now_diffusion = diffusions_time_variation[4] - tomorrow_diffusion = diffusions_time_variation[6] + ( + _, + _, + yesterday_diffusion, + _, + now_diffusion, + _, + tomorrow_diffusion, + ) = diffusions_time_variation from_now_diffusions = Diffusion.objects.after() assert tomorrow_diffusion in from_now_diffusions assert now_diffusion in from_now_diffusions assert yesterday_diffusion not in from_now_diffusions - + @pytest.mark.django_db def test_after_with_datetime_arg(self, diffusions_time_variation): - now_datetime = diffusions_time_variation[1] - yesterday_diffusion = diffusions_time_variation[2] - now_diffusion = diffusions_time_variation[4] - tomorrow_diffusion = diffusions_time_variation[6] + ( + _, + 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 - #@pytest.mark.django_db - #def test_after_with_date_arg(): - # pass + @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 now_date == 'today' + 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