瀏覽代碼

add wikipedia neuron unit tests

nico 8 年之前
父節點
當前提交
e72d147fff

+ 1 - 0
brains/wikipedia.yml

@@ -6,6 +6,7 @@
     neurons:
       - wikipedia_searcher:
           language: "fr"
+          sentences: 1
           args:
             - query
           file_template: "templates/wikipedia_returned_value.j2"

+ 0 - 0
neurons/wikipedia_searcher/tests/__init__.py


+ 67 - 0
neurons/wikipedia_searcher/tests/test_wikipedia_searcher.py

@@ -0,0 +1,67 @@
+import unittest
+
+from core.NeuronModule import InvalidParameterException
+from neurons.wikipedia_searcher import Wikipedia_searcher
+
+
+class TestWikipediaSearcher(unittest.TestCase):
+    def setUp(self):
+        pass
+
+    def test_parameters(self):
+        def run_test(parameters_to_test):
+            with self.assertRaises(InvalidParameterException):
+                Wikipedia_searcher(**parameters_to_test)
+
+        parameters = dict()
+        run_test(parameters)
+
+        # sentences must be an integer
+        parameters = {
+            "language": "en",
+            "query": "this is the query",
+            "sentences": "invalid"
+
+        }
+        run_test(parameters)
+
+        # test non existing language
+        parameters = {
+            "language": "foo",
+            "query": "this is the query",
+            "sentences": 1
+
+        }
+        run_test(parameters)
+
+    def test_get_DisambiguationError(self):
+
+        parameters = {
+            "language": "fr",
+            "query": "bot",
+            "sentences": 1
+        }
+
+        wiki = Wikipedia_searcher(**parameters)
+        self.assertEqual(wiki.returncode, "DisambiguationError")
+
+    def test_page_error(self):
+        parameters = {
+            "language": "fr",
+            "query": "fudu foo bar non exist",
+            "sentences": 1
+        }
+
+        wiki = Wikipedia_searcher(**parameters)
+        self.assertEqual(wiki.returncode, "PageError")
+
+    def test_summary_found(self):
+        parameters = {
+            "language": "fr",
+            "query": "kalliope"
+        }
+        wiki = Wikipedia_searcher(**parameters)
+        self.assertEqual(wiki.returncode, "SummaryFound")
+
+if __name__ == '__main__':
+    unittest.main()

+ 8 - 3
neurons/wikipedia_searcher/wikipedia_searcher.py

@@ -23,6 +23,7 @@ class Wikipedia_searcher(NeuronModule):
 
         self.may_refer = None
         self.returncode = None
+        self.message = None
 
         # check parameters
         if self._is_parameters_ok():
@@ -46,14 +47,14 @@ class Wikipedia_searcher(NeuronModule):
                 self.returncode = "PageError"
                 summary = ""
 
-            message = {
+            self.message = {
                 "summary": summary,
                 "may_refer": self.may_refer,
                 "returncode": self.returncode
             }
-            logger.debug("Wikipedia returned message: %s" % str(message))
+            logger.debug("Wikipedia returned message: %s" % str(self.message))
 
-            self.say(message)
+            self.say(self.message)
 
     def _is_parameters_ok(self):
         """
@@ -72,4 +73,8 @@ class Wikipedia_searcher(NeuronModule):
         if self.language not in valid_language:
             raise InvalidParameterException("Wikipedia needs a valid language: %s" % valid_language)
 
+        if self.sentences is not None:
+            if not isinstance(self.sentences, int):
+                raise InvalidParameterException("Number of sentences must be an integer")
+
         return True