@@ -252,6 +252,42 @@ async def on_change(event):
252
252
assert message_ref .current == "this is a test"
253
253
254
254
255
+ def test_double_set_state (driver , display ):
256
+ @idom .component
257
+ def SomeComponent ():
258
+ state_1 , set_state_1 = idom .hooks .use_state (0 )
259
+ state_2 , set_state_2 = idom .hooks .use_state (0 )
260
+
261
+ def double_set_state (event ):
262
+ set_state_1 (state_1 + 1 )
263
+ set_state_2 (state_2 + 1 )
264
+
265
+ return idom .html .div (
266
+ idom .html .div ({"id" : "first" , "value" : state_1 }, f"value is: { state_1 } " ),
267
+ idom .html .div ({"id" : "second" , "value" : state_2 }, f"value is: { state_2 } " ),
268
+ idom .html .button ({"id" : "button" , "onClick" : double_set_state }, "click me" ),
269
+ )
270
+
271
+ display (SomeComponent )
272
+
273
+ button = driver .find_element_by_id ("button" )
274
+ first = driver .find_element_by_id ("first" )
275
+ second = driver .find_element_by_id ("second" )
276
+
277
+ assert first .get_attribute ("value" ) == "0"
278
+ assert second .get_attribute ("value" ) == "0"
279
+
280
+ button .click ()
281
+
282
+ assert first .get_attribute ("value" ) == "1"
283
+ assert second .get_attribute ("value" ) == "1"
284
+
285
+ button .click ()
286
+
287
+ assert first .get_attribute ("value" ) == "2"
288
+ assert second .get_attribute ("value" ) == "2"
289
+
290
+
255
291
async def test_use_effect_callback_occurs_after_full_render_is_complete ():
256
292
effect_triggered = idom .Ref (False )
257
293
effect_triggers_after_final_render = idom .Ref (None )
0 commit comments