async def test_handles_flip_cards(name, http_client): response = [ get_product(name='Search for Azcanta / Azcanta, the Sunken Ruin') ] http_client.get.return_value = amock(response) api = MkmApi(http_client) result = await api.get_product_ids(name, expansions=None) assert result == [123]
def get_card_expansions(self, card_name): loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) client = HttpClient(loop, get_config(current_app)) result = loop.run_until_complete( MkmApi(client).get_expansions(card_name)) loop.run_until_complete(client.close()) return result
async def test_calls_api_with_correct_params(name, exact, http_client): http_client.get.return_value = amock([get_product()]) api = MkmApi(http_client) await api.get_product_ids(name, expansions=None) params = {'search': name.lower(), 'exact': exact, 'idGame': 1} http_client.get.assert_called_once_with('products/find', params=params, headers={}, field='product')
async def test_filters_out_product_that_are_not_cards(http_client): response = amock([ get_product(category='Magic Single', product_id=123), get_product(category='some other category', product_id=456), ]) http_client.get.return_value = response api = MkmApi(http_client) result = await api.get_product_ids('Shock', expansions=None) assert result == [123]
async def test_filters_articles_by_foil(foil, params, http_client, app): response = amock([get_article()]) http_client.get.return_value = response api = MkmApi(http_client) await api.get_articles('some_product_id', foil=foil) http_client.get.assert_called_once_with('articles/some_product_id', params=params, headers={}, field='article')
async def test_filters_articles_by_min_condition(http_client, app): response = amock([get_article()]) http_client.get.return_value = response api = MkmApi(http_client) await api.get_articles('some_product_id', min_condition='NM') params = {'minCondition': 'NM'} http_client.get.assert_called_once_with('articles/some_product_id', params=params, headers={}, field='article')
async def test_filters_articles_by_language(http_client, app): response = amock([get_article()]) http_client.get.return_value = response api = MkmApi(http_client) await api.get_articles('some_product_id', language_id=10) params = {'idLanguage': 10} http_client.get.assert_called_once_with('articles/some_product_id', params=params, headers={}, field='article')
def populate_expansions(): loop = asyncio.get_event_loop() client = HttpClient(loop, get_config(current_app)) expansions = loop.run_until_complete(MkmApi(client).get_all_expansions()) for exp in expansions: if Expansion.query.filter_by(code=exp['code']).first(): continue db.session.add(Expansion(name=exp['name'], code=exp['code'])) logger.info("Saving expansion %s" % exp['name']) db.session.commit() loop.run_until_complete(client.close())
async def test_filters_products_by_expansion(http_client): response = amock([ get_product(expansion='Kaladesh', product_id=123), get_product(expansion='Dominaria', product_id=456), get_product(expansion='Magic 2019', product_id=789), ]) http_client.get.return_value = response api = MkmApi(http_client) result = await api.get_product_ids('Shock', expansions=['Magic 2019', 'Dominaria']) assert set(result) == {456, 789}
async def test_get_article(http_client, app): response = amock([get_article()]) http_client.get.return_value = response api = MkmApi(http_client) result = await api.get_articles('some_product_id') http_client.get.assert_called_once_with('articles/some_product_id', params={}, headers={}, field='article') assert len(result) == 1 assert result[0] == { 'language': 1, 'price': 0.1, 'seller_username': '******', 'seller_country': 'D', 'seller_url': 'http://dummy.user.url/some_seller', 'seller_id': 'some_id', 'count': 1, 'id': 123, }
def get_pricing(wishlist): start = time.time() config = get_config(current_app) loop = asyncio.get_event_loop() client = HttpClient(loop, config) api = MkmApi(client) service = MkmPricingService( loop, api, wishlist['cards'], LanguagesService() ) result, error = None, None try: result = service.run() except RateLimitReached: error = 'Rate limit reached' except Exception as e: logger.exception('Exception occured in a pricing job: %s', e) error = str(e) finally: loop.run_until_complete(client.close()) logger.info('FINISHED job, lasted %s', time.time() - start) return { 'result': result, 'error': error }
async def test_handles_split_cards(name, http_client): response = [get_product(name='Fire // Ice')] http_client.get.return_value = amock(response) api = MkmApi(http_client) result = await api.get_product_ids(name, expansions=None) assert result == [123]