diff --git a/pyodata/v2/service.py b/pyodata/v2/service.py index 0da34632..e84d2f75 100644 --- a/pyodata/v2/service.py +++ b/pyodata/v2/service.py @@ -873,10 +873,12 @@ def __init__(self, service, entity_set, entity_type, proprties=None, entity_key= # if there are no entities available, received data consists of # metadata properties only. if 'results' in proprties[prop.name]: - # available entities are serialized in results array for entity in proprties[prop.name]['results']: self._cache[prop.name].append(EntityProxy(service, None, prop_etype, entity)) + else: + for entity in proprties[prop.name]: + self._cache[prop.name].append(EntityProxy(service, None, prop_etype, entity)) else: raise PyODataException('Unknown multiplicity {0} of association role {1}' .format(prop.to_role.multiplicity, prop.to_role.name)) diff --git a/tests/test_service_v2.py b/tests/test_service_v2.py index 7c70513c..bc4e0e37 100644 --- a/tests/test_service_v2.py +++ b/tests/test_service_v2.py @@ -1476,7 +1476,7 @@ def test_get_entity_not_encoded_path(service): @responses.activate -def test_get_entity_expanded(service): +def test_get_entity_expanded_with_results(service): """Check getting entities with expanded navigation properties""" # pylint: disable=redefined-outer-name @@ -1513,6 +1513,42 @@ def test_get_entity_expanded(service): assert emp.Addresses[0].Street == 'Baker Street' assert emp.Addresses[0].City == 'London' +@responses.activate +def test_get_entity_expanded(service): + """Check getting entities with expanded navigation properties""" + + # pylint: disable=redefined-outer-name + path = quote("Employees(23)") + responses.add( + responses.GET, + f"{service.url}/{path}", + json={'d': { + 'ID': 23, + 'NameFirst': 'Rob', + 'NameLast': 'Ickes', + 'Addresses': [ + { + 'ID': 456, + 'Street': 'Baker Street', + 'City': 'London' + } + ] + + }}, + status=200) + + request = service.entity_sets.Employees.get_entity(23) + assert isinstance(request, pyodata.v2.service.EntityGetRequest) + + emp = request.expand('Addresses').execute() + + assert emp.ID == 23 + assert emp.NameFirst == 'Rob' + assert emp.NameLast == 'Ickes' + + assert emp.Addresses[0].ID == 456 + assert emp.Addresses[0].Street == 'Baker Street' + assert emp.Addresses[0].City == 'London' @responses.activate def test_batch_request(service):