Jelajahi Sumber

Add tests and logic

Gabriel Cruz 4 tahun lalu
induk
melakukan
b370d67128
2 mengubah file dengan 28 tambahan dan 11 penghapusan
  1. 21 2
      howdoi/howdoi.py
  2. 7 9
      test_howdoi.py

+ 21 - 2
howdoi/howdoi.py

@@ -283,8 +283,6 @@ def _get_answer(args, links):
     link = get_link_at_pos(links, args['pos'])
     if not link:
         return False
-    if args.get('link'):
-        return link
 
     cache_key = link
     page = cache.get(link)
@@ -394,6 +392,27 @@ def _clear_cache():
 def _is_help_query(query: str):
     return any([query.lower() == help_query for help_query in SUPPORTED_HELP_QUERIES])
 
+def _parse_json(res, args):
+    """
+    @res: json object with answers and metadata
+    @args: command-line arguments (used for parsing)
+    returns: formated string of text ready to be printed
+    """
+    res = json.loads(res)
+    if "error" in res:
+        return res["error"]
+
+    spliter_length = 80
+    answer_spliter = '\n' + '=' * spliter_length + '\n\n'
+
+    formated_answers = []
+    for answer in res["answers"]:
+
+        next_ans = answer["answer"]
+        if args["link"]: #  if we only want links
+            next_ans = answer["link"]
+
+        formated_answers.append(next_ans)
 
 def _get_help_instructions():
     instruction_splitter = build_splitter(' ', 60)

+ 7 - 9
test_howdoi.py

@@ -5,6 +5,7 @@ import os
 import re
 import time
 import unittest
+import json
 
 from howdoi import howdoi
 from pyquery import PyQuery as pq
@@ -103,15 +104,12 @@ class HowdoiTestCase(unittest.TestCase):
 
     def test_json_output(self):
         query = self.queries[0]
-        txt_answers = self.call_howdoi(query + ' -n2')
-        json_answers = self.call_howdoi(query + ' -j -n2')
-        expected_json = {
-            "answers": [
-               txt_answers[0],
-               txt_answers[1],
-            ],
-        }
-        self.assertEqual(json_answers, expected_json)
+        txt_answer = self.call_howdoi(query)
+        json_answer = self.call_howdoi(query + ' -j')
+        json_answer = json.loads(json_answer)
+        print(json_answer)
+        print(txt_answer)
+        self.assertEqual(json_answer["answers"]["answer"], txt_answer)
 
     def test_multiple_answers(self):
         query = self.queries[0]