Beispiel #1
0
def test_load_enum():
    class Kind(Enum):
        SPAM = 'spam'
        HAM = 'ham'
        EGG = 'egg'

    class A(NamedTuple):
        kind: Kind

    assert load({'kind': 'spam'}, A) == A(kind=Kind.SPAM)
    assert load({'kind': 'ham'}, A) == A(kind=Kind.HAM)
    assert load({'kind': 'egg'}, A) == A(kind=Kind.EGG)
Beispiel #2
0
def test_load_structured():
    room = {
        'id':
        1000,
        'users': [{
            'id': 1,
            'name': 'Taro',
            'meta': {
                'class': 'A'
            },
            'icon': {
                'url': 'https://example.com/profile/taro/img.jpg'
            }
        }, {
            'id': 2,
            'name': 'Hanako',
            'meta': {},
            'email': '*****@*****.**',
            'icon': {
                'url': 'https://example.com/profile/hanako/img.jpg'
            }
        }]
    }
    converted = load(room, Room)

    assert converted.id == 1000
    assert len(converted.users) == 2
    assert converted.users[0].id == 1
    assert converted.users[0].email is None
    assert converted.users[
        0].icon.url == 'https://example.com/profile/taro/img.jpg'
    assert converted.users[1].id == 2
    assert converted.users[1].email == '*****@*****.**'
    assert converted.users[
        1].icon.url == 'https://example.com/profile/hanako/img.jpg'
Beispiel #3
0
def test_load_structured_tuple():
    icons = {
        'icons': [
            {
                'url': 'https://example.com/profile/taro/img.jpg'
            },
            {
                'url': 'https://example.com/profile/hanako/img.jpg'
            },
        ]
    }

    converted = load(icons, IconTuple)

    assert isinstance(converted.icons, tuple)
    assert converted.icons[0].url == 'https://example.com/profile/taro/img.jpg'
    assert converted.icons[
        1].url == 'https://example.com/profile/hanako/img.jpg'
Beispiel #4
0
def test_load_default_value():
    class A(NamedTuple):
        a: int = 0

    assert load({}, A) == A(a=0)
    assert load({'a': 1}, A) == A(a=1)
Beispiel #5
0
def test_load_simple():
    icon = {'url': 'https://example.com/profile/taro/img.jpg'}
    converted = load(icon, Icon)
    assert converted.url == 'https://example.com/profile/taro/img.jpg'
def fetch_qiita_items(page: int = 1) -> Tuple[Item, ...]:
    res = requests.get(QIITA_API_ENDPOINT, {'page': page})
    res.raise_for_status()
    return tuple(zarame.load(item, Item) for item in res.json())