Skip to content

Commit ff693ba

Browse files
committed
Fixing __str__ issues with MeiliSearchApiError
1 parent e8357a4 commit ff693ba

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

meilisearch/errors.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ class MeiliSearchApiError(MeiliSearchError):
1717

1818
def __init__(self, error: str, request: Response) -> None:
1919
self.status_code = request.status_code
20+
self.error_code = None
21+
self.error_link = None
22+
2023
if request.text:
2124
self.message = f'{json.loads(request.text)["message"]}'
2225
self.error_code = f'{json.loads(request.text)["errorCode"]}'
@@ -26,7 +29,10 @@ def __init__(self, error: str, request: Response) -> None:
2629
super().__init__(self.message)
2730

2831
def __str__(self) -> str:
29-
return f'MeiliSearchApiError. Error code: {self.error_code}. Error message: {self.message}. Error documentation: {self.error_link}'
32+
if self.error_code and self.error_link:
33+
return f'MeiliSearchApiError. Error code: {self.error_code}. Error message: {self.message}. Error documentation: {self.error_link}'
34+
35+
return f'MeiliSearchApiError. {self.message}'
3036

3137
class MeiliSearchCommunicationError(MeiliSearchError):
3238
"""Error when connecting to MeiliSearch"""

meilisearch/tests/errors/test_api_error_meilisearch.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# pylint: disable=invalid-name
22

3+
from unittest.mock import patch
34
import pytest
5+
import requests
46
import meilisearch
57
from meilisearch.errors import MeiliSearchApiError
68
from meilisearch.tests import BASE_URL, MASTER_KEY
@@ -14,3 +16,15 @@ def test_meilisearch_api_error_wrong_master_key():
1416
client = meilisearch.Client(BASE_URL, MASTER_KEY + '123')
1517
with pytest.raises(MeiliSearchApiError):
1618
client.create_index("some_index")
19+
20+
@patch('requests.post')
21+
def test_meilisearch_api_error_no_error_code(mock_post):
22+
"""Here to test for regressions related to https://github.com/meilisearch/meilisearch-python/issues/305."""
23+
24+
mock_response = requests.models.Response()
25+
mock_response.status_code = 408
26+
mock_post.return_value = mock_response
27+
28+
with pytest.raises(MeiliSearchApiError):
29+
client = meilisearch.Client(BASE_URL, MASTER_KEY + '123')
30+
client.create_index('some_index')

0 commit comments

Comments
 (0)