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]
Exemple #2
0
 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')
Exemple #8
0
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,
    }
Exemple #11
0
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]