write tests for sources

This commit is contained in:
bkfox
2023-06-11 16:29:38 +02:00
parent cbd28bc946
commit b586bc5309
3 changed files with 161 additions and 56 deletions

View File

@@ -1,9 +1,9 @@
from datetime import datetime
from datetime import datetime, time
import tzlocal
import pytest
from aircox.models import Station, Port
from aircox import models
from aircox_streamer import controllers
from aircox_streamer.connector import Connector
@@ -36,7 +36,7 @@ class FakeSocket:
pass
def sendall(self, data):
self.sent_data.append(data)
self.sent_data.append(data.decode())
def recv(self, count):
if isinstance(self.recv_data, list):
@@ -48,36 +48,76 @@ class FakeSocket:
data = self.recv_data
self.recv_data = self.recv_data[count:]
data = data[:count]
return data.encode("utf-8") if isinstance(data, str) else data
return (
data.encode("utf-8") if isinstance(data, str) else data
) or b"\nEND"
def is_sent(self, data):
"""Return True if provided data have been sent."""
# use [:-1] because connector add "\n" at sent data
return any(r for r in self.sent_data if r == data or r[:-1] == data)
# -- models
@pytest.fixture
def station():
station = Station(name="test", path="/tmp", default=True, active=True)
station = models.Station(
name="test", path="/tmp", default=True, active=True
)
station.save()
return station
@pytest.fixture
def station_ports(station):
ports = [
Port(
items = [
models.Port(
station=station,
direction=Port.DIRECTION_INPUT,
type=Port.TYPE_HTTP,
direction=models.Port.DIRECTION_INPUT,
type=models.Port.TYPE_HTTP,
active=True,
),
Port(
models.Port(
station=station,
direction=Port.DIRECTION_OUTPUT,
type=Port.TYPE_FILE,
direction=models.Port.DIRECTION_OUTPUT,
type=models.Port.TYPE_FILE,
active=True,
),
]
for port in ports:
port.save()
return ports
models.Port.objects.bulk_create(items)
return items
@pytest.fixture
def program(station):
program = models.Program(title="test", station=station)
program.save()
return program
@pytest.fixture
def stream(program):
stream = models.Stream(
program=program, begin=time(10, 12), end=time(12, 13)
)
stream.save()
return stream
@pytest.fixture
def sounds(program):
items = [
models.Sound(
name=f"sound {i}",
program=program,
type=models.Sound.TYPE_ARCHIVE,
position=i,
file=f"sound-{i}.mp3",
)
for i in range(0, 3)
]
models.Sound.objects.bulk_create(items)
return items
# -- connectors