def get_all_trends(last_retrieved_trend_id): """ Gets all the hashtags. *Parameters:* - *last_retrieved_kweek_id (string)*: The id of the last retrieved trend (used to fetch more). Nullable. *Returns:* - *List of models.Hashtag objects* """ if last_retrieved_trend_id is not None: try: last_retrieved_trend_id = int(last_retrieved_trend_id) except ValueError: raise database_trends = query_factory.get_all_trends() # Paginate the results try: database_trends = paginate(dictionaries_list=database_trends, required_size=20, start_after_key='id', start_after_value=last_retrieved_trend_id) except TypeError as E: print(E) raise if database_trends is None: return None trends = [] for database_trend in database_trends: trend = { 'id': database_trend['id'], 'text': database_trend['text'], 'number_of_kweeks': database_trend['number_of_kweeks'] } trends.append(Trend(trend)) return trends
def test_get_all_trends(): expected_trends = [] query = """ SELECT ID FROM HASHTAG WHERE TEXT = 'trend' """ trend_id = db_manager.execute_query(query)[0]['id'] expected_trends.append( Trend({ 'id': trend_id, 'text': 'trend', 'number_of_kweeks': 2 })) query = """ SELECT ID FROM HASHTAG WHERE TEXT = 'trend2' """ trend_id = db_manager.execute_query(query)[0]['id'] expected_trends.append( Trend({ 'id': trend_id, 'text': 'trend2', 'number_of_kweeks': 0 })) actual_trends = actions.get_all_trends(None) for index, kweek in enumerate(actual_trends): assert expected_trends[index].to_json() == kweek.to_json() # Invalid ID exception_caught = False try: actions.get_all_trends('invalid_id') except ValueError: exception_caught = True assert exception_caught