blob: f6fdec35568e030ff19460a5a6c531f8bbc956de [file] [edit]
from typing import List
from attrs import define, field
from requests_cache.models import RichMixin
@define
class DemoModel(RichMixin):
str_attr: str = field(default=None)
int_attr: int = field(default=None)
list_attr: List[str] = field(factory=list)
_private_attr: bool = field(default=False, repr=False)
def test_rich_mixin():
"""Test that RichMixin.__rich_repr__ informs rich about all public attributes, current values,
and defaults
"""
model = DemoModel(str_attr='str', int_attr=1, list_attr=['a', 'b'])
repr_tokens = list(model.__rich_repr__())
assert repr_tokens == [
('str_attr', 'str', None),
('int_attr', 1, None),
('list_attr', ['a', 'b'], []),
]
def test_repr():
"""Test that regular __repr__ excludes default values"""
assert repr(DemoModel() == 'DemoModel()')
assert repr(DemoModel(str_attr='str') == "DemoModel(str_attr='str')")