@@ -5184,6 +5184,18 @@ class TestModelSyncTrigger(tb.ModelTestCase):
51845184 }
51855185 );
51865186 };
5187+ type TriggerInsertComputed {
5188+ n: int64;
5189+ trigger update_target after insert
5190+ for each do (
5191+ update TestInsert
5192+ set {
5193+ val := .val + __new__.n
5194+ }
5195+ );
5196+
5197+ test_vals := TestInsert.val;
5198+ };
51875199 type TriggerInsertWithLink {
51885200 n: int64;
51895201 test: TestInsert;
@@ -5209,6 +5221,18 @@ class TestModelSyncTrigger(tb.ModelTestCase):
52095221 }
52105222 );
52115223 };
5224+ type TriggerUpdateComputed {
5225+ n: int64;
5226+ trigger update_target after update
5227+ for each do (
5228+ update TestUpdate
5229+ set {
5230+ val := .val + __new__.n
5231+ }
5232+ );
5233+
5234+ test_vals := TestUpdate.val;
5235+ };
52125236 """
52135237
52145238 def test_model_sync_trigger_insert_01 (self ):
@@ -5231,6 +5255,19 @@ def test_model_sync_trigger_insert_01(self):
52315255 self .assertEqual (test_obj .val , 6 )
52325256
52335257 def test_model_sync_trigger_insert_02 (self ):
5258+ # Insert trigger, computed modified by trigger
5259+ from models .TestModelSyncTrigger import default
5260+
5261+ test_obj = default .TestInsert (val = 0 )
5262+ trigger = default .TriggerInsertComputed (n = 1 )
5263+ self .client .sync (test_obj , trigger )
5264+ self .assertEqual (trigger .test_vals , (1 ,))
5265+
5266+ # Also check that the newly inserted object refetched its
5267+ # trigger modified value
5268+ self .assertEqual (test_obj .val , 1 )
5269+
5270+ def test_model_sync_trigger_insert_03 (self ):
52345271 # Insert trigger
52355272 # Link will cause test objs to be batched before trigger objs
52365273 from models .TestModelSyncTrigger import default
@@ -5268,3 +5305,15 @@ def test_model_sync_trigger_update_01(self):
52685305 trigger .n = 3
52695306 self .client .sync (test_obj , trigger )
52705307 self .assertEqual (test_obj .val , 6 )
5308+
5309+ def test_model_sync_trigger_update_02 (self ):
5310+ # Update trigger, computed modified by trigger
5311+ from models .TestModelSyncTrigger import default
5312+
5313+ test_obj = default .TestUpdate (val = 0 )
5314+ trigger = default .TriggerUpdateComputed (n = 0 )
5315+ self .client .sync (test_obj , trigger )
5316+
5317+ trigger .n = 1
5318+ self .client .sync (test_obj , trigger )
5319+ self .assertEqual (trigger .test_vals , (1 ,))
0 commit comments