aircox-radiocampus/aircox/tests/models/test_sound.py
Chris Tactic 55123c386d #132 | #121: backoffice / dev-1.0-121 (#131)
cfr #121

Co-authored-by: Christophe Siraut <d@tobald.eu.org>
Co-authored-by: bkfox <thomas bkfox net>
Co-authored-by: Thomas Kairos <thomas@bkfox.net>
Reviewed-on: rc/aircox#131
Co-authored-by: Chris Tactic <ctactic@noreply.git.radiocampus.be>
Co-committed-by: Chris Tactic <ctactic@noreply.git.radiocampus.be>
2024-04-28 22:02:09 +02:00

123 lines
3.5 KiB
Python

from datetime import timedelta
import os
import pytest
from django.conf import settings
from django.utils import timezone as tz
from aircox import models
@pytest.fixture
def path_infos():
return {
"test/20220101_10h13_1_sample_1.mp3": {
"year": 2022,
"month": 1,
"day": 1,
"hour": 10,
"minute": 13,
"n": 1,
"name": "Sample 1",
},
"test/20220102_10h13_sample_2.mp3": {
"year": 2022,
"month": 1,
"day": 2,
"hour": 10,
"minute": 13,
"n": None,
"name": "Sample 2",
},
"test/20220103_1_sample_3.mp3": {
"year": 2022,
"month": 1,
"day": 3,
"hour": None,
"minute": None,
"n": 1,
"name": "Sample 3",
},
"test/20220104_sample_4.mp3": {
"year": 2022,
"month": 1,
"day": 4,
"hour": None,
"minute": None,
"n": None,
"name": "Sample 4",
},
"test/20220105.mp3": {
"year": 2022,
"month": 1,
"day": 5,
"hour": None,
"minute": None,
"n": None,
"name": "20220105",
},
}
class TestSoundQuerySet:
@pytest.mark.django_db
def test_downloadable(self, sounds):
query = models.Sound.objects.downloadable().values_list("is_downloadable", flat=True)
assert set(query) == {True}
@pytest.mark.django_db
def test_broadcast(self, sounds):
query = models.Sound.objects.broadcast().values_list("broadcast", flat=True)
assert set(query) == {True}
@pytest.mark.django_db
def test_playlist(self, sounds):
expected = [os.path.join(settings.MEDIA_ROOT, s.file.path) for s in sounds]
assert models.Sound.objects.all().playlist() == expected
class TestSound:
@pytest.mark.django_db
def test_read_path(self, path_infos):
for path, expected in path_infos.items():
result = models.Sound.read_path(path)
assert expected == result
@pytest.mark.django_db
def test__as_name(self):
name = "some_1_file"
assert models.Sound._as_name(name) == "Some 1 File"
def _setup_diff(self, program, info):
episode = models.Episode(program=program, title="test-episode")
at = tz.datetime(**{k: info[k] for k in ("year", "month", "day", "hour", "minute") if info.get(k)})
at = tz.make_aware(at)
diff = models.Diffusion(episode=episode, start=at, end=at + timedelta(hours=1))
episode.save()
diff.save()
return diff
@pytest.mark.django_db(transaction=True)
def test_find_episode(self, program, path_infos):
for path, infos in path_infos.items():
diff = self._setup_diff(program, infos)
sound = models.Sound(program=diff.program, file=path)
result = sound.find_episode(infos)
assert diff.episode == result
@pytest.mark.django_db
def test_find_playlist(self):
raise NotImplementedError("test is not implemented")
@pytest.mark.django_db
def test_get_upload_dir(self):
raise NotImplementedError("test is not implemented")
@pytest.mark.django_db
def test_sync_fs(self):
raise NotImplementedError("test is not implemented")
@pytest.mark.django_db
def test_read_metadata(self):
raise NotImplementedError("test is not implemented")