1
1
from unittest import TestCase
2
2
import requests_mock
3
+ import json
3
4
4
5
from elastic_app_search import Client
5
6
from elastic_app_search .exceptions import InvalidDocument
6
7
8
+
7
9
class TestClient (TestCase ):
8
10
9
11
def setUp (self ):
@@ -16,15 +18,18 @@ def setUp(self):
16
18
)
17
19
18
20
def test_deprecated_init_support_with_old_names (self ):
19
- self .client = Client (account_host_key = 'host_identifier' , api_key = 'api_key' )
21
+ self .client = Client (
22
+ account_host_key = 'host_identifier' , api_key = 'api_key' )
20
23
self .assertEqual (self .client .account_host_key , 'host_identifier' )
21
24
22
25
def test_deprecated_init_support_with_new_names (self ):
23
- self .client = Client (host_identifier = 'host_identifier' , api_key = 'api_key' )
26
+ self .client = Client (
27
+ host_identifier = 'host_identifier' , api_key = 'api_key' )
24
28
self .assertEqual (self .client .account_host_key , 'host_identifier' )
25
29
26
30
def test_deprecated_init_support_with_positional (self ):
27
- self .client = Client ('host_identifier' , 'api_key' , 'example.com' , False )
31
+ self .client = Client ('host_identifier' , 'api_key' ,
32
+ 'example.com' , False )
28
33
self .assertEqual (self .client .account_host_key , 'host_identifier' )
29
34
30
35
def test_host_identifier_is_optional (self ):
@@ -41,7 +46,8 @@ def test_index_document_processing_error(self):
41
46
error = 'some processing error'
42
47
stubbed_return = [{'id' : 'something' , 'errors' : [error ]}]
43
48
with requests_mock .Mocker () as m :
44
- m .register_uri ('POST' , self .document_index_url , json = stubbed_return , status_code = 200 )
49
+ m .register_uri ('POST' , self .document_index_url ,
50
+ json = stubbed_return , status_code = 200 )
45
51
46
52
with self .assertRaises (InvalidDocument ) as context :
47
53
self .client .index_document (self .engine_name , invalid_document )
@@ -52,38 +58,44 @@ def test_index_document_no_error_key_in_response(self):
52
58
stubbed_return = [{'id' : 'auto generated' , 'errors' : []}]
53
59
54
60
with requests_mock .Mocker () as m :
55
- m .register_uri ('POST' , self .document_index_url , json = stubbed_return , status_code = 200 )
56
- response = self .client .index_document (self .engine_name , document_without_id )
61
+ m .register_uri ('POST' , self .document_index_url ,
62
+ json = stubbed_return , status_code = 200 )
63
+ response = self .client .index_document (
64
+ self .engine_name , document_without_id )
57
65
self .assertEqual (response , {'id' : 'auto generated' })
58
66
59
67
def test_index_documents (self ):
60
68
id = 'INscMGmhmX4'
61
69
valid_document = {'id' : id }
62
- other_document = { 'body' : 'some value' }
70
+ other_document = {'body' : 'some value' }
63
71
64
72
expected_return = [
65
73
{'id' : id , 'errors' : []},
66
74
{'id' : 'some autogenerated id' , 'errors' : []}
67
75
]
68
76
69
77
with requests_mock .Mocker () as m :
70
- m .register_uri ('POST' , self .document_index_url , json = expected_return , status_code = 200 )
71
- response = self .client .index_documents (self .engine_name , [valid_document , other_document ])
78
+ m .register_uri ('POST' , self .document_index_url ,
79
+ json = expected_return , status_code = 200 )
80
+ response = self .client .index_documents (
81
+ self .engine_name , [valid_document , other_document ])
72
82
self .assertEqual (response , expected_return )
73
83
74
84
def test_update_documents (self ):
75
85
id = 'INscMGmhmX4'
76
86
valid_document = {'id' : id }
77
- other_document = { 'body' : 'some value' }
87
+ other_document = {'body' : 'some value' }
78
88
79
89
expected_return = [
80
90
{'id' : id , 'errors' : []},
81
91
{'id' : 'some autogenerated id' , 'errors' : []}
82
92
]
83
93
84
94
with requests_mock .Mocker () as m :
85
- m .register_uri ('PATCH' , self .document_index_url , json = expected_return , status_code = 200 )
86
- response = self .client .update_documents (self .engine_name , [valid_document , other_document ])
95
+ m .register_uri ('PATCH' , self .document_index_url ,
96
+ json = expected_return , status_code = 200 )
97
+ response = self .client .update_documents (
98
+ self .engine_name , [valid_document , other_document ])
87
99
self .assertEqual (response , expected_return )
88
100
89
101
def test_get_documents (self ):
@@ -98,7 +110,8 @@ def test_get_documents(self):
98
110
]
99
111
100
112
with requests_mock .Mocker () as m :
101
- m .register_uri ('GET' , self .document_index_url , json = expected_return , status_code = 200 )
113
+ m .register_uri ('GET' , self .document_index_url ,
114
+ json = expected_return , status_code = 200 )
102
115
response = self .client .get_documents (self .engine_name , [id ])
103
116
self .assertEqual (response , expected_return )
104
117
@@ -113,14 +126,19 @@ def test_list_documents(self):
113
126
}
114
127
}
115
128
129
+ def match_request_text (request ):
130
+ data = json .loads (request .text )
131
+ return data ["page" ]["current" ] == 1 and data ["page" ]["size" ] == 20
132
+
116
133
with requests_mock .Mocker () as m :
117
- url = "{}/engines/{}/documents/list" .format (self .client .session .base_url , self .engine_name )
134
+ url = "{}/engines/{}/documents/list" .format (
135
+ self .client .session .base_url , self .engine_name )
118
136
m .register_uri ('GET' ,
119
- url ,
120
- additional_matcher = lambda x : x . text == '{"page": {"current": 1, "size": 20}}' ,
121
- json = expected_return ,
122
- status_code = 200
123
- )
137
+ url ,
138
+ additional_matcher = match_request_text ,
139
+ json = expected_return ,
140
+ status_code = 200
141
+ )
124
142
125
143
response = self .client .list_documents (self .engine_name )
126
144
self .assertEqual (response , expected_return )
@@ -132,7 +150,8 @@ def test_destroy_documents(self):
132
150
]
133
151
134
152
with requests_mock .Mocker () as m :
135
- m .register_uri ('DELETE' , self .document_index_url , json = expected_return , status_code = 200 )
153
+ m .register_uri ('DELETE' , self .document_index_url ,
154
+ json = expected_return , status_code = 200 )
136
155
response = self .client .destroy_documents (self .engine_name , [id ])
137
156
self .assertEqual (response , expected_return )
138
157
@@ -142,12 +161,13 @@ def test_get_schema(self):
142
161
}
143
162
144
163
with requests_mock .Mocker () as m :
145
- url = "{}/engines/{}/schema" .format (self .client .session .base_url , self .engine_name )
164
+ url = "{}/engines/{}/schema" .format (
165
+ self .client .session .base_url , self .engine_name )
146
166
m .register_uri ('GET' ,
147
- url ,
148
- json = expected_return ,
149
- status_code = 200
150
- )
167
+ url ,
168
+ json = expected_return ,
169
+ status_code = 200
170
+ )
151
171
152
172
response = self .client .get_schema (self .engine_name )
153
173
self .assertEqual (response , expected_return )
@@ -159,29 +179,35 @@ def test_update_schema(self):
159
179
}
160
180
161
181
with requests_mock .Mocker () as m :
162
- url = "{}/engines/{}/schema" .format (self .client .session .base_url , self .engine_name )
182
+ url = "{}/engines/{}/schema" .format (
183
+ self .client .session .base_url , self .engine_name )
163
184
m .register_uri ('POST' ,
164
- url ,
165
- json = expected_return ,
166
- status_code = 200
167
- )
185
+ url ,
186
+ json = expected_return ,
187
+ status_code = 200
188
+ )
168
189
169
- response = self .client .update_schema (self .engine_name , expected_return )
190
+ response = self .client .update_schema (
191
+ self .engine_name , expected_return )
170
192
self .assertEqual (response , expected_return )
171
193
172
194
def test_list_engines (self ):
173
195
expected_return = [
174
- { 'name' : 'myawesomeengine' }
196
+ {'name' : 'myawesomeengine' }
175
197
]
176
198
199
+ def match_request_text (request ):
200
+ data = json .loads (request .text )
201
+ return data ["page" ]["current" ] == 1 and data ["page" ]["size" ] == 20
202
+
177
203
with requests_mock .Mocker () as m :
178
204
url = "{}/{}" .format (self .client .session .base_url , 'engines' )
179
205
m .register_uri ('GET' ,
180
- url ,
181
- additional_matcher = lambda x : x . text == '{"page": {"current": 1, "size": 20}}' ,
182
- json = expected_return ,
183
- status_code = 200
184
- )
206
+ url ,
207
+ additional_matcher = match_request_text ,
208
+ json = expected_return ,
209
+ status_code = 200
210
+ )
185
211
response = self .client .list_engines ()
186
212
self .assertEqual (response , expected_return )
187
213
@@ -190,12 +216,16 @@ def test_list_engines_with_paging(self):
190
216
{'name' : 'myawesomeengine' }
191
217
]
192
218
219
+ def match_request_text (request ):
220
+ data = json .loads (request .text )
221
+ return data ["page" ]["current" ] == 10 and data ["page" ]["size" ] == 2
222
+
193
223
with requests_mock .Mocker () as m :
194
224
url = "{}/{}" .format (self .client .session .base_url , 'engines' )
195
225
m .register_uri (
196
226
'GET' ,
197
227
url ,
198
- additional_matcher = lambda x : x . text == '{"page": {"current": 10, "size": 2}}' ,
228
+ additional_matcher = match_request_text ,
199
229
json = expected_return ,
200
230
status_code = 200
201
231
)
@@ -205,7 +235,7 @@ def test_list_engines_with_paging(self):
205
235
def test_get_engine (self ):
206
236
engine_name = 'myawesomeengine'
207
237
expected_return = [
208
- { 'name' : engine_name }
238
+ {'name' : engine_name }
209
239
]
210
240
211
241
with requests_mock .Mocker () as m :
@@ -234,7 +264,8 @@ def test_destroy_engine(self):
234
264
url = "{}/{}/{}" .format (self .client .session .base_url ,
235
265
'engines' ,
236
266
engine_name )
237
- m .register_uri ('DELETE' , url , json = expected_return , status_code = 200 )
267
+ m .register_uri ('DELETE' , url , json = expected_return ,
268
+ status_code = 200 )
238
269
response = self .client .destroy_engine (engine_name )
239
270
self .assertEqual (response , expected_return )
240
271
@@ -278,10 +309,15 @@ def test_list_synonym_sets(self):
278
309
self .client .session .base_url ,
279
310
self .engine_name
280
311
)
312
+
313
+ def match_request_text (request ):
314
+ data = json .loads (request .text )
315
+ return data ["page" ]["current" ] == 1 and data ["page" ]["size" ] == 20
316
+
281
317
m .register_uri (
282
318
'GET' ,
283
319
url ,
284
- additional_matcher = lambda x : x . text == '{"page": {"current": 1, "size": 20}}' ,
320
+ additional_matcher = match_request_text ,
285
321
json = expected_return ,
286
322
status_code = 200
287
323
)
@@ -404,7 +440,7 @@ def test_destroy_synonym_set(self):
404
440
405
441
def test_search (self ):
406
442
query = 'query'
407
- expected_return = { 'meta' : {}, 'results' : []}
443
+ expected_return = {'meta' : {}, 'results' : []}
408
444
409
445
with requests_mock .Mocker () as m :
410
446
url = "{}/{}" .format (
@@ -416,7 +452,8 @@ def test_search(self):
416
452
self .assertEqual (response , expected_return )
417
453
418
454
def test_multi_search (self ):
419
- expected_return = [{ 'meta' : {}, 'results' : []}, { 'meta' : {}, 'results' : []}]
455
+ expected_return = [{'meta' : {}, 'results' : []},
456
+ {'meta' : {}, 'results' : []}]
420
457
421
458
with requests_mock .Mocker () as m :
422
459
url = "{}/{}" .format (
@@ -429,15 +466,16 @@ def test_multi_search(self):
429
466
430
467
def test_query_suggestion (self ):
431
468
query = 'query'
432
- expected_return = { 'meta' : {}, 'results' : {}}
469
+ expected_return = {'meta' : {}, 'results' : {}}
433
470
434
471
with requests_mock .Mocker () as m :
435
472
url = "{}/{}" .format (
436
473
self .client .session .base_url ,
437
474
"engines/{}/query_suggestion" .format (self .engine_name )
438
475
)
439
476
m .register_uri ('GET' , url , json = expected_return , status_code = 200 )
440
- response = self .client .query_suggestion (self .engine_name , query , {})
477
+ response = self .client .query_suggestion (
478
+ self .engine_name , query , {})
441
479
self .assertEqual (response , expected_return )
442
480
443
481
def test_click (self ):
@@ -447,4 +485,5 @@ def test_click(self):
447
485
"engines/{}/click" .format (self .engine_name )
448
486
)
449
487
m .register_uri ('POST' , url , json = {}, status_code = 200 )
450
- self .client .click (self .engine_name , {'query' : 'cat' , 'document_id' : 'INscMGmhmX4' })
488
+ self .client .click (self .engine_name , {
489
+ 'query' : 'cat' , 'document_id' : 'INscMGmhmX4' })
0 commit comments