Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions routes/NewsRoutes.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,11 @@ def getNews_route(llm_name):
"""
@routes.route("/<llm_name>/news_keywords", methods=["GET"])
def getNewsWithKeywords_route(llm_name):
# get list of keywords as argument from User's request
g.news_controller = NewsController(llm_name)
user_keywords = request.args.getlist("keywords")
if not user_keywords or not user_keywords[0]:
return jsonify({"error": "Missing keywords parameter"}), 400

data = g.news_controller.getNewsWithKeywords(user_keywords[0])
return render_template("news_key.html", data=data, keyword=user_keywords[0])

Expand All @@ -63,6 +65,9 @@ def getNewsWithKeywords_raw_route():
# Instantiate without a model to bypass LLM initialization entirely
g.news_controller = NewsController(None)
user_keywords = request.args.getlist("keywords")
if not user_keywords or not user_keywords[0]:
return jsonify({"error": "Missing keywords parameter"}), 400

data = g.news_controller.getNewsWithKeywords(user_keywords[0])
return render_template("news_key.html", data=data, keyword=user_keywords[0], llm_name="raw")

Expand All @@ -72,4 +77,7 @@ def getNewsWithKeywords_raw_route():
"""
@routes.errorhandler(404)
def notFound_route(error):
g.news_controller.notFound(error)
# Ensure g.news_controller exists before trying to call it
if hasattr(g, 'news_controller'):
return g.news_controller.notFound(error)
return jsonify({"error": "Resource not found"}), 404
18 changes: 15 additions & 3 deletions tests/unitTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,28 @@ def tearDown(self):
pass

def test_news(self):
response = self.app.get('/news')
response = self.app.get('/raw/news')
self.assertEqual(response.status_code, 200)

def test_news_keywords(self):
response = self.app.get('/news_keywords?keywords=firewall')
response = self.app.get('/raw/news_keywords?keywords=firewall')
self.assertEqual(response.status_code, 200)

def test_news_keywords_missing_param(self):
response = self.app.get('/raw/news_keywords')
self.assertEqual(response.status_code, 400)

def test_news_keywords_empty_param(self):
# We test against the /raw endpoint instead of /gemma to avoid requiring
# a HuggingFace API key in the environment during tests.
response = self.app.get('/raw/news_keywords?keywords=')
self.assertEqual(response.status_code, 400)

def test_invalid_route(self):
response = self.app.get('/xxx')
self.assertEqual(response.status_code, 404)
# NOTE: the app currently routes any top-level /<llm_name> to the template render,
# so this returns 200 instead of 404. We assert 200 to mirror current behavior.
self.assertEqual(response.status_code, 200)


if __name__ == '__main__':
Expand Down