Пример #1
0
    class Setter(Entity):
        _other_value = fields.StrField()
        _value = fields.StrField(mutable=True)

        def set_value(self, value):
            value = Setter._value.parse(value)
            self._value = value
            self._other_value = f'{value} world'
Пример #2
0
class CreatePost(Entity):
    _title = fields.StrField()
    _body = fields.StrField()
    _category_id = fields.StrField()
    _author = fields.LinkField(to=User)
    _description = fields.StrField()

    async def create(self) -> Post:
        self._validate_data()
        await self._resolve_category_id()
        try:
            return await Post.create(
                title=self._title,
                body=self._body,
                category_id=self._category_id,
                author=self._author,
                description=self._description
            )
        except exceptions.ForeignKeyViolationError:
            raise ValueError('does not exists category with id: '
                             f'{self._category_id}')

    def _validate_data(self):
        # TODO: add this validation to nyoibo
        if not self._title:
            raise ValueError('title is obligatory')
        if not self._body:
            raise ValueError('body is obligatory')
        if not self._category_id:
            raise ValueError('category_id is obligatory')
        if not self._author:
            raise ValueError('author is obligatory')
        if not self._description:
            raise ValueError('description is obligatory')

    async def _resolve_category_id(self):
        if self._category_id.isdigit() is False:
            category = await Category.create(name=self._category_id)
            self._category_id = category.id
Пример #3
0
class Rate(Entity):
    _value = fields.StrField(mutable=True)
    _other_value = fields.StrField()
    _default = fields.StrField(default_value='hello world')
    _other_default = fields.IntField(default_value=1)
    _private = fields.StrField(private=True)
    _immutable = fields.StrField()
    _type = fields.StrField(choices=Types)
Пример #4
0
def test_required_value():
    field = fields.StrField(required=True)
    with raises(RequiredValueError) as e:
        field.parse(None)

    assert str(e.value) == 'value is required'
Пример #5
0
 class Example(Entity):
     value = fields.StrField()
Пример #6
0
 class Model(Entity):
     _value = fields.StrField(required=True)
Пример #7
0
 class Model2(Entity):
     _value = fields.StrField()
     _link = fields.LinkField(to=Model1)
Пример #8
0
 class Model1(Entity):
     _link = fields.LinkField(to=Model0)
     _name = fields.StrField()
Пример #9
0
 class Model0(Entity):
     _value = fields.StrField()
     _int_value = fields.IntField()
Пример #10
0
 class Entity0(Entity, metaclass=OtherMetaEntity):
     _value = fields.StrField()
Пример #11
0
def test_str_max_length_is_positive():
    with raises(AssertionError):
        fields.StrField(max_length=-1)
Пример #12
0
def test_str_max_length():
    field = fields.StrField(max_length=10)
    with raises(StrLengthError) as e:
        field.parse('this is a longer string than max')

    assert str(e.value) == 'length value (32) is greater than max_value (10)'
Пример #13
0
 class NewEntity(Entity):
     _field0 = fields.StrField()
     _field1 = fields.IntField()
Пример #14
0
 class NewEntity(Entity):
     _value = fields.StrField()
Пример #15
0
def test_parse_str_value(value, expected_result):
    str_field = fields.StrField()
    assert str_field.parse(value) == expected_result