mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Add simple test for extracting error title
CURA-7959
This commit is contained in:
parent
32ec72a28c
commit
cf8113608f
3 changed files with 39 additions and 1 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue