1
0
Fork 0
satnogs-network/SatNOGS/base/tests/__init__.py

88 lines
2.6 KiB
Python

import factory
from datetime import timedelta
from django.utils.timezone import now
from factory import fuzzy
from base.models import (ANTENNA_BANDS, ANTENNA_TYPES, MODE_CHOICES,
Antenna, Satellite, Station, Transponder, Observation)
from users.tests import UserFactory
class TransponderFactory(factory.django.DjangoModelFactory):
"""Transponder model factory."""
description = fuzzy.FuzzyText()
alive = fuzzy.FuzzyChoice(choices=[True, False])
uplink_low = fuzzy.FuzzyInteger(0, 100)
uplink_high = fuzzy.FuzzyInteger(0, 100)
downlink_low = fuzzy.FuzzyInteger(0, 100)
downlink_high = fuzzy.FuzzyInteger(0, 100)
mode = fuzzy.FuzzyChoice(choices=MODE_CHOICES)
invert = fuzzy.FuzzyChoice(choices=[True, False])
baud = fuzzy.FuzzyFloat(0, 100)
class Meta:
model = Transponder
class AntennaFactory(factory.django.DjangoModelFactory):
"""Antenna model factory."""
frequency = fuzzy.FuzzyFloat(0, 100)
band = fuzzy.FuzzyChoice(choices=ANTENNA_BANDS)
antenna_type = fuzzy.FuzzyChoice(choices=ANTENNA_TYPES)
class Meta:
model = Antenna
class StationFactory(factory.django.DjangoModelFactory):
"""Station model factory."""
owner = factory.SubFactory(UserFactory)
name = fuzzy.FuzzyText()
image = factory.django.ImageField()
alt = fuzzy.FuzzyInteger(0, 100)
lat = fuzzy.FuzzyFloat(-90, 90)
lng = fuzzy.FuzzyFloat(-180, 180)
featured = fuzzy.FuzzyChoice(choices=[True, False])
@factory.post_generation
def antennas(self, create, extracted, **kwargs):
if not create:
return
if extracted:
for antenna in extracted:
self.antenna.add(antenna)
class Meta:
model = Station
class SatelliteFactory(factory.django.DjangoModelFactory):
"""Sattelite model factory."""
norad_cat_id = fuzzy.FuzzyInteger(1, 4000)
name = fuzzy.FuzzyText()
@factory.post_generation
def transponders(self, create, extracted, **kwargs):
if not create:
return
if extracted:
for transponder in extracted:
self.transponders.add(transponder)
class Meta:
model = Satellite
class ObservationFactory(factory.django.DjangoModelFactory):
"""Observation model factory."""
satellite = factory.SubFactory(SatelliteFactory)
author = factory.SubFactory(UserFactory)
start = fuzzy.FuzzyDateTime(now() - timedelta(days=3), now())
end = fuzzy.FuzzyDateTime(now(), now() + timedelta(days=3))
class Meta:
model = Observation