Exemplo n.º 1
0
def test_get_random_item(random):
    result = get_random_item(Gender)
    assert result in Gender

    random.seed(0xf)
    result_1 = get_random_item(Gender, rnd=random)
    result_2 = get_random_item(Gender, rnd=random)
    assert result_1 == result_2
Exemplo n.º 2
0
    def full_name(self,
                  gender: Optional[Gender] = None,
                  reverse: bool = False) -> str:
        """Generate a random full name.

        :param reverse: Return reversed full name.
        :param gender: Gender's enum object.
        :return: Full name.

        :Example:
            Johann Wolfgang.
        """
        if gender is None:
            gender = get_random_item(Gender, rnd=self.random)

        if gender and isinstance(gender, Gender):
            gender = gender
        else:
            raise NonEnumerableError(Gender)

        fmt = '{1} {0}' if reverse else '{0} {1}'
        return fmt.format(
            self.name(gender),
            self.surname(gender),
        )
Exemplo n.º 3
0
def _generate_user_data(locale='ru'):
    person = Person(locale)
    date = Datetime(locale)
    gender = get_random_item(Gender)
    return {
        'password': _generate_password(),
        'first_name': person.surname(gender=gender),
        'last_name': person.name(gender=gender),
        'email': person.email(),
        'date_joined': date.datetime(start=2014, end=2015).replace(tzinfo=utc),
    }
Exemplo n.º 4
0
    def _validate_enum(self, item: Any, enum: Any) -> Any:
        """Validate enum parameter of method in subclasses of BaseProvider.

        :param item: Item of enum object.
        :param enum: Enum object.
        :return: Value of item.
        :raises NonEnumerableError: if ``item`` not in ``enum``.
        """
        if item is None:
            result = get_random_item(enum, self.random)
        elif item and isinstance(item, enum):
            result = item
        else:
            raise NonEnumerableError(enum)

        return result.value
Exemplo n.º 5
0
def _generate_questionnaire_data(locale='ru') -> dict:
    person = Person(locale)
    rus_spec = RussiaSpecProvider()
    datetime = Datetime(locale)
    g = get_random_item(Gender)
    created = datetime.datetime(start=2015, end=2018)
    return {
        'id': uuid.uuid4(),
        'created': created.replace(tzinfo=utc),
        'updated': created.replace(tzinfo=utc),
        'surname': person.surname(gender=g),
        'first_name': person.name(gender=g),
        'patronymic': rus_spec.patronymic(gender=g),
        'birth_date': datetime.datetime(start=1960, end=1998).date(),
        'phone_num': person.telephone(),
        'pass_ser': rus_spec.passport_series(),
        'pass_num': rus_spec.passport_number(),
        'score': randint(0, 2000),
    }
Exemplo n.º 6
0
    def credit_card_number(self, card_type: Optional[CardType] = None) -> str:
        """Generate a random credit card number.

        :param card_type: Issuing Network. Default is Visa.
        :return: Credit card number.
        :raises NotImplementedError: if cart_type is not supported.

        :Example:
            4455 5299 1152 2450
        """
        length = 16
        regex = re.compile('(\d{4})(\d{4})(\d{4})(\d{4})')

        if card_type is None:
            card_type = get_random_item(CardType, rnd=self.random)

        if card_type == CardType.VISA:
            number = self.random.randint(4000, 4999)
        elif card_type == CardType.MASTER_CARD:
            number = self.random.choice([
                self.random.randint(2221, 2720),
                self.random.randint(5100, 5500),
            ])
        elif card_type == CardType.AMERICAN_EXPRESS:
            number = self.random.choice([34, 37])
            length = 15
            regex = re.compile('(\d{4})(\d{6})(\d{5})')
        else:
            raise NonEnumerableError(CardType)

        str_num = str(number)
        while len(str_num) < length - 1:
            str_num += self.random.choice(string.digits)

        groups = regex.search(  # type: ignore
            str_num + luhn_checksum(str_num), ).groups()
        card = ' '.join(groups)
        return card