Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/superannotate/lib/core/service_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,10 @@ def __init__(
except Exception:
response_json = dict()
if not response.ok:
data["_error"] = response_json.get("error", "Unknown Error")
error = response_json.get("error")
if not error:
error = response_json.get("errors", "Unknown Error")
data["_error"] = error
super().__init__(**data)
return
if dispatcher:
Expand Down
11 changes: 4 additions & 7 deletions src/superannotate/lib/core/usecases/custom_fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,10 @@ def execute(self) -> Response:
if response.ok:
self._response.data = response.data
else:
errors = [response.error]
if errors:
separator = "\n- "
report = separator + separator.join(errors)
else:
report = response.error
self._response.errors = report
error = response.error
if isinstance(error, list):
error = "-" + "\n-".join(error)
self._response.errors = error
return self._response


Expand Down
32 changes: 32 additions & 0 deletions tests/integration/custom_fields/test_custom_schema.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import copy

from src.superannotate import AppException
from src.superannotate import SAClient
from tests.integration.base import BaseTestCase

Expand Down Expand Up @@ -106,3 +107,34 @@ def test_get_item_metadata_without_custom_metadata(self):
sa.attach_items(self.PROJECT_NAME, [{"name": item_name, "url": item_name}])
item = sa.get_item_metadata(self.PROJECT_NAME, item_name)
assert "custom_metadata" not in item

def test_create_invalid(self):
INVALID_SCHEMA = {
"date": {"type": "sring", "format": "date"},
"date1": {"type": "string", "format": "dat"},
"patient_sex": {"type": "string", "enum": [2, "female"]},
"date_enum": {"type": "string", "format": "date", "enum": ["2022-03-29", "2022-03-29", "2022-05-29"]},
"date_enum1": {"type": "string", "format": "date", "enum": "2022-03-29"},
"date_enum2": {"type": "string", "format": "date", "enu": ["2022-03-29"]},
"medical_specialist": {"type": "string", "format": "email"},
"medical_specialist1": {"type": "string", "format": "email", "enum": ["email1@gmail.com", "2022-03-29"]},
"counts": {"type": "numbe"},
"age_min": {"type": "number", "minimum": "min"},
"age_range": {"type": "number", "minimum": 30, "maximum": 20, "enum": [20, 23, 120, 12.5, 0.5, -12.3]},
"age_enum": {"type": "number", "enum": ["string", "string1", "string2"]}
}
error_msg = (
"-Not supported field type for date.\n"
"-Spec value type of date1 is not valid.\n"
"-Spec value type of patient_sex is not valid.\n"
"-Spec values of date_enum should be unique.\n"
"-Spec value type of date_enum1 is not valid.\n"
"-Spec value type of medical_specialist1 is not valid.\n"
"-Not supported field type for counts.\n"
"-Spec value type of age_min is not valid.\n"
"-Maximum spec value of age_range can not be less than minimum value.\n"
"-Minimum spec value of age_range can not be higher than maximum value.\n"
"-Spec value type of age_enum is not valid."
)
with self.assertRaisesRegexp(AppException, error_msg):
sa.create_custom_fields(self.PROJECT_NAME, INVALID_SCHEMA)