Example #1
0
def test_fetch_data_stop_when_no_data():
    with aioresponses() as aiomock:
        base_query = 'https://api.wootric.com/v1/responses?access_token=x'
        for i in range(8):
            aiomock.get(f'{base_query}&page={i}',
                        status=200,
                        payload=[{
                            'page': i
                        }])
        for i in range(8, 11):
            aiomock.get(f'{base_query}&page={i}', status=200, payload=[])
        data = woot.fetch_wootric_data(base_query)
        assert data == [
            {
                'page': 1
            },
            {
                'page': 2
            },
            {
                'page': 3
            },
            {
                'page': 4
            },
            {
                'page': 5
            },
            {
                'page': 6
            },
            {
                'page': 7
            },
        ]
Example #2
0
def test_fetch_data_stop_before_end():
    with aioresponses() as aiomock:
        base_query = 'https://api.wootric.com/v1/responses?access_token=x'
        for i in range(8):
            aiomock.get(f'{base_query}&page={i}&per_page=10', status=200, payload=[{'page': i}])
        data = woot.fetch_wootric_data(base_query, max_pages=6, batch_size=10)
        assert data == [
            {'page': 1},
            {'page': 2},
            {'page': 3},
            {'page': 4},
            {'page': 5},
            {'page': 6},
        ]
Example #3
0
def test_fetch_data_custom_batch_size(mocker):
    max_pages = 3
    with aioresponses() as aiomock:
        base_query = 'https://api.wootric.com/v1/responses?access_token=x'
        for i in range(8):
            aiomock.get(f'{base_query}&page={i}&per_page=10', status=200, payload=[{'page': i}])
        for i in range(8, 11):
            aiomock.get(f'{base_query}&page={i}&per_page=10', status=200, payload=[])
        mocker.spy(woot, 'batch_fetch')
        data = woot.fetch_wootric_data(base_query, max_pages=max_pages, batch_size=10)
        assert data == [
            {'page': 1},
            {'page': 2},
            {'page': 3},
        ]
        assert woot.batch_fetch.call_count == 1
Example #4
0
def test_fetch_data_filter_props():
    with aioresponses() as aiomock:
        base_query = 'https://api.wootric.com/v1/responses?access_token=x'
        for i in range(8):
            aiomock.get(
                f'{base_query}&page={i}&per_page=10',
                status=200,
                payload=[{'page': i, 'x': 1, 'y': 2}],
            )
        data = woot.fetch_wootric_data(
            base_query, props_fetched=('page', 'y'), max_pages=6, batch_size=10
        )
        assert data == [
            {'page': 1, 'y': 2},
            {'page': 2, 'y': 2},
            {'page': 3, 'y': 2},
            {'page': 4, 'y': 2},
            {'page': 5, 'y': 2},
            {'page': 6, 'y': 2},
        ]