File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -485,6 +485,42 @@ def to(self):
485485 self .assertTrue (mock .called )
486486 self .assertTrue (model2 .is_B ())
487487
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 = HierarchicalMachine (
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+
488524 def test_trigger_parent (self ):
489525 parent_mock = MagicMock ()
490526 exit_mock = MagicMock ()
You can’t perform that action at this time.
0 commit comments