summaryrefslogtreecommitdiff
path: root/tests/unit/models/test_base.py
blob: d91ddc22ae91b1ad26565229e0f8b262fb244f6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from typing import List

from attr 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')")