@@ -5268,7 +5268,6 @@ def _testcase(
52685268 _testcase (1 , None , 2 )
52695269 _testcase (1 , 0 , 2 )
52705270
5271- @tb .xfail # rewritten link is not refetched
52725271 def test_model_sync_rewrite_insert_02 (self ):
52735272 # Insert, link with rewrite
52745273
@@ -5284,7 +5283,14 @@ def _testcase(
52845283
52855284 self .assertNotEqual (original .target , insert_target )
52865285 assert original .target is not None
5287- self .assertEqual (original .target .n , expected_val )
5286+ self .assertFalse (hasattr (original .target , 'n' ))
5287+
5288+ rewritten_target = self .client .query_required_single (
5289+ default .Target .select (n = True )
5290+ .filter (id = original .target .id )
5291+ .limit (1 )
5292+ )
5293+ self .assertEqual (rewritten_target .n , expected_val )
52885294
52895295 # cleanup
52905296 self .client .query (default .SingleLink .delete ())
@@ -5293,8 +5299,13 @@ def _testcase(
52935299 self .client .save (target_zero )
52945300
52955301 _testcase (None , None , None )
5296- _testcase (1 , None , 2 )
5297- _testcase (1 , target_zero , 2 )
5302+
5303+ # Normally we might expect the rewrite to be 1+1 because this is an
5304+ # insert. However, sync currently splits adding links to a separate
5305+ # batch query, making it an update. This is surprising, but everything
5306+ # about rewrites is surprising.
5307+ _testcase (1 , None , 3 )
5308+ _testcase (1 , target_zero , 3 )
52985309
52995310 def test_model_sync_rewrite_update_01 (self ):
53005311 # Update, property with rewrite
@@ -5354,7 +5365,6 @@ def _testcase(
53545365 _testcase (1 , 1 , 3 )
53555366 _testcase (1 , 9 , 11 )
53565367
5357- @tb .xfail # rewritten link is not refetched
53585368 def test_model_sync_rewrite_update_03 (self ):
53595369 # Update, link with rewrite
53605370 # Only update the rewrite field
@@ -5383,7 +5393,14 @@ def _testcase(
53835393 self .assertNotEqual (original .target , insert_target )
53845394 self .assertNotEqual (original .target , update_target )
53855395 assert original .target is not None
5386- self .assertEqual (original .target .n , expected_val )
5396+ self .assertFalse (hasattr (original .target , 'n' ))
5397+
5398+ rewritten_target = self .client .query_required_single (
5399+ default .Target .select (n = True )
5400+ .filter (id = original .target .id )
5401+ .limit (1 )
5402+ )
5403+ self .assertEqual (rewritten_target .n , expected_val )
53875404
53885405 # cleanup
53895406 self .client .query (default .SingleLink .delete ())
@@ -5394,7 +5411,6 @@ def _testcase(
53945411 _testcase (1 , None , 3 )
53955412 _testcase (1 , target_one , 3 )
53965413
5397- @tb .xfail # rewritten link is not refetched
53985414 def test_model_sync_rewrite_update_04 (self ):
53995415 # Update, link with rewrite
54005416 # Only update other field
@@ -5422,7 +5438,14 @@ def _testcase(
54225438
54235439 self .assertNotEqual (original .target , insert_target )
54245440 assert original .target is not None
5425- self .assertEqual (original .target .n , expected_val )
5441+ self .assertFalse (hasattr (original .target , 'n' ))
5442+
5443+ rewritten_target = self .client .query_required_single (
5444+ default .Target .select (n = True )
5445+ .filter (id = original .target .id )
5446+ .limit (1 )
5447+ )
5448+ self .assertEqual (rewritten_target .n , expected_val )
54265449
54275450 # cleanup
54285451 self .client .query (default .SingleLink .delete ())
0 commit comments