def test_loader_inserts_food_element( # noqa clirunner, monkeypatch, tmpdir, listfile): # Mocking for Nurungji-only food list monkeypatch.setattr( koreafood.requests, 'get', lambda _: MockHTTPResponse(listfile.read())) monkeypatch.setattr( koreafood.requests, 'Session', lambda: MockHTTPSession(post=_mock_foodlist_analysis_page)) food = koreafood.get_food_list().next() monkeypatch.setattr( koreafood, 'get_food_list', lambda: [food]) # Trigger SUT command url = 'sqlite:///'+tmpdir.join('new.db').strpath res = clirunner.invoke(loader, [url]) # Test result assert res.exit_code == 0 session = sessionmaker(create_engine(url))() mfood = session.query(koreafood_model.Food).one() assert mfood.name == food.name assert mfood.category_big == food.category_big assert mfood.category_small == food.category_small assert len(mfood.aliments) == 1
def test_loader_inserts_food_element( # noqa clirunner, monkeypatch, tmpdir, listfile): # Mocking for Nurungji-only food list monkeypatch.setattr(koreafood.requests, 'get', lambda _: MockHTTPResponse(listfile.read())) monkeypatch.setattr( koreafood.requests, 'Session', lambda: MockHTTPSession(post=_mock_foodlist_analysis_page)) food = koreafood.get_food_list().next() monkeypatch.setattr(koreafood, 'get_food_list', lambda: [food]) # Trigger SUT command url = 'sqlite:///' + tmpdir.join('new.db').strpath res = clirunner.invoke(loader, [url]) # Test result assert res.exit_code == 0 session = sessionmaker(create_engine(url))() mfood = session.query(koreafood_model.Food).one() assert mfood.name == food.name assert mfood.category_big == food.category_big assert mfood.category_small == food.category_small assert len(mfood.aliments) == 1
def test_foodlist_monkeypatch_work(monkeypatch): ''' Test if koreafood.get_food_list() calls monkeypatched requests.get() method. ''' monkeypatch.setattr(koreafood.requests, 'get', trigger_error_func) l = koreafood.get_food_list() with pytest.raises(AttributeError): l.next()
def test_foodlist_listfile_food_parsed(monkeypatch, listfile): monkeypatch.setattr( koreafood.requests, 'get', lambda _: MockHTTPResponse(listfile.read())) monkeypatch.setattr( koreafood, 'get_food_analysis', lambda _: {}) # alignment parse ignored food = koreafood.get_food_list().next() assert food.category_big == u'밥류' assert food.category_small == u'쌀밥' assert food.name == u'누룽지'
def test_foodlist_break_if_no_more_list(monkeypatch, listfile): monkeypatch.setattr( koreafood.requests, 'get', lambda _: MockHTTPResponse(listfile.read())) l = koreafood.get_food_list() for n in range(10): l.next() # traverse all(10) list elements monkeypatch.setattr( koreafood.requests, 'get', lambda _: MockHTTPResponse(u'<html></html>')) # returns nothing, iterator should be stopped with pytest.raises(StopIteration): l.next()
def test_foodlist_listfile_next_called(monkeypatch, listfile): monkeypatch.setattr( koreafood.requests, 'get', lambda _: MockHTTPResponse(listfile.read())) l = koreafood.get_food_list() l.next() # 1 called (9 items remained) monkeypatch.setattr( koreafood.requests, 'get', lambda _: trigger_error_func) for n in range(9): l.next() # consume all lists with pytest.raises(AttributeError): l.next() # requets next page
def test_foodlist_analysis_parsed(monkeypatch): monkeypatch.setattr( koreafood.requests, 'Session', lambda: MockHTTPSession(post=_mock_foodlist_analysis_page)) nurungji = koreafood.get_food_list().next() expect_aliment = { u'쌀,멥쌀,논벼,백미,(국내산),일반형,일품': [ 50, 185, 5.6, 2.6, 0.2, 41.3, 0.2, 0.2, 3, 45.5, 0.6, 7.5, 52.5, 0, 0, 0, 0.1, 0.015, 0.5, 0 ] } for k in nurungji.aliment: assert k in nurungji.aliment assert len(nurungji.aliment[k]) == len(expect_aliment[k]) for a, b in zip(nurungji.aliment[k], expect_aliment[k]): assert float(a) == float(b)
def test_foodlist_analysis_exists(monkeypatch): monkeypatch.setattr( koreafood.requests, 'Session', lambda: MockHTTPSession(post=_mock_foodlist_analysis_page)) koreafood.get_food_list().next()