Skip to content

Commit dc649f4

Browse files
authored
Fix #262 (#264)
* Fix #262 Deferred nav properties were instantiated as entity proxies. With this change only expanded nav properties are instantiated. * Expand comment on new test
1 parent 0d5c9da commit dc649f4

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

pyodata/v2/service.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -876,7 +876,7 @@ def __init__(self, service, entity_set, entity_type, proprties=None, entity_key=
876876
# available entities are serialized in results array
877877
for entity in proprties[prop.name]['results']:
878878
self._cache[prop.name].append(EntityProxy(service, None, prop_etype, entity))
879-
else:
879+
elif isinstance(proprties[prop.name], list):
880880
for entity in proprties[prop.name]:
881881
self._cache[prop.name].append(EntityProxy(service, None, prop_etype, entity))
882882
else:

tests/test_service_v2.py

+33-1
Original file line numberDiff line numberDiff line change
@@ -883,6 +883,38 @@ def test_get_entities(service):
883883
assert empls[0].NameFirst == 'Yennefer'
884884
assert empls[0].NameLast == 'De Vengerberg'
885885

886+
@responses.activate
887+
def test_get_entities_with_deferred_nav_prop(service):
888+
"""Get entities but don't include deferred navigation property"""
889+
890+
# pylint: disable=redefined-outer-name
891+
892+
responses.add(
893+
responses.GET,
894+
f"{service.url}/Employees",
895+
json={'d': {
896+
'results': [
897+
{
898+
'ID': 669,
899+
'NameFirst': 'Yennefer',
900+
'NameLast': 'De Vengerberg',
901+
'Addresses': {
902+
'__deferred': {'uri': "https://remote.url/Employees(23)/Addresses"}
903+
}
904+
}
905+
]
906+
}},
907+
status=200)
908+
909+
request = service.entity_sets.Employees.get_entities()
910+
911+
assert isinstance(request, pyodata.v2.service.QueryRequest)
912+
913+
empls = request.execute()
914+
assert empls[0].ID == 669
915+
assert empls[0].NameFirst == 'Yennefer'
916+
assert empls[0].NameLast == 'De Vengerberg'
917+
assert len(empls[0].Addresses) == 0
886918

887919
@responses.activate
888920
def test_get_null_value_from_null_preserving_service(service_retain_null):
@@ -1533,7 +1565,6 @@ def test_get_entity_expanded(service):
15331565
'City': 'London'
15341566
}
15351567
]
1536-
15371568
}},
15381569
status=200)
15391570

@@ -1549,6 +1580,7 @@ def test_get_entity_expanded(service):
15491580
assert emp.Addresses[0].ID == 456
15501581
assert emp.Addresses[0].Street == 'Baker Street'
15511582
assert emp.Addresses[0].City == 'London'
1583+
15521584

15531585
@responses.activate
15541586
def test_batch_request(service):

0 commit comments

Comments
 (0)