@@ -0,0 +1,236 @@
1+from collections import defaultdict
3+from searx.engines import bing_news
4+from searx.testing import SearxTestCase
7+class TestBingNewsEngine(SearxTestCase):
9+ def test_request(self):
11+ dicto = defaultdict(dict)
13+ dicto['language'] = 'fr_FR'
14+ params = bing_news.request(query, dicto)
15+ self.assertIn('url', params)
16+ self.assertIn(query, params['url'])
17+ self.assertIn('bing.com', params['url'])
18+ self.assertIn('fr', params['url'])
19+ self.assertIn('_FP', params['cookies'])
20+ self.assertIn('en', params['cookies']['_FP'])
22+ dicto['language'] = 'all'
23+ params = bing_news.request(query, dicto)
24+ self.assertIn('en', params['url'])
25+ self.assertIn('_FP', params['cookies'])
26+ self.assertIn('en', params['cookies']['_FP'])
28+ def test_response(self):
29+ self.assertRaises(AttributeError, bing_news.response, None)
30+ self.assertRaises(AttributeError, bing_news.response, [])
31+ self.assertRaises(AttributeError, bing_news.response, '')
32+ self.assertRaises(AttributeError, bing_news.response, '[]')
34+ response = mock.Mock(content='<html></html>')
35+ self.assertEqual(bing_news.response(response), [])
37+ response = mock.Mock(content='<html></html>')
38+ self.assertEqual(bing_news.response(response), [])
42+ <div class="newstitle">
43+ <a href="http://url.of.article/" target="_blank" h="ID=news,5022.1">
48+ <a href="http://url.of.article2/" target="_blank" h="ID=news,5024.1">
49+ <img class="rms_img" height="80" id="emb1" src="/image.src" title="Title" width="80" />
54+ <span class="sn_snip">Article Content</span>
56+ <cite class="sn_src">metronews.fr</cite>
58+ <span class="sn_tm">44 minutes ago</span>
64+ response = mock.Mock(content=html)
65+ results = bing_news.response(response)
66+ self.assertEqual(type(results), list)
67+ self.assertEqual(len(results), 1)
68+ self.assertEqual(results[0]['title'], 'Title')
69+ self.assertEqual(results[0]['url'], 'http://url.of.article/')
70+ self.assertEqual(results[0]['content'], 'Article Content')
74+ <div class="newstitle">
75+ <a href="http://url.of.article/" target="_blank" h="ID=news,5022.1">
80+ <a href="http://url.of.article2/" target="_blank" h="ID=news,5024.1">
81+ <img class="rms_img" height="80" id="emb1" src="/image.src" title="Title" width="80" />
86+ <span class="sn_snip">Article Content</span>
88+ <cite class="sn_src">metronews.fr</cite>
90+ <span class="sn_tm">44 minutes ago</span>
96+ <div class="newstitle">
97+ <a href="http://url.of.article/" target="_blank" h="ID=news,5022.1">
101+ <div class="sn_img">
102+ <a href="http://url.of.article2/" target="_blank" h="ID=news,5024.1">
103+ <img class="rms_img" height="80" id="emb1" src="/image.src" title="Title" width="80" />
106+ <div class="sn_txt">
108+ <span class="sn_snip">Article Content</span>
109+ <span class="sn_ST">
110+ <cite class="sn_src">metronews.fr</cite>
112+ <span class="sn_tm">3 hours, 44 minutes ago</span>
118+ <div class="newstitle">
119+ <a href="http://url.of.article/" target="_blank" h="ID=news,5022.1">
123+ <div class="sn_img">
124+ <a href="http://url.of.article2/" target="_blank" h="ID=news,5024.1">
125+ <img class="rms_img" height="80" id="emb1" src="/image.src" title="Title" width="80" />
128+ <div class="sn_txt">
130+ <span class="sn_snip">Article Content</span>
131+ <span class="sn_ST">
132+ <cite class="sn_src">metronews.fr</cite>
134+ <span class="sn_tm">44 hours ago</span>
140+ <div class="newstitle">
141+ <a href="http://url.of.article/" target="_blank" h="ID=news,5022.1">
145+ <div class="sn_img">
146+ <a href="http://url.of.article2/" target="_blank" h="ID=news,5024.1">
147+ <img class="rms_img" height="80" id="emb1" src="/image.src" title="Title" width="80" />
150+ <div class="sn_txt">
152+ <span class="sn_snip">Article Content</span>
153+ <span class="sn_ST">
154+ <cite class="sn_src">metronews.fr</cite>
156+ <span class="sn_tm">2 days ago</span>
162+ <div class="newstitle">
163+ <a href="http://url.of.article/" target="_blank" h="ID=news,5022.1">
167+ <div class="sn_img">
168+ <a href="http://url.of.article2/" target="_blank" h="ID=news,5024.1">
169+ <img class="rms_img" height="80" id="emb1" src="/image.src" title="Title" width="80" />
172+ <div class="sn_txt">
174+ <span class="sn_snip">Article Content</span>
175+ <span class="sn_ST">
176+ <cite class="sn_src">metronews.fr</cite>
178+ <span class="sn_tm">27/01/2015</span>
184+ <div class="newstitle">
185+ <a href="http://url.of.article/" target="_blank" h="ID=news,5022.1">
189+ <div class="sn_img">
190+ <a href="http://url.of.article2/" target="_blank" h="ID=news,5024.1">
191+ <img class="rms_img" height="80" id="emb1" src="/image.src" title="Title" width="80" />
194+ <div class="sn_txt">
196+ <span class="sn_snip">Article Content</span>
197+ <span class="sn_ST">
198+ <cite class="sn_src">metronews.fr</cite>
200+ <span class="sn_tm">Il y a 3 heures</span>
206+ response = mock.Mock(content=html)
207+ results = bing_news.response(response)
208+ self.assertEqual(type(results), list)
209+ self.assertEqual(len(results), 6)
212+ <div class="newstitle">
213+ <a href="http://url.of.article/" target="_blank" h="ID=news,5022.1">
217+ <div class="sn_img">
218+ <a href="http://url.of.article2/" target="_blank" h="ID=news,5024.1">
219+ <img class="rms_img" height="80" id="emb1" src="/image.src" title="Title" width="80" />
222+ <div class="sn_txt">
224+ <span class="sn_snip">Article Content</span>
225+ <span class="sn_ST">
226+ <cite class="sn_src">metronews.fr</cite>
228+ <span class="sn_tm">44 minutes ago</span>
233+ response = mock.Mock(content=html)
234+ results = bing_news.response(response)
235+ self.assertEqual(type(results), list)
236+ self.assertEqual(len(results), 0)