Skip to content

Commit fd465ec

Browse files
authored
FIX: Search Results not changing even with different Queries and Engine (#96)
1 parent 3e39d1a commit fd465ec

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

search_engine_parser/core/base.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ class SearchResult():
6161
6262
It can be iterated like a normal list to return individual SearchItem
6363
"""
64-
# Hold the results
65-
results = []
66-
# This method is inefficient, it will be in Deprecation soon
64+
65+
def __init__(self):
66+
self.results = []
6767

6868
def append(self, value):
6969
self.results.append(value)
@@ -196,6 +196,7 @@ async def get_soup(self, url, cache):
196196
197197
:rtype: `bs4.element.ResultSet`
198198
"""
199+
print(url, cache)
199200
html = await self.get_source(url, cache)
200201
return BeautifulSoup(html, 'lxml')
201202

search_engine_parser/tests/test_base.py

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ class EngineBaseTest(unittest.TestCase):
4747
4848
provides tests for engine methods
4949
"""
50+
@classmethod
51+
def vcr_search(cls, *args, **kwargs):
52+
with vcr.use_cassette('fixtures/{}-synopsis.yaml'.format(cls.name), record_mode='once'):
53+
cls.results = cls.engine.search(*args, **kwargs)
5054

5155
def setUp(self):
5256
from search_engine_parser.core.engines.google import Search # pylint: disable=import-outside-toplevel
@@ -57,11 +61,28 @@ def setUp(self):
5761
def test_urls(self, get_results_mock, get_soup_mock):
5862
""" Test that url updates work fine """
5963
self.engine.search(query="hello", url="google.com.tr")
60-
self.assertTrue(validate_url(self.engine._parsed_url.geturl()))
64+
first_url = self.engine._parsed_url.geturl()
65+
self.assertTrue(validate_url(first_url))
6166

62-
self.engine.search(query="hello", url="https://google.com.tr")
63-
self.assertTrue(validate_url(self.engine._parsed_url.geturl()))
67+
self.engine.search(query="World", url="https://google.com.tr")
68+
second_url = self.engine._parsed_url.geturl()
69+
self.assertTrue(validate_url(second_url))
6470

71+
self.assertNotEqual(second_url, first_url)
72+
73+
# Test for https://github.com/bisoncorps/search-engine-parser/issues/92
74+
def test_two_queries_different_results(self):
75+
""" Test that url updates work fine """
76+
from search_engine_parser.core.engines.google import Search as GoogleSearch # pylint: disable=import-outside-toplevel
77+
from search_engine_parser.core.engines.yahoo import Search as YahooSearch # pylint: disable=import-outside-toplevel
78+
gengine = GoogleSearch()
79+
yahoo_engine = YahooSearch()
80+
gresults = gengine.search(query="Hello From the Other Side")
81+
yresults = yahoo_engine.search(query="this is example Bob")
82+
for key in gresults[0]:
83+
self.assertNotEqual(gresults[0].get(key, "GSearch"), yresults[0].get(key, "Ysearch"))
84+
85+
self.assertNotEqual(gresults, yresults)
6586

6687
# pylint: disable=no-member
6788
@parameterized_class(('name', 'engine'), get_engines())
@@ -82,16 +103,16 @@ def setUpClass(cls):
82103
raise unittest.SkipTest(
83104
'{} failed due to traffic'.format(
84105
cls.engine))
85-
106+
86107
@classmethod
87108
def vcr_search(cls, *args, **kwargs):
88109
with vcr.use_cassette('fixtures/{}-synopsis.yaml'.format(cls.name), record_mode='once'):
89110
cls.results = cls.engine.search(*args, **kwargs)
90-
111+
91112
@classmethod
92113
def test_cache_used(cls):
93114
"""
94-
Test that the cache was used
115+
Test that the cache was used
95116
"""
96117
try:
97118
cls.vcr_search(*SEARCH_ARGS)
@@ -106,7 +127,7 @@ def test_cache_used(cls):
106127
@classmethod
107128
def test_cache_not_used(cls):
108129
"""
109-
Test that the cache was used
130+
Test that the cache was used
110131
"""
111132
search_args = ('Another random test', 1)
112133
try:

0 commit comments

Comments
 (0)