Skip to content

Commit

Permalink
remove get_icat_entity_name_as_camel_case
Browse files Browse the repository at this point in the history
  • Loading branch information
Reillyhewitson committed Dec 15, 2022
1 parent 86b9a11 commit e7b8794
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 65 deletions.
36 changes: 1 addition & 35 deletions datagateway_api/src/datagateway_api/icat/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,40 +145,6 @@ def refresh_client_session(client):
client.refresh()


def get_icat_entity_name_as_camel_case(client, entity_name):
"""
From the entity name, this function returns a camelCase version of its input
Due to the case sensitivity of Python ICAT, a camelCase version of the entity name
is required for creating ICAT entities in ICAT (e.g. `client.new("parameterType")`).
:param client: ICAT client containing an authenticated user
:type client: :class:`icat.client.Client`
:param entity_name: Entity name to fetch a camelCase version of
:type entity_name: :class:`str`
:return: Entity name (of type string) in the correct casing ready to be passed into
Python ICAT
:raises BadRequestError: If the entity cannot be found
"""

entity_names = getTypeMap(client).keys()
lowercase_entity_name = entity_name.lower()
python_icat_entity_name = None

for entity_name in entity_names:
lowercase_name = entity_name.lower()
if lowercase_name == lowercase_entity_name:
python_icat_entity_name = entity_name

# Raise a 400 if a valid entity cannot be found
if python_icat_entity_name is None:
raise BadRequestError(
f"Bad request made, cannot find {entity_name} entity within Python ICAT",
)

return python_icat_entity_name


def update_attributes(old_entity, new_entity):
"""
Updates the attribute(s) of a given object which is a record of an entity from
Expand Down Expand Up @@ -507,7 +473,7 @@ def create_entities(client, entity_type, data):
data = [data]

for result in data:
new_entity = client.new(get_icat_entity_name_as_camel_case(client, entity_type))
new_entity = client.new(entity_type.lower())

for attribute_name, value in result.items():
log.debug("Preparing data for %s", attribute_name)
Expand Down
31 changes: 1 addition & 30 deletions test/integration/datagateway_api/icat/test_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,41 +4,12 @@
import pytest

from datagateway_api.src.common.exceptions import BadRequestError, PythonICATError
from datagateway_api.src.datagateway_api.icat.helpers import (
get_icat_entity_name_as_camel_case,
push_data_updates_to_icat,
)
from datagateway_api.src.datagateway_api.icat.helpers import push_data_updates_to_icat


class TestICATHelpers:
"""Testing the helper functions which aren't covered in the endpoint tests"""

@pytest.mark.parametrize(
"input_entity_name, expected_entity_name",
[
pytest.param("User", "user", id="singular single word entity name"),
pytest.param(
"PublicStep", "publicstep", id="singular two word entity name",
),
pytest.param(
"PermissibleStringValue",
"permissiblestringvalue",
id="singular multi-word entity name",
),
],
)
def test_valid_get_icat_entity_name_as_camel_case(
self, icat_client, input_entity_name, expected_entity_name,
):
camel_case_entity_name = get_icat_entity_name_as_camel_case(
icat_client, input_entity_name,
)
assert camel_case_entity_name == expected_entity_name

def test_invalid_get_icat_entity_name_as_camel_case(self, icat_client):
with pytest.raises(BadRequestError):
get_icat_entity_name_as_camel_case(icat_client, "UnknownEntityName")

def test_invalid_update_pushes(self, icat_client):
with patch(
"icat.entity.Entity.update",
Expand Down

0 comments on commit e7b8794

Please sign in to comment.