-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearches.py
104 lines (92 loc) · 3.46 KB
/
searches.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import respx
from httpx import Response
from blocket_api.blocket import BASE_URL, BlocketAPI, Region
api = BlocketAPI("token")
@respx.mock
def test_saved_searches():
"""
Make sure mobility saved searches are merged with v2/searches.
"""
respx.get(f"{BASE_URL}/saved/v2/searches").mock(
return_value=Response(
status_code=200,
json={
"data": [
{"id": "1", "name": '"buggy", Bilar säljes i hela Sverige'},
{"id": "2", "name": "Cyklar säljes i flera kommuner"},
],
},
),
)
respx.get(f"{BASE_URL}/mobility-saved-searches/v1/searches").mock(
return_value=Response(
status_code=200,
json={"data": [{"id": "3", "name": "Bilar säljes i hela Sverige"}]},
),
)
assert api.saved_searches() == [
{"id": "1", "name": '"buggy", Bilar säljes i hela Sverige'},
{"id": "2", "name": "Cyklar säljes i flera kommuner"},
{"id": "3", "name": "Bilar säljes i hela Sverige"},
]
@respx.mock
def test_for_search_id():
respx.get(f"{BASE_URL}/saved/v2/searches_content/123?lim=99").mock(
return_value=Response(status_code=200, json={"data": "listings-data"}),
)
assert api.get_listings(search_id=123) == {"data": "listings-data"}
@respx.mock
def test_for_search_id_mobility():
respx.get(f"{BASE_URL}/saved/v2/searches_content/123?lim=99").mock(
return_value=Response(status_code=404),
)
respx.get(f"{BASE_URL}/mobility-saved-searches/v1/searches/123/ads?lim=99").mock(
return_value=Response(status_code=200, json={"data": "mobility-data"}),
)
assert api.get_listings(search_id=123) == {"data": "mobility-data"}
@respx.mock
def test_custom_search():
respx.get(
f"{BASE_URL}/search_bff/v2/content?lim=99&q=saab&r=20&status=active"
).mock(
return_value=Response(status_code=200, json={"data": {"location": "halland"}}),
)
assert api.custom_search("saab", Region.halland) == {
"data": {"location": "halland"}
}
class Test_MotorSearchURLs:
@respx.mock
def test_make_filter(self):
expected_url_filter = '?filter={"key": "make", "values": ["Audi", "Toyota"]}'
respx.get(
f"{BASE_URL}/motor-search-service/v4/search/car"
f"{expected_url_filter}"
"&page=1"
).mock(
return_value=Response(status_code=200, json={"data": "ok"}),
)
assert api.motor_search(page=1, make=["Audi", "Toyota"]) == {"data": "ok"}
@respx.mock
def test_range_filters(self):
expected_url_filter = (
'?filter={"key": "make", "values": ["Ford"]}'
'&filter={"key": "price", "range": {"start": "1000", "end": "2000"}}'
'&filter={"key": "modelYear", "range": {"start": "1995", "end": "2000"}}'
'&filter={"key": "milage", "range": {"start": "1000", "end": "5000"}}'
'&filter={"key": "gearbox", "values": "Manuell"}'
)
respx.get(
f"{BASE_URL}/motor-search-service/v4/search/car"
f"{expected_url_filter}"
"&page=5"
).mock(
return_value=Response(status_code=200, json={"data": "ok"}),
)
assert api.motor_search(
page=5,
make=["Ford"],
price=(1000, 2000),
modelYear=(1995, 2000),
milage=(1000, 5000),
gearbox="Manuell",
) == {"data": "ok"}