import json import unittest from tests import EVENTS_FOLDER def assert_get_synsets_by_word_and_language(cls, q): from my_ghost_writer.thesaurus import get_synsets_by_word_and_language response = get_synsets_by_word_and_language(q, lang="eng") cls.assertEqual(list(response.keys()), ['word', 'results']) cls.assertEqual(response["word"], q) cls.assertIsInstance(response["results"], list) results = response["results"] for result in results: for k, v in result.items(): cls.assertIsInstance(k, str) try: if k == "definition": cls.assertIsInstance(v, str) else: cls.assertIsInstance(v, list) except AssertionError as ae: print(k, v, ae) for s in v: cls.assertIsInstance(s, str) with open(EVENTS_FOLDER / f"expected_get_synsets_by_word_and_language_{q}.json", "r") as src: # json.dump(response, src, indent=4) expected_response = json.load(src) cls.assertEqual(response, expected_response) class TestThesaurusWordnet(unittest.TestCase): def test_get_current_info_wordnet(self): from my_ghost_writer.thesaurus import get_current_info_wordnet current_info = get_current_info_wordnet(False) self.assertEqual(list(current_info.keys()), ['languages', 'version', 'preload_wordnet']) languages = current_info["languages"] self.assertIn("eng", languages) self.assertIsInstance(languages, list) self.assertFalse(current_info["preload_wordnet"]) self.assertIsInstance(current_info["version"], str) self.assertGreaterEqual(len(languages), 1) current_info = get_current_info_wordnet(True) self.assertEqual(list(current_info.keys()), ['languages', 'version', 'preload_wordnet']) languages = current_info["languages"] self.assertIn("eng", languages) self.assertIsInstance(languages, list) self.assertTrue(current_info["preload_wordnet"]) self.assertIsInstance(current_info["version"], str) self.assertGreaterEqual(len(languages), 1) def test_get_synsets_by_word_and_language(self): assert_get_synsets_by_word_and_language(self, "dog") assert_get_synsets_by_word_and_language(self, "look") assert_get_synsets_by_word_and_language(self, "power") assert_get_synsets_by_word_and_language(self, "term") if __name__ == '__main__': unittest.main()