#100 pytest model station #99
|
@ -12,6 +12,26 @@ def stations():
|
|||
return baker.make(models.Station, _quantity=2)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def stations_without_default():
|
||||
return baker.make(models.Station, _quantity=3, default=False)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def station_default():
|
||||
return baker.make(models.Station, default=True)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def stations_inactive():
|
||||
return baker.make(models.Station, _quantity=3, active=False)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def station_active():
|
||||
return baker.make(models.Station, active=True)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def programs(stations):
|
||||
items = list(
|
||||
|
|
232
aircox/tests/models/test_station.py
Normal file
232
aircox/tests/models/test_station.py
Normal file
|
@ -0,0 +1,232 @@
|
|||
import pytest
|
||||
|
||||
from model_bakery import baker
|
||||
|
||||
from aircox.models import Station, Port
|
||||
|
||||
from aircox.conf import settings
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestStationQuerySet:
|
||||
# default method : not possible to have several stations by default.
|
||||
# default method : return a selected instance of station but do not save it.
|
||||
def test_default_without_default_station(self, stations_without_default):
|
||||
returned_station = Station.objects.default()
|
||||
|
||||
assert returned_station is not None
|
||||
assert returned_station == Station.objects.first()
|
||||
|
||||
def test_default_with_pkargs_and_without_default_station(
|
||||
self, stations_without_default
|
||||
):
|
||||
station = stations_without_default[1]
|
||||
returned_station = Station.objects.default(
|
||||
station=station.pk
|
||||
)
|
||||
|
||||
assert station == returned_station
|
||||
|
||||
def test_default_with_default_station(
|
||||
self, station_default, stations_without_default
|
||||
):
|
||||
returned_default_station = Station.objects.default()
|
||||
|
||||
assert returned_default_station == station_default
|
||||
|
||||
def test_default_with_pkargs_and_default_station(
|
||||
self, station_default, stations_without_default
|
||||
):
|
||||
returned_default_station = Station.objects.default(
|
||||
station=station_default.pk
|
||||
)
|
||||
|
||||
assert returned_default_station == station_default
|
||||
|
||||
def test_active(self, station_active, stations_inactive):
|
||||
filtered_active_station = Station.objects.active()
|
||||
|
||||
assert station_active in filtered_active_station
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestStation:
|
||||
def test_stream_field_filled(self, stations):
|
||||
streams_urls = "http://radiocampus.be/stream1.mp3\nhttp://radiocampus.be/stream2.mp3"
|
||||
station = baker.make(Station, audio_streams=streams_urls)
|
||||
|
||||
assert station.streams == [
|
||||
"http://radiocampus.be/stream1.mp3",
|
||||
"http://radiocampus.be/stream2.mp3",
|
||||
]
|
||||
|
||||
def test_stream_field_empty(self, stations):
|
||||
station = baker.make(Station, audio_streams=None)
|
||||
|
||||
assert station.streams == []
|
||||
|
||||
def test__str__(self, stations):
|
||||
for station in stations:
|
||||
assert station.name == station.__str__()
|
||||
|
||||
def test_save_without_path(self, stations):
|
||||
station = baker.make(Station, path=None, slug="a-slug-with-dash")
|
||||
station.save()
|
||||
|
||||
assert (
|
||||
station.path
|
||||
== settings.CONTROLLERS_WORKING_DIR + "\\a_slug_with_dash"
|
||||
)
|
||||
|
||||
def test_save_default_station_while_anotherone_is_default(
|
||||
self, station_default, stations_without_default
|
||||
):
|
||||
old_default_station = station_default
|
||||
new_default_station = stations_without_default[1]
|
||||
new_default_station.default = True
|
||||
new_default_station.save()
|
||||
old_default_station.refresh_from_db()
|
||||
new_default_station.refresh_from_db()
|
||||
|
||||
assert Station.objects.filter(default=True).count() == 1
|
||||
assert old_default_station.default is False
|
||||
assert new_default_station.default is True
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestPortQuerySet:
|
||||
# issues with the preset incompatibility between port and direction.
|
||||
# I need to control which type and direction for each fake model
|
||||
# Otherwhise pytest fail randomly.
|
||||
def test_active_value_true(self):
|
||||
port1 = baker.make(
|
||||
Port,
|
||||
active=True,
|
||||
type=Port.TYPE_ICECAST,
|
||||
direction=Port.DIRECTION_OUTPUT,
|
||||
)
|
||||
port2 = baker.make(
|
||||
Port,
|
||||
active=False,
|
||||
type=Port.TYPE_ICECAST,
|
||||
direction=Port.DIRECTION_OUTPUT,
|
||||
)
|
||||
active_ports = Port.objects.active()
|
||||
|
||||
assert port1 in active_ports
|
||||
assert port2 not in active_ports
|
||||
|
||||
def test_active_value_false(self):
|
||||
port1 = baker.make(
|
||||
Port,
|
||||
active=True,
|
||||
type=Port.TYPE_ICECAST,
|
||||
direction=Port.DIRECTION_OUTPUT,
|
||||
)
|
||||
port2 = baker.make(
|
||||
Port,
|
||||
active=False,
|
||||
type=Port.TYPE_ICECAST,
|
||||
direction=Port.DIRECTION_OUTPUT,
|
||||
)
|
||||
|
||||
inactive_ports = Port.objects.active(value=False)
|
||||
assert port1 not in inactive_ports
|
||||
assert port2 in inactive_ports
|
||||
|
||||
def test_output(self):
|
||||
port1 = baker.make(
|
||||
Port, type=Port.TYPE_ICECAST, direction=Port.DIRECTION_OUTPUT
|
||||
)
|
||||
port2 = baker.make(
|
||||
Port, type=Port.TYPE_HTTP, direction=Port.DIRECTION_INPUT
|
||||
)
|
||||
|
||||
output_ports = Port.objects.output()
|
||||
assert port1 in output_ports
|
||||
assert port2 not in output_ports
|
||||
|
||||
def test_input(self):
|
||||
port1 = baker.make(
|
||||
Port, type=Port.TYPE_ICECAST, direction=Port.DIRECTION_OUTPUT
|
||||
)
|
||||
port2 = baker.make(
|
||||
Port, type=Port.TYPE_HTTP, direction=Port.DIRECTION_INPUT
|
||||
)
|
||||
|
||||
input_ports = Port.objects.input()
|
||||
assert port1 not in input_ports
|
||||
assert port2 in input_ports
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestPort:
|
||||
def test__str__(self):
|
||||
port = baker.make(
|
||||
Port, type=Port.TYPE_ICECAST, direction=Port.DIRECTION_OUTPUT
|
||||
)
|
||||
assert port.__str__() == "output: icecast #1"
|
||||
|
||||
def test_is_valid_type_and_type_is_input(self):
|
||||
porthttp = baker.make(
|
||||
Port, type=Port.TYPE_HTTP, direction=Port.DIRECTION_INPUT
|
||||
)
|
||||
porthttps = baker.make(
|
||||
Port, type=Port.TYPE_HTTPS, direction=Port.DIRECTION_INPUT
|
||||
)
|
||||
|
||||
assert porthttp.is_valid_type() == True
|
||||
assert porthttps.is_valid_type() == True
|
||||
|
||||
def test_is_valid_type_and_type_is_not_input(self):
|
||||
porticecast = baker.make(
|
||||
Port, type=Port.TYPE_ICECAST, direction=Port.DIRECTION_OUTPUT
|
||||
)
|
||||
portfile = baker.make(
|
||||
Port, type=Port.TYPE_FILE, direction=Port.DIRECTION_OUTPUT
|
||||
)
|
||||
|
||||
assert porticecast.is_valid_type() == True
|
||||
assert portfile.is_valid_type() == True
|
||||
|
||||
def test_save_with_valid_type_icecast_output(self):
|
||||
port = baker.make(
|
||||
Port, type=Port.TYPE_ICECAST, direction=Port.DIRECTION_OUTPUT
|
||||
)
|
||||
port.save()
|
||||
saved_port = Port.objects.get(id=port.id)
|
||||
|
||||
assert saved_port is not None
|
||||
|
||||
def test_save_with_valid_type_file_output(self):
|
||||
port = baker.make(
|
||||
Port, type=Port.TYPE_FILE, direction=Port.DIRECTION_OUTPUT
|
||||
)
|
||||
port.save()
|
||||
saved_port = Port.objects.get(id=port.id)
|
||||
|
||||
assert saved_port is not None
|
||||
|
||||
def test_save_with_valid_type_http_input(self):
|
||||
port = baker.make(
|
||||
Port, type=Port.TYPE_HTTP, direction=Port.DIRECTION_INPUT
|
||||
)
|
||||
port.save()
|
||||
saved_port = Port.objects.get(id=port.id)
|
||||
|
||||
assert saved_port is not None
|
||||
|
||||
def test_save_with_valid_type_https_input(self):
|
||||
port = baker.make(
|
||||
Port, type=Port.TYPE_HTTPS, direction=Port.DIRECTION_INPUT
|
||||
)
|
||||
port.save()
|
||||
saved_port = Port.objects.get(id=port.id)
|
||||
|
||||
assert saved_port is not None
|
||||
|
||||
def test_save_without_valid_type(self):
|
||||
with pytest.raises(ValueError):
|
||||
baker.make(
|
||||
Port, type=Port.TYPE_HTTP, direction=Port.DIRECTION_OUTPUT
|
||||
)
|
Loading…
Reference in New Issue
Block a user