def test_can_transition(self): sm = StateMachine() sm.add(State('online', is_starting_state=True)) sm.add(State('offline')) sm.add(State('error')) sm.add(Transition('online', ['offline', 'error'])) assert sm.can_transition_to('offline') assert sm.can_transition_to('error')
def test_cant_transition_without_starting_state(self): sm = StateMachine() sm.add(State('online')) sm.add(State('offline')) sm.add(State('error')) sm.add(Transition('online', ['offline', 'error'])) with pytest.raises(Exception): sm.can_transition_to('offline') sm.can_transition_to('error')
def test_transitions_arent_two_way(self): sm = StateMachine() sm.add(State('online', is_starting_state=True)) sm.add(State('offline')) sm.add(Transition('offline', ['online'])) assert not sm.can_transition_to('offline')
def test_cant_transition_where_cant_transition_to(self): sm = StateMachine() sm.add(State('online', is_starting_state=True)) sm.add(State('offline')) sm.add(Transition('offline', ['online'])) assert not sm.can_transition_to('offline') with pytest.raises(Exception): sm.transition_to('offline')
def test_cant_transition_to_undefined_state(self): sm = StateMachine() with pytest.raises(Exception): sm.can_transition_to('offline')