Add simple test for extracting error title

CURA-7959
This commit is contained in:
Jaime van Kessel 2021-04-26 11:38:59 +02:00
parent 32ec72a28c
commit cf8113608f
No known key found for this signature in database
GPG key ID: 3710727397403C91
3 changed files with 39 additions and 1 deletions

View file

@ -2,6 +2,7 @@
# Cura is released under the terms of the LGPLv3 or higher. # Cura is released under the terms of the LGPLv3 or higher.
import json import json
import threading import threading
from json import JSONDecodeError
from typing import List, Dict, Any, Callable, Union, Optional from typing import List, Dict, Any, Callable, Union, Optional
from PyQt5.QtCore import QUrl from PyQt5.QtCore import QUrl
@ -271,7 +272,11 @@ class DFFileExportAndUploadManager:
def extractErrorTitle(reply_body: Optional[str]) -> str: def extractErrorTitle(reply_body: Optional[str]) -> str:
error_title = "" error_title = ""
if reply_body: if reply_body:
reply_dict = json.loads(reply_body) try:
reply_dict = json.loads(reply_body)
except JSONDecodeError:
Logger.logException("w", "Unable to extract title from reply body")
return error_title
if "errors" in reply_dict and len(reply_dict["errors"]) >= 1 and "title" in reply_dict["errors"][0]: if "errors" in reply_dict and len(reply_dict["errors"]) >= 1 and "title" in reply_dict["errors"][0]:
error_title = reply_dict["errors"][0]["title"] error_title = reply_dict["errors"][0]["title"]
return error_title return error_title

View file

@ -0,0 +1,32 @@
from unittest.mock import MagicMock, patch
import pytest
from src.DFFileExportAndUploadManager import DFFileExportAndUploadManager
@pytest.fixture
def upload_manager():
file_handler = MagicMock(name = "file_handler")
node = MagicMock(name = "SceneNode")
application = MagicMock(name = "CuraApplication")
with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)):
return DFFileExportAndUploadManager(file_handlers = {"test": file_handler},
nodes = [node],
library_project_id = "test_library_project_id",
library_project_name = "test_library_project_name",
file_name = "file_name",
formats = ["3mf"],
on_upload_error = MagicMock(),
on_upload_success = MagicMock(),
on_upload_finished = MagicMock(),
on_upload_progress = MagicMock())
@pytest.mark.parametrize("input,expected_result",
[("", ""),
("invalid json! {}", ""),
("{\"errors\": [{}]}", ""),
("{\"errors\": [{\"title\": \"some title\"}]}", "some title")])
def test_extractErrorTitle(upload_manager, input, expected_result):
assert upload_manager.extractErrorTitle(input) == expected_result

View file

@ -18,6 +18,7 @@ def pagination_manager():
manager = MagicMock(name = "Mocked Pagination Manager") manager = MagicMock(name = "Mocked Pagination Manager")
return manager return manager
@pytest.fixture @pytest.fixture
def api_client(application, pagination_manager): def api_client(application, pagination_manager):
api_client = DigitalFactoryApiClient(application, MagicMock()) api_client = DigitalFactoryApiClient(application, MagicMock())