def get_news(): """returns JSON with news model""" # checks is a specific company / stock symbol has been requested if request.json: # checks that a stock_symbol was provided with JSON stock_symbol = request.json.get('stock_symbol') if stock_symbol: # request for stock object returned_stock_details = Stock.query.get_or_404(stock_symbol) if returned_stock_details: # get news for stock returned_news = News.get_news(stock_symbol) # if no news was returned if returned_news is False: return jsonify(news='no news obtained') # create a list with each item is a dictionary which is able to be jsonify'ed all_news = [news.serialize_news() for news in returned_news] return jsonify(news=all_news) # if no stock symbol passed as json returned_news = News.get_news() if returned_news is False: return jsonify(news='no news obtained') all_news = [news.serialize_news() for news in returned_news] return jsonify(news=all_news)
def test_get_news_model_no_stock(self): """test adding news model""" # returns a list of 20 news objects articles = News.get_news() # tests random selection of articles that data is returned self.assertIsNotNone(articles[0].headline) self.assertIsNotNone(articles[5].headline) self.assertIsNotNone(articles[10].headline) self.assertIsNotNone(articles[19].headline) self.assertIsNotNone(articles[0].category) self.assertIsNotNone(articles[5].category) self.assertIsNotNone(articles[10].category) self.assertIsNotNone(articles[19].category) self.assertIsNotNone(articles[0].summary) self.assertIsNotNone(articles[5].summary) self.assertIsNotNone(articles[10].summary) self.assertIsNotNone(articles[19].summary) self.assertIsNotNone(articles[0].id) self.assertIsNotNone(articles[5].id) self.assertIsNotNone(articles[10].id) self.assertIsNotNone(articles[19].id)
def test_news_repr(self): """test news repr""" a = News.get_news() n = a[0] self.assertEqual( repr(a[0]), f'< News: id={n.id}, category={n.category}, datetime={n.datetime}, headline={n.headline}, image={n.image}, related={n.related}, source={n.source}, summary={n.summary}, url={n.url} >' )
def test_serialize_news(self): a = News.get_news() n = a[0] answer = { 'category': n.category, 'datetime': n.datetime, 'headline': n.headline, 'image': n.image, 'related': n.related, 'source': n.source, 'summary': n.summary, 'url': n.url, } self.assertEqual(n.serialize_news(), answer)
def test_get_news_model_with_stock(self): """test adding news model with stock""" # returns a list of 6 news objects articles = News.get_news(stock_symbol='AAPL') # tests random selection of articles that data is returned self.assertIsNotNone(articles[0].headline) self.assertIsNotNone(articles[2].headline) self.assertIsNotNone(articles[5].headline) self.assertIsNotNone(articles[0].category) self.assertIsNotNone(articles[2].category) self.assertIsNotNone(articles[5].category) self.assertIsNotNone(articles[0].summary) self.assertIsNotNone(articles[2].summary) self.assertIsNotNone(articles[5].summary) self.assertIsNotNone(articles[0].id) self.assertIsNotNone(articles[2].id) self.assertIsNotNone(articles[5].id)