@@ -0,0 +1,67 @@
1+from collections import defaultdict
2+import mock
3+from searx.engines import reddit
4+from searx.testing import SearxTestCase
5+from datetime import datetime
6+
7+
8+class TestRedditEngine(SearxTestCase):
9+
10+ def test_request(self):
11+ query = 'test_query'
12+ dic = defaultdict(dict)
13+ params = reddit.request(query, dic)
14+ self.assertTrue('url' in params)
15+ self.assertTrue(query in params['url'])
16+ self.assertTrue('reddit.com' in params['url'])
17+
18+ def test_response(self):
19+ resp = mock.Mock(text='{}')
20+ self.assertEqual(reddit.response(resp), [])
21+
22+ json = """
23+ {
24+ "kind": "Listing",
25+ "data": {
26+ "children": [{
27+ "data": {
28+ "url": "http://google.com/",
29+ "title": "Title number one",
30+ "selftext": "Sample",
31+ "created_utc": 1401219957.0,
32+ "thumbnail": "http://image.com/picture.jpg"
33+ }
34+ }, {
35+ "data": {
36+ "url": "https://reddit.com/",
37+ "title": "Title number two",
38+ "selftext": "Dominus vobiscum",
39+ "created_utc": 1438792533.0,
40+ "thumbnail": "self"
41+ }
42+ }]
43+ }
44+ }
45+ """
46+
47+ resp = mock.Mock(text=json)
48+ results = reddit.response(resp)
49+
50+ self.assertEqual(len(results), 2)
51+ self.assertEqual(type(results), list)
52+
53+ # testing first result (picture)
54+ r = results[0]
55+ self.assertEqual(r['url'], 'http://google.com/')
56+ self.assertEqual(r['title'], 'Title number one')
57+ self.assertEqual(r['template'], 'images.html')
58+ self.assertEqual(r['thumbnail_src'], 'http://image.com/picture.jpg')
59+
60+ # testing second result (self-post)
61+ r = results[1]
62+ self.assertEqual(r['url'], 'https://reddit.com/')
63+ self.assertEqual(r['title'], 'Title number two')
64+ self.assertEqual(r['content'], 'Dominus vobiscum')
65+ created = datetime.fromtimestamp(1438792533.0)
66+ self.assertEqual(r['publishedDate'], created)
67+ self.assertTrue('thumbnail_src' not in r)