From eeaddb27560d723ca7d61359744ceb2709fccd2d Mon Sep 17 00:00:00 2001 From: Matthew Lemon Date: Tue, 15 Oct 2024 21:01:31 +0100 Subject: Renamed from pyblackbird_cc to alphabetlearning - everywhere --- alphabetlearning/users/tests/factories.py | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 alphabetlearning/users/tests/factories.py (limited to 'alphabetlearning/users/tests/factories.py') diff --git a/alphabetlearning/users/tests/factories.py b/alphabetlearning/users/tests/factories.py new file mode 100644 index 0000000..c0e94a3 --- /dev/null +++ b/alphabetlearning/users/tests/factories.py @@ -0,0 +1,40 @@ +from collections.abc import Sequence +from typing import Any + +from factory import Faker +from factory import post_generation +from factory.django import DjangoModelFactory + +from alphabetlearning.users.models import User + + +class UserFactory(DjangoModelFactory): + email = Faker("email") + name = Faker("name") + + @post_generation + def password(self, create: bool, extracted: Sequence[Any], **kwargs): # noqa: FBT001 + password = ( + extracted + if extracted + else Faker( + "password", + length=42, + special_chars=True, + digits=True, + upper_case=True, + lower_case=True, + ).evaluate(None, None, extra={"locale": None}) + ) + self.set_password(password) + + @classmethod + def _after_postgeneration(cls, instance, create, results=None): + """Save again the instance if creating and at least one hook ran.""" + if create and results and not cls._meta.skip_postgeneration_save: + # Some post-generation hooks ran, and may have modified us. + instance.save() + + class Meta: + model = User + django_get_or_create = ["email"] -- cgit v1.2.3