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

80 lines
2.4 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 AntennaFactory(factory.django.DjangoModelFactory):
"""Antenna model factory."""
frequency = fuzzy.FuzzyFloat(200, 500)
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, 800)
lat = fuzzy.FuzzyFloat(-20, 70)
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(1000, 8000)
name = fuzzy.FuzzyText()
class Meta:
model = Satellite
class TransponderFactory(factory.django.DjangoModelFactory):
"""Transponder model factory."""
description = fuzzy.FuzzyText()
alive = fuzzy.FuzzyChoice(choices=[True, False])
uplink_low = fuzzy.FuzzyInteger(200, 500)
uplink_high = fuzzy.FuzzyInteger(200, 500)
downlink_low = fuzzy.FuzzyInteger(200, 500)
downlink_high = fuzzy.FuzzyInteger(200, 500)
mode = fuzzy.FuzzyChoice(choices=MODE_CHOICES)
invert = fuzzy.FuzzyChoice(choices=[True, False])
baud = fuzzy.FuzzyInteger(4000, 22000, step=1000)
satellite = factory.SubFactory(SatelliteFactory)
class Meta:
model = Transponder
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