File tree 1 file changed +36
-0
lines changed
1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -485,6 +485,42 @@ def to(self):
485
485
self .assertTrue (mock .called )
486
486
self .assertTrue (model2 .is_B ())
487
487
488
+ def test_nested_model (self ):
489
+ """Transition into a nested state using a parent model also changes the state of the nested model"""
490
+ class NestedModel :
491
+ def __init__ (self ):
492
+ self .machine = HierarchicalMachine (
493
+ states = ['a' , 'b' ],
494
+ transitions = [{'trigger' : 'subgo' , 'source' : 'a' , 'dest' : 'b' }],
495
+ model = self
496
+ )
497
+
498
+ class Model :
499
+ def __init__ (self , child ):
500
+ self .machine = HierarchicalMachine0 (
501
+ states = [
502
+ {'name' : 'A' },
503
+ {'name' : 'B' , 'children' : child .machine }
504
+ ],
505
+ transitions = [
506
+ {'trigger' : 'go' , 'source' : 'A' , 'dest' : 'B_a' },
507
+ {'trigger' : 'go' , 'source' : 'B_b' , 'dest' : 'A' },
508
+ ],
509
+ model = self ,
510
+ initial = 'A' )
511
+
512
+ child = NestedModel ()
513
+ model = Model (child )
514
+ assert model .is_A ()
515
+ model .go ()
516
+ assert model .is_B_a ()
517
+ assert child .is_a ()
518
+ model .subgo ()
519
+ assert model .is_B_b ()
520
+ assert child .is_b ()
521
+ model .go ()
522
+ assert model .is_A ()
523
+
488
524
def test_trigger_parent (self ):
489
525
parent_mock = MagicMock ()
490
526
exit_mock = MagicMock ()
You can’t perform that action at this time.
0 commit comments