pulseapi/users/factory.py (47 lines of code) (raw):
"""
Create fake users for local development and Heroku's review app.
"""
from random import randint
from factory import (
DjangoModelFactory,
Faker,
Trait,
LazyAttribute,
SubFactory,
)
from pulseapi.users.models import EmailUser
from pulseapi.profiles.factory import BasicUserProfileFactory, ExtendedUserProfileFactory
class BasicEmailUserFactory(DjangoModelFactory):
class Meta:
model = EmailUser
exclude = ('email_domain',)
class Params:
group = Trait(
profile=SubFactory(BasicUserProfileFactory, group=True),
name=Faker('company')
)
active = Trait(
profile=SubFactory(BasicUserProfileFactory, is_active=True)
)
extended_profile = Trait(
profile=SubFactory(ExtendedUserProfileFactory)
)
use_custom_name = Trait(
profile=SubFactory(BasicUserProfileFactory, use_custom_name=True)
)
email = LazyAttribute(lambda o: o.name.replace(' ', '') + str(randint(0, 100)) + '@' + o.email_domain)
name = Faker('name')
profile = SubFactory(BasicUserProfileFactory)
# LazyAttribute helper value
email_domain = Faker('domain_name')
class MozillaEmailUserFactory(BasicEmailUserFactory):
class Meta:
model = EmailUser
class Params:
staff = Trait(
is_staff=True
)
admin = Trait(
is_superuser=True
)
extended_profile = Trait(
profile=SubFactory(ExtendedUserProfileFactory)
)
email = LazyAttribute(lambda o: o.name.replace(' ', '') + str(randint(0, 100)) + '@mozillafoundation.org')
profile = SubFactory(BasicUserProfileFactory)