#103 test model diffusion
This commit is contained in:
parent
fd7bcdf2e8
commit
80f56b167e
|
@ -4,21 +4,69 @@ import datetime
|
|||
from model_bakery import baker
|
||||
from django.utils import timezone as tz
|
||||
from datetime import timedelta
|
||||
import pytz
|
||||
from aircox.models import Diffusion
|
||||
|
||||
#TODO créer fixtures pour éviter toutes ces lignes pour créer les fake db.
|
||||
#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]])
|
||||
now = tz.now()
|
||||
now_date = datetime.date.today()
|
||||
now_datetime = tz.now()
|
||||
tomorrow_datetime = now + timedelta(hours=25)
|
||||
yesterday_datetime = now - timedelta(hours=25)
|
||||
now_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=now - timedelta(minutes=30),
|
||||
end=now + timedelta(minutes=30),
|
||||
)
|
||||
after_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=now + timedelta(minutes=30),
|
||||
end=now + timedelta(minutes=60),
|
||||
)
|
||||
tomorrow_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=tomorrow_datetime,
|
||||
end=tomorrow_datetime + timedelta(minutes=30),
|
||||
)
|
||||
before_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=now - timedelta(minutes=60),
|
||||
end=now - timedelta(minutes=30),
|
||||
)
|
||||
yesterday_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=yesterday_datetime,
|
||||
end=yesterday_datetime + timedelta(minutes=30),
|
||||
)
|
||||
return now_date, now_datetime, yesterday_diffusion, before_diffusion, now_diffusion, after_diffusion, tomorrow_diffusion
|
||||
|
||||
@pytest.fixture
|
||||
def diffusions_episode_variation(episodes):
|
||||
key_episode = episodes[1]
|
||||
another_episode = episodes[2]
|
||||
diffusions_with_the_key_episode = baker.make(
|
||||
Diffusion, _quantity=3, episode=key_episode
|
||||
)
|
||||
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
|
||||
|
||||
class TestDiffusionQuerySet:
|
||||
@pytest.mark.django_db
|
||||
def test_episode_by_obj(self, episodes):
|
||||
key_episode = episodes[1]
|
||||
another_episode = episodes[2]
|
||||
diffusions_with_the_key_episode = baker.make(
|
||||
Diffusion, _quantity=3, episode=key_episode
|
||||
)
|
||||
diffusions_without_the_key_episode = baker.make(
|
||||
Diffusion, _quantity=3, episode=another_episode
|
||||
)
|
||||
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]
|
||||
result = Diffusion.objects.episode(episode=key_episode)
|
||||
|
||||
for diffusion in diffusions_with_the_key_episode:
|
||||
|
@ -27,15 +75,11 @@ class TestDiffusionQuerySet:
|
|||
assert diffusion not in result
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_episode_by_id(self, episodes):
|
||||
key_episode = episodes[1]
|
||||
another_episode = episodes[2]
|
||||
diffusions_with_the_key_episode = baker.make(
|
||||
Diffusion, _quantity=3, episode=key_episode
|
||||
)
|
||||
diffusions_without_the_key_episode = baker.make(
|
||||
Diffusion, _quantity=3, episode=another_episode
|
||||
)
|
||||
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]
|
||||
result = Diffusion.objects.episode(id=key_episode.id)
|
||||
|
||||
for diffusion in diffusions_with_the_key_episode:
|
||||
|
@ -62,27 +106,11 @@ class TestDiffusionQuerySet:
|
|||
# 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):
|
||||
def test_now_test(self, episodes, diffusions_time_variation):
|
||||
now = tz.now()
|
||||
random_episode = random.choice([episodes[1], episodes[0], episodes[2]])
|
||||
now_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=now - timedelta(minutes=30),
|
||||
end=now + timedelta(minutes=30),
|
||||
)
|
||||
after_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=now + timedelta(minutes=30),
|
||||
end=now + timedelta(minutes=60),
|
||||
)
|
||||
before_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=now - timedelta(minutes=60),
|
||||
end=now - timedelta(minutes=30),
|
||||
)
|
||||
now_diffusion = diffusions_time_variation[4]
|
||||
after_diffusion = diffusions_time_variation[5]
|
||||
before_diffusion = diffusions_time_variation[3]
|
||||
result = Diffusion.objects.now(now=now, order=True)
|
||||
|
||||
assert len(result) == 1
|
||||
|
@ -95,131 +123,80 @@ class TestDiffusionQuerySet:
|
|||
#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()
|
||||
tomorrow = today + 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, datetime.time.min)
|
||||
+ timedelta(minutes=30),
|
||||
end=tz.datetime.combine(today, datetime.time.max)
|
||||
+ timedelta(minutes=60),
|
||||
)
|
||||
first_today_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=tz.datetime.combine(today, datetime.time.min),
|
||||
end=tz.datetime.combine(today, datetime.time.max)
|
||||
+ timedelta(minutes=30),
|
||||
)
|
||||
another_day_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=tz.datetime.combine(tomorrow, datetime.time.min),
|
||||
end=tz.datetime.combine(tomorrow, datetime.time.max),
|
||||
)
|
||||
|
||||
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]
|
||||
result = Diffusion.objects.date()
|
||||
|
||||
assert len(result) == 2
|
||||
assert result[0] == first_today_diffusion
|
||||
assert result[1] == second_today_diffusion
|
||||
assert len(result) == 3
|
||||
assert result[0] == before_diffusion
|
||||
assert result[1] == now_diffusion
|
||||
assert result[2] == after_diffusion
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_date_with_date_arg(self, episodes):
|
||||
today = datetime.date.today()
|
||||
tomorrow = today + timedelta(days=1)
|
||||
random_episode = random.choice([episodes[1], episodes[0], episodes[2]])
|
||||
today_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=tz.datetime.combine(today, datetime.time.min)
|
||||
- timedelta(minutes=30),
|
||||
end=tz.datetime.combine(today, datetime.time.min)
|
||||
+ timedelta(minutes=30),
|
||||
)
|
||||
second_tomorrow_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=tz.datetime.combine(tomorrow, datetime.time.min)
|
||||
+ timedelta(minutes=30),
|
||||
end=tz.datetime.combine(tomorrow, datetime.time.min)
|
||||
+ timedelta(minutes=60),
|
||||
)
|
||||
first_tomorrow_diffusion = baker.make(
|
||||
Diffusion,
|
||||
episode=random_episode,
|
||||
start=tz.datetime.combine(tomorrow, datetime.time.min),
|
||||
end=tz.datetime.combine(tomorrow, datetime.time.min)
|
||||
+ timedelta(minutes=60),
|
||||
)
|
||||
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]
|
||||
result = Diffusion.objects.date(date=tomorrow_date)
|
||||
|
||||
result = Diffusion.objects.date(date=tomorrow)
|
||||
|
||||
assert len(result) == 2
|
||||
assert result[0] == first_tomorrow_diffusion
|
||||
assert result[1] == second_tomorrow_diffusion
|
||||
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
|
||||
@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)
|
||||
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)
|
||||
|
||||
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)
|
||||
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)
|
||||
|
||||
assert len(result) == 3
|
||||
assert result[0] == before_diffusion
|
||||
assert result[1] == now_diffusion
|
||||
assert result[2] == after_diffusion
|
||||
|
||||
@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]
|
||||
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]
|
||||
from_now_diffusions = Diffusion.objects.after(date=now_datetime)
|
||||
|
||||
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_date_arg():
|
||||
# pass
|
||||
|
||||
assert len(result) == 2
|
||||
assert result[0] == first_today_diffusion
|
||||
assert result[1] == second_today_diffusion
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user