@@ -87,18 +87,22 @@ def _backoff(op, *, delays=(0, 2, 5, 10, 20, 20)):
8787
8888def _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
104108def _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