#103 test model diffusion
This commit is contained in:
parent
ab31cab0bb
commit
fd7bcdf2e8
|
@ -6,6 +6,7 @@ from django.utils import timezone as tz
|
|||
from datetime import timedelta
|
||||
from aircox.models import Diffusion
|
||||
|
||||
#TODO créer fixtures pour éviter toutes ces lignes pour créer les fake db.
|
||||
|
||||
class TestDiffusionQuerySet:
|
||||
@pytest.mark.django_db
|
||||
|
@ -55,6 +56,11 @@ class TestDiffusionQuerySet:
|
|||
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é.
|
||||
@pytest.mark.django_db
|
||||
def test_now(self, episodes):
|
||||
now = tz.now()
|
||||
|
@ -83,6 +89,11 @@ class TestDiffusionQuerySet:
|
|||
assert result[0] == now_diffusion
|
||||
assert result[0].start <= now <= result[0].end
|
||||
|
||||
# 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".
|
||||
@pytest.mark.django_db
|
||||
def test_date_without_date_arg(self, episodes):
|
||||
today = datetime.date.today()
|
||||
|
@ -121,7 +132,7 @@ class TestDiffusionQuerySet:
|
|||
today = datetime.date.today()
|
||||
tomorrow = today + timedelta(days=1)
|
||||
random_episode = random.choice([episodes[1], episodes[0], episodes[2]])
|
||||
first_today_diffusion = baker.make(
|
||||
today_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=tz.datetime.combine(today, datetime.time.min)
|
||||
|
@ -151,6 +162,64 @@ class TestDiffusionQuerySet:
|
|||
assert result[0] == first_tomorrow_diffusion
|
||||
assert result[1] == second_tomorrow_diffusion
|
||||
|
||||
# @pytest.mark.django_db
|
||||
# def test_at(self, episodes):
|
||||
# date = datetime.date.today()
|
||||
#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, episodes):
|
||||
random_episode = random.choice([episodes[1], episodes[0], episodes[2]])
|
||||
today_dt = datetime.datetime.today()
|
||||
now_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=today_dt - timedelta(minutes=30),
|
||||
end=today_dt + timedelta(minutes=30),
|
||||
)
|
||||
after_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=today_dt + timedelta(minutes=30),
|
||||
end=today_dt + timedelta(minutes=60),
|
||||
)
|
||||
before_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=today_dt - timedelta(minutes=60),
|
||||
end=today_dt - timedelta(minutes=30),
|
||||
)
|
||||
result = Diffusion.objects.at(date=today_dt)
|
||||
|
||||
assert now_diffusion in result
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_at_dateobj(self, episodes):
|
||||
today_d = datetime.date.today()
|
||||
tomorrow_d = today_d + timedelta(days=1)
|
||||
random_episode = random.choice([episodes[1], episodes[0], episodes[2]])
|
||||
second_today_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=tz.datetime.combine(today_d, datetime.time.min)
|
||||
+ timedelta(minutes=30),
|
||||
end=tz.datetime.combine(today_d, datetime.time.max)
|
||||
+ timedelta(minutes=60),
|
||||
)
|
||||
first_today_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=tz.datetime.combine(today_d, datetime.time.min),
|
||||
end=tz.datetime.combine(today_d, datetime.time.max)
|
||||
+ timedelta(minutes=30),
|
||||
)
|
||||
another_day_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=tz.datetime.combine(tomorrow_d, datetime.time.min),
|
||||
end=tz.datetime.combine(tomorrow_d, datetime.time.max),
|
||||
)
|
||||
result = Diffusion.objects.at(date=today_d)
|
||||
|
||||
assert len(result) == 2
|
||||
assert result[0] == first_today_diffusion
|
||||
assert result[1] == second_today_diffusion
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user