class PersonFactory(DjangoModelFactory): class Meta: model = Person # membertype = FuzzyChoice(Person.MEMBER_TYPE_CHOICES) name = Faker("name") placename = Faker("city_suffix") zipcode = Faker("zipcode") city = Faker("city") streetname = Faker("street_name") housenumber = Faker("building_number") floor = Faker("floor") door = Faker("door") dawa_id = Faker("uuid4") municipality = Faker("municipality") longitude = Faker("longitude") latitude = Faker("latitude") updated_dtm = Faker("date_time", tzinfo=TIMEZONE) email = factory.Sequence( lambda n: "person{0}@example.com".format(n)) # Faker("email") phone = Faker("phone_number") gender = FuzzyChoice(Person.MEMBER_GENDER_CHOICES) birthday = Faker("date") # has_certificate = Faker("date") family = SubFactory(FamilyFactory, email=email) notes = Faker("text") # added = Faker("date_time", tzinfo=TIMEZONE) # deleted_dtm = Faker("date_time", tzinfo=TIMEZONE) user = SubFactory(UserFactory, username=SelfAttribute("..email"), email=SelfAttribute("..email")) address_invalid = Faker("boolean")
class OrderProductFactory(DjangoModelFactory): class Meta: model = "ordering.OrderProduct" product = SubFactory(ProductFactory) order = SubFactory(OrderFactory) amount = FuzzyInteger(low=1, high=10) retail_price = SelfAttribute('product.retail_price') base_price = SelfAttribute('product.base_price')
class PaymentFactory(DjangoModelFactory): currency = SubFactory(CurrencyFactory) from_account = SubFactory(AccountFactory, currency=SelfAttribute('..currency')) to_account = SubFactory(AccountFactory, currency=SelfAttribute('..currency')) amount = 0 class Meta(object): model = Payment
class Params: lop_indicator = Trait( lop_target=1000, target_frequency=IndicatorM.LOP, periodic_target=RelatedFactory( 'factories.indicators_models.PeriodicTargetFactory', 'indicator', target=1000, start_date=SelfAttribute('indicator.program.reporting_period_start'), end_date=SelfAttribute('indicator.program.reporting_period_end'), ) )
class EquipmentFactory(DjangoModelFactory): class Meta: model = Equipment django_get_or_create = ('owner', 'identifier',) owner = SubFactory(AccountFactory) company = SubFactory(CompanyFactory, owner=SelfAttribute('..owner')) type = SubFactory(EquipmentTypeFactory, owner=SelfAttribute('..owner')) category = NullableSubFactory(ResourceCategoryFactory, owner=SelfAttribute('..owner')) project = NullableSubFactory(ProjectFactory, owner=SelfAttribute('..owner')) location = NullableSubFactory(LocationFactory, owner=SelfAttribute('..owner'))
class ConnectionFactory(BaseFactory): """Connection factory.""" connection_type = 'friend' from_person_id = SelfAttribute('from_person.id') from_person = SubFactory(PersonFactory) to_person_id = SelfAttribute('to_person.id') to_person = SubFactory(PersonFactory) class Meta: model = Connection exclude = ('from_person', 'to_person')
class ServiceFactory(DjangoModelFactory): class Meta: model = Service owner = Faker("user_name") name = Faker("slug") status = LazyFunction( lambda: choice([item.value for item in Status] + [None])) impact = LazyFunction( lambda: choice([item.value for item in Impact] + [None])) tier = SubFactory(TierFactory, level=LazyFunction(lambda: randint(1, 4))) repository = SubFactory(RepositoryFactory, owner=SelfAttribute("..owner"), name=SelfAttribute("..name")) slack_channel = LazyAttribute(lambda o: f"#{o.name}") docs_url = LazyAttribute(lambda o: f"https://example.com/#{o.name}")
class AnswerFactory(DjangoModelFactory): session = SubFactory(SessionFactory) question = SelfAttribute('session.questionnaire.first_question') payload = None class Meta: model = Answer
class ResourceProjectAssignmentFakeFactory(DjangoModelFactory): class Meta: model = ResourceProjectAssignment owner = SubFactory(AccountFakeFactory) project = SubFactory(ProjectFakeFactory, owner=SelfAttribute('..owner')) start_date = LazyAttribute(lambda obj: date.today()) end_date = LazyAttribute(lambda obj: obj.start_date + timedelta(days=364))
class TranslationMemoryFactory(DjangoModelFactory): source = Sequence(lambda n: f"source {n}") target = Sequence(lambda n: f"target {n}") entity = SubFactory(EntityFactory, string=SelfAttribute("..source")) locale = SubFactory(LocaleFactory) class Meta: model = TranslationMemoryEntry
class TranslationMemoryFactory(DjangoModelFactory): source = Sequence(lambda n: 'source {0}'.format(n)) target = Sequence(lambda n: 'target {0}'.format(n)) entity = SubFactory(EntityFactory, string=SelfAttribute('..source')) locale = SubFactory(LocaleFactory) class Meta: model = TranslationMemoryEntry
class LineFactory(DjangoModelFactory): """Factory for Line""" order = SubFactory(OrderFactory) price = SelfAttribute('order.total_price_paid') description = FuzzyText(prefix="Line ") course_key = FuzzyText() class Meta: model = Line
class MailLogFactory(SQLAlchemyModelFactory): class Meta: model = models.MailLog sqlalchemy_session = models.db.session to = SubFactory(ParticipantFactory) meeting = SelfAttribute('to.meeting') subject = 'Test subject' message = 'Test message'
class CustomFieldValueFactory(SQLAlchemyModelFactory): class Meta: model = models.CustomFieldValue sqlalchemy_session = models.db.session participant = SubFactory(ParticipantFactory) custom_field = SubFactory(CustomFieldFactory, meeting=SelfAttribute('..participant.meeting')) value = 'some random text'
class AddressFactory(SQLAlchemyModelFactory): class Meta: model = Address sqlalchemy_session = SESSION address_id = Sequence(lambda n: n) email_address = Sequence(lambda n: f'address_{n}@hogemail.com') user = SubFactory(UserFactory) user_id = SelfAttribute('user.user_id')
class ConditionFactory(SQLAlchemyModelFactory): class Meta: model = models.Condition sqlalchemy_session = models.db.session rule = SubFactory(RuleFactory) field = SubFactory(CustomFieldFactory, meeting=SelfAttribute('..rule.meeting'), field_type='country')
class FoodLogFactory(DjangoModelFactory): user = SubFactory(UserFactory) time = FuzzyDateTime(start_dt=get_utc_time_relative_units_ago(years=2)) food = SubFactory(FoodFactory, user=SelfAttribute("..user")) quantity = FuzzyInteger(1, 10) notes = FuzzyChoice(NOTES_TO_USE_WITH_EMPTY_SPACES) class Meta: model = FoodLog django_get_or_create = ["user", "food", "time"]
class ActivityLogFactory(DjangoModelFactory): user = SubFactory(UserFactory) time = FuzzyDateTime(start_dt=get_utc_time_relative_units_ago(years=2)) activity = SubFactory(ActivityFactory, user=SelfAttribute("..user")) duration_minutes = FuzzyInteger(0, 100) notes = FuzzyChoice(NOTES_TO_USE_WITH_EMPTY_SPACES) class Meta: model = ActivityLog django_get_or_create = ["user", "activity", "time"]
class SiteFactory(DjangoModelFactory): """ Factory class for Site model """ class Meta(object): model = Site django_get_or_create = ('domain', ) domain = Sequence('{}.testserver.fake'.format) name = SelfAttribute('domain')
class ActivitySeriesFactory(DjangoModelFactory): class Meta: model = ActivitySeriesModel activity_type = SubFactory(ActivityTypeFactory, group=SelfAttribute('..place.group')) place = SubFactory(PlaceFactory) start_date = LazyAttribute(lambda _: timezone.now().replace( second=0, microsecond=0) + relativedelta(minutes=15)) rule = 'FREQ=WEEKLY'
class UserFactory(DjangoModelFactory): """Factory for User""" username = SelfAttribute("email") email = FuzzyText(suffix="@example.com") name = Faker("name") is_active = True class Meta: model = User
class TaggedItemsFactory(DjangoModelFactory): content_type = LazyAttribute( lambda o: ContentType.objects.get_for_model(o.content_object)) content_object = SubFactory(ResourceFactory) object_id = SelfAttribute('content_object.id') tag = SubFactory(CustomTagFactory) class Meta: model = TaggedItems django_get_or_create = ["content_type", "object_id", "tag"]
class ActionFactory(SQLAlchemyModelFactory): class Meta: model = models.Action sqlalchemy_session = models.db.session rule = SubFactory(RuleFactory) field = SubFactory(CustomFieldFactory, meeting=SelfAttribute('..rule.meeting'), field_type='country') is_visible = False is_required = False
class MetaProfile(Factory): class Meta: model = dict mastodon_profile = SelfAttribute('..name') mastodon_followers = fuzzy.FuzzyInteger(0, 100) @post_generation def add_social_media_profile(self, create, extracted, **kwargs): user_name = self['mastodon_profile'].replace(' ', '').lower() self['mastodon_profile'] = user_name + '@mastodon.fr'
class AnswerFactory(DjangoModelFactory): session = SubFactory(SessionFactory) question = SelfAttribute('session.questionnaire.first_question') payload = None @post_generation def set_question_and_answer(obj, create, extracted, **kwargs): if not obj.payload: obj.payload = f'Answer to: {obj.question.short_label}.' class Meta: model = Answer
class RecordFactory(DjangoModelFactory): class Meta: model = models.Record @post_generation def tags(self, create, extracted, **kwargs): if not create: return if extracted is None: tags = factories.FuzzyFactorySequence( TagFactory, f_kwargs={'owner': self.owner} ).fuzz() else: tags = extracted for tag in tags: self.tags.add(tag) # pylint: disable=no-member created_dt = factories.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=datetime.timezone.utc), datetime.datetime(2018, 1, 1, tzinfo=datetime.timezone.utc), ) delta = fuzzy.FuzzyDecimal(0.01, 10000, 2) description = Faker('text') asset_from = SubFactory(AssetFactory, owner=SelfAttribute('..owner')) asset_to = SubFactory(AssetFactory, owner=SelfAttribute('..owner')) owner = SubFactory(UserFactory) @lazy_attribute def mode(self): if self.asset_from and self.asset_to: return models.Record.TRANSFER elif self.asset_from: return models.Record.EXPENSE elif self.asset_to: return models.Record.INCOME else: return None
class CustomerFactory(Factory): class Meta: model = Customer _start_date = '-2years' _state_values = 'disabled,invited,enabled,declined'.split(',') _opt_in_levels = 'single_opt_in,confirmed_opt_in,unknown'.split(',') accepts_marketing = Faker("pybool") accepts_marketing_updated_at = Faker("date_time_between", start_date=_start_date) currency = Faker("currency_code") created_at = Faker("date_time_between", start_date=_start_date) default_address = SubFactory( AddressFactory, customer_id=SelfAttribute('..id'), first_name=SelfAttribute('..first_name'), last_name=SelfAttribute('..last_name'), phone=SelfAttribute('..phone') ) addresses = LazyAttribute(lambda o: [o.default_address]) email = Faker("safe_email") first_name = Faker("first_name") id = Sequence(lambda n: n) last_name = Faker("last_name") last_order_id = Faker("random_int") last_order_name = '' orders_count = 0 # To be incremented with actual orders state = Faker('random_element', elements=_state_values) # can be disabled, invited, enabled, declined tags = '' tax_exempt = Faker("pybool") tax_exemptions = [] total_spent = 0.0 # To be incremented with actual orders updated_at = SelfAttribute('created_at') verified_email = True admin_graphql_api_id = "dfsdfd" marketing_opt_in_level = Faker('random_element', elements=_opt_in_levels) multipass_identifier = '' note = '' phone = Faker("safe_e164") metafield = None
class MediaParticipantFactory(SQLAlchemyModelFactory): class Meta: model = models.Participant sqlalchemy_session = models.db.session category = SubFactory(MeetingCategoryFactory) meeting = SelfAttribute('category.meeting') title = 'Ms' first_name = 'Jane' last_name = 'Doe' email = '*****@*****.**' country = 'BR' participant_type = models.Participant.MEDIA
class ObjectFactory(BaseCloudFactory): """Create objects.""" class Meta: model = Object exclude = ['_container'] _container = SubFactory(ContainerFactory) container = SelfAttribute('_container.name') data = b'Test Data' name = Sequence(lambda n: 'test_object_%d.txt' % n) @classmethod def _create(cls, model_class, *args, **kwargs): cloud = cls._meta.cloud.connection return cloud.object_store.upload_object(**kwargs)
class EmployeeFakeFactory(DjangoModelFactory): class Meta: model = Employee owner = SubFactory(AccountFakeFactory) identifier = Faker('ssn') first_name = Faker('first_name_male') last_name = Faker('last_name') gender = 'M' company = SubFactory(CompanyFakeFactory, owner=SelfAttribute('..owner')) department = SubFactory(DepartmentFakeFactory, owner=SelfAttribute('..owner')) position = SubFactory(PositionFakeFactory, owner=SelfAttribute('..owner')) category = SubFactory(ResourceCategoryFakeFactory, owner=SelfAttribute('..owner')) project = SubFactory(ProjectFakeFactory, owner=SelfAttribute('..owner')) team = SubFactory(TeamFakeFactory, owner=SelfAttribute('..owner'), company=SelfAttribute('..company')) location = SubFactory(LocationFakeFactory, owner=SelfAttribute('..owner'))