Skip to content

Commit 0e7aa93

Browse files
author
Saurabh Badenkal
committed
Address PR review: use server_nav_prop consistently, capture last_exc in _wait_for_table
1 parent 6d6b7a8 commit 0e7aa93

1 file changed

Lines changed: 12 additions & 8 deletions

File tree

tests/e2e/test_relationships_e2e.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,18 +87,22 @@ def _backoff(op, *, delays=(0, 2, 5, 10, 20, 20)):
8787

8888
def _wait_for_table(client, schema_name, retries=15, delay=3):
8989
"""Poll until table metadata is available."""
90+
last_exc = None
9091
for attempt in range(1, retries + 1):
9192
try:
9293
info = client.tables.get(schema_name)
9394
if info and info.get("entity_set_name"):
9495
odata = client._get_odata()
9596
odata._entity_set_from_schema_name(schema_name)
9697
return info
97-
except Exception:
98-
pass
98+
except Exception as exc:
99+
last_exc = exc
99100
if attempt < retries:
100101
time.sleep(delay)
101-
raise RuntimeError(f"Table {schema_name} metadata not available after {retries} attempts")
102+
msg = f"Table {schema_name} metadata not available after {retries} attempts"
103+
if last_exc:
104+
raise RuntimeError(msg) from last_exc
105+
raise RuntimeError(msg)
102106

103107

104108
def _wait_for_relationship(client, schema_name, retries=15, delay=3):
@@ -381,7 +385,6 @@ def setup_and_teardown(self, client):
381385
# Get server-assigned navigation property name
382386
rel_info = _wait_for_relationship(client, self.REL_NAME)
383387
self.server_nav_prop = rel_info.lookup_schema_name
384-
self.bind_nav_prop = self.rel_result.lookup_schema_name
385388
self.lookup_value_key = f"_{self.server_nav_prop.lower()}_value"
386389

387390
# Wait for lookup column to become queryable (instead of hard-coded sleep)
@@ -395,8 +398,9 @@ def setup_and_teardown(self, client):
395398
self.p1_id = _backoff(lambda: client.records.create(self.PARENT, {"new_parname": "Alpha Corp"}))
396399
self.p2_id = _backoff(lambda: client.records.create(self.PARENT, {"new_parname": "Beta Inc"}))
397400

398-
# Create child records
399-
nav = self.bind_nav_prop
401+
# Create child records -- use server_nav_prop for @odata.bind
402+
# (server-assigned nav prop is authoritative for case-sensitive OData operations)
403+
nav = self.server_nav_prop
400404
es = self.entity_set
401405
p1 = self.p1_id
402406
p2 = self.p2_id
@@ -508,7 +512,7 @@ def test_update_lookup_binding(self, client):
508512
self.CHILD,
509513
self.c1_id,
510514
{
511-
f"{self.bind_nav_prop}@odata.bind": f"/{self.entity_set}({self.p2_id})",
515+
f"{self.server_nav_prop}@odata.bind": f"/{self.entity_set}({self.p2_id})",
512516
},
513517
)
514518
updated = client.records.get(self.CHILD, self.c1_id)
@@ -519,7 +523,7 @@ def test_update_lookup_binding(self, client):
519523
self.CHILD,
520524
self.c1_id,
521525
{
522-
f"{self.bind_nav_prop}@odata.bind": f"/{self.entity_set}({self.p1_id})",
526+
f"{self.server_nav_prop}@odata.bind": f"/{self.entity_set}({self.p1_id})",
523527
},
524528
)
525529

0 commit comments

Comments
 (0)