Source code for rpaper.apps.reservations.tests.factories
import random
import datetime
import factory.fuzzy
from pytz import UTC
from django.contrib.auth.models import User
from ..models import (
Thing,
Record,
)
[docs]class UserFactory(factory.DjangoModelFactory):
class Meta:
model = User
django_get_or_create = ('username', 'email', 'password')
username = factory.Faker('name')
email = factory.Faker('email')
password = factory.Faker('password')
[docs]class ThingFactory(factory.DjangoModelFactory):
class Meta:
model = Thing
name = factory.Faker('word')
owner = factory.SubFactory(UserFactory)
[docs]class RecordFactory(factory.DjangoModelFactory):
class Meta:
model = Record
name = factory.Faker('name')
contact = factory.Faker('email')
thing = factory.SubFactory(ThingFactory)
start_at = factory.fuzzy.FuzzyDateTime(
datetime.datetime(2008, 1, 1, tzinfo=UTC), # type: ignore
datetime.datetime(2008, 12, 31, tzinfo=UTC), # type: ignore
)
@factory.lazy_attribute
def end_at(self):
delta = datetime.timedelta(
hours=random.randint(1, 23),
)
return self.start_at + delta