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 }, ]
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}, ]
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
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}, ]