class ListingFactory(GenericPostFactory): class Meta: model = Listing category = factory.Faker('random_int', min=0, max=get_length(Choices.LISTING_CATEGORY_CHOICES) - 1) price = factory.Faker('pydecimal', left_digits=6, right_digits=2) season = factory.Faker('random_int', min=0, max=get_length(Choices.SEASON_CHOICES) - 1) year = factory.Faker('random_int', min=2000, max=2050) location = factory.Faker('address')
class AdFactory(GenericPostFactory): class Meta: model = Ad category = factory.Faker('random_int', min=0, max=get_length(Choices.AD_CATEGORY_CHOICES)-1) price = factory.Faker('pydecimal', left_digits=6, right_digits=2) postal_code = factory.Faker('bothify', text='?#?#?#', letters=ascii_uppercase)
class EventFactory(GenericPostFactory): class Meta: model = Event price_scale = factory.Faker('random_int', min=0, max=get_length(Choices.PRICE_CHOICES)-1) start_datetime = factory.Faker('date_time') end_datetime = factory.Faker('date_time') location = factory.Faker('address') @factory.post_generation def interested_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, list): for user in extracted: self.interested_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.interested_users.add(UserFactory(connected_users=[], blocked_users=[])) @factory.post_generation def attending_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, list): for user in extracted: self.attending_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.attending_users.add(UserFactory(connected_users=[], blocked_users=[]))
class UserFactory(factory.django.DjangoModelFactory): class Meta: model = CustomUser first_name = factory.Faker('first_name') last_name = factory.Faker('last_name') preferred_name = factory.Faker('name') email = factory.LazyAttributeSequence(lambda user, i: f'{user.first_name[0].lower()}{i}{user.last_name.lower()}@uwaterloo.ca') pronouns = factory.Faker('random_int', min=0, max=get_length(Choices.PRONOUN_CHOICES)-1) bio = factory.Faker('paragraph') birthday = factory.Faker('date_of_birth') current_term = factory.Faker('random_int', min=0, max=get_length(Choices.TERM_CHOICES)-1) enrolled_program = factory.Faker('random_int', min=0, max=get_length(Choices.PROGRAM_CHOICES)-1) phone_number = factory.Faker('msisdn') region = factory.Faker('random_int', min=0, max=get_length(Choices.REGION_CHOICES)-1) password = factory.PostGenerationMethodCall('set_password', 'Top$ecret150') @factory.PostGeneration def verify_email(self, create, extracted, **kwargs): email_address = EmailAddress.objects.add_email(request=None, user=self, email=self.email, confirm=False) email_address.verified = True email_address.save() @factory.post_generation def connected_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, list): for user in extracted: self.connected_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.connected_users.add(UserFactory(connected_users=[], blocked_users=[])) @factory.post_generation def blocked_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, list): for user in extracted: self.blocked_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.blocked_users.add(UserFactory(connected_users=[], blocked_users=[]))
class ListingFactory(AbstractFactory): class Meta: model = Listing category = factory.Faker("random_int", min=0, max=get_length(Choices.LISTING_CATEGORY_CHOICES) - 1) location = factory.Faker("address") price = factory.Faker("pydecimal", left_digits=6, right_digits=2) season = factory.Faker("random_int", min=0, max=get_length(Choices.SEASON_CHOICES) - 1) year = factory.Faker("random_int", min=2000, max=2050) @factory.post_generation def contacted_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, (list, QuerySet)): for user in extracted: self.contacted_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.contacted_users.add( UserFactory(connected_users=[], blocked_users=[])) @factory.post_generation def confirmed_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, (list, QuerySet)): for user in extracted: self.confirmed_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.confirmed_users.add( UserFactory(connected_users=[], blocked_users=[]))
class JobFactory(factory.django.DjangoModelFactory): class Meta: model = Job content = factory.Faker("paragraph") creator = factory.SubFactory(UserFactory) position = factory.Faker("job") company = factory.Faker("company") job_type = factory.Faker( "random_int", min=0, max=get_length(Choices.JOB_TYPE_CHOICES) - 1 ) start_date = factory.Faker("date") end_date = factory.Faker("date") location = factory.Faker("city")
class JobFactory(factory.django.DjangoModelFactory): class Meta: model = Job content = factory.Faker('paragraph') creator = factory.SubFactory(UserFactory) position = factory.Faker('job') company = factory.Faker('company') job_type = factory.Faker('random_int', min=0, max=get_length(Choices.JOB_TYPE_CHOICES) - 1) start_date = factory.Faker('date') end_date = factory.Faker('date') city = factory.Faker('city')
class AbstractFactory(factory.django.DjangoModelFactory): title = factory.Faker("text", max_nb_chars=100) content = factory.Faker("paragraph") creator = factory.SubFactory(UserFactory, connected_users=[], blocked_users=[]) community = factory.Faker("random_int", min=0, max=get_length(Choices.COMMUNITY_CHOICES) - 1) @factory.post_generation def tagged_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, (list, QuerySet)): for user in extracted: self.tagged_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.tagged_users.add( UserFactory(connected_users=[], blocked_users=[])) @factory.post_generation def liked_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, (list, QuerySet)): for user in extracted: self.liked_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.liked_users.add( UserFactory(connected_users=[], blocked_users=[])) @factory.post_generation def saved_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, (list, QuerySet)): for user in extracted: self.saved_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.saved_users.add( UserFactory(connected_users=[], blocked_users=[]))
class GenericPostFactory(factory.django.DjangoModelFactory): title = factory.Faker('text', max_nb_chars=100) content = factory.Faker('paragraph') region = factory.Faker('random_int', min=0, max=get_length(Choices.REGION_CHOICES) - 1) creator = factory.SubFactory(UserFactory) @factory.post_generation def liked_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, list): for user in extracted: self.liked_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.liked_users.add( UserFactory(connected_users=[], blocked_users=[])) @factory.post_generation def tagged_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, list): for user in extracted: self.tagged_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.tagged_users.add( UserFactory(connected_users=[], blocked_users=[])) @factory.post_generation def saved_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, list): for user in extracted: self.saved_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.saved_users.add( UserFactory(connected_users=[], blocked_users=[]))
class EventFactory(AbstractFactory): class Meta: model = Event start_datetime = factory.Faker("date_time_between", start_date="-30y", end_date="now") end_datetime = factory.Faker("date_time_between", start_date="now", end_date="+30y") location = factory.lazy_attribute(lambda a: MockData.MOCK_ADDRESSES[ random.randint(0, len(MockData.MOCK_ADDRESSES) - 1)]) price = factory.Faker("pydecimal", left_digits=6, right_digits=2) price_scale = factory.Faker("random_int", min=0, max=get_length(Choices.PRICE_CHOICES) - 1) @factory.post_generation def interested_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, (list, QuerySet)): for user in extracted: self.interested_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.interested_users.add( UserFactory(connected_users=[], blocked_users=[])) @factory.post_generation def attending_users(self, create, extracted, **kwargs): if create: if isinstance(extracted, (list, QuerySet)): for user in extracted: self.attending_users.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.attending_users.add( UserFactory(connected_users=[], blocked_users=[]))
class RoomFactory(factory.django.DjangoModelFactory): class Meta: model = Room title = factory.Faker('text', max_nb_chars=100) creator = factory.SubFactory(UserFactory) privacy_level = factory.Faker( 'random_int', min=0, max=get_length(Choices.NOTIFICATION_PRIVACY_CHOICES) - 1) @factory.post_generation def members(self, create, extracted, **kwargs): if create: if isinstance(extracted, list): for user in extracted: self.members.add(user) else: rand_int = random.randint(0, 2) for i in range(rand_int): self.members.add( UserFactory(connected_users=[], blocked_users=[]))