Class: StateMachinesIntrospector
- Inherits:
-
Object
- Object
- StateMachinesIntrospector
- Defined in:
- lib/state_machines_rspec/state_machines_introspector.rb
Instance Method Summary collapse
- #all_states ⇒ Object
- #current_state_value ⇒ Object
- #defined_states(states) ⇒ Object
- #event_defined?(event) ⇒ Boolean
-
#initialize(subject, state_machine_name = nil) ⇒ StateMachinesIntrospector
constructor
A new instance of StateMachinesIntrospector.
- #invalid_events(events) ⇒ Object
- #state(name) ⇒ Object
- #state_machine_attribute ⇒ Object
- #undefined_events(events) ⇒ Object
- #undefined_states(states) ⇒ Object
- #valid_events(events) ⇒ Object
- #valid_transition?(event, to_state) ⇒ Boolean
Constructor Details
#initialize(subject, state_machine_name = nil) ⇒ StateMachinesIntrospector
Returns a new instance of StateMachinesIntrospector.
2 3 4 5 |
# File 'lib/state_machines_rspec/state_machines_introspector.rb', line 2 def initialize(subject, state_machine_name=nil) @subject = subject @state_machine_name = state_machine_name end |
Instance Method Details
#all_states ⇒ Object
15 16 17 |
# File 'lib/state_machines_rspec/state_machines_introspector.rb', line 15 def all_states state_machine.states.to_a.map(&:name) end |
#current_state_value ⇒ Object
11 12 13 |
# File 'lib/state_machines_rspec/state_machines_introspector.rb', line 11 def current_state_value @subject.send(state_machine_attribute) end |
#defined_states(states) ⇒ Object
27 28 29 |
# File 'lib/state_machines_rspec/state_machines_introspector.rb', line 27 def defined_states(states) states.select { |s| state_defined? s } end |
#event_defined?(event) ⇒ Boolean
43 44 45 |
# File 'lib/state_machines_rspec/state_machines_introspector.rb', line 43 def event_defined?(event) @subject.respond_to? "can_#{event}?" end |
#invalid_events(events) ⇒ Object
39 40 41 |
# File 'lib/state_machines_rspec/state_machines_introspector.rb', line 39 def invalid_events(events) events.reject { |e| valid_event? e } end |
#state(name) ⇒ Object
19 20 21 |
# File 'lib/state_machines_rspec/state_machines_introspector.rb', line 19 def state(name) state_machine.states.find { |s| s.name == name } end |
#state_machine_attribute ⇒ Object
7 8 9 |
# File 'lib/state_machines_rspec/state_machines_introspector.rb', line 7 def state_machine_attribute state_machine.attribute end |
#undefined_events(events) ⇒ Object
31 32 33 |
# File 'lib/state_machines_rspec/state_machines_introspector.rb', line 31 def undefined_events(events) events.reject { |e| event_defined? e } end |
#undefined_states(states) ⇒ Object
23 24 25 |
# File 'lib/state_machines_rspec/state_machines_introspector.rb', line 23 def undefined_states(states) states.reject { |s| state_defined? s } end |
#valid_events(events) ⇒ Object
35 36 37 |
# File 'lib/state_machines_rspec/state_machines_introspector.rb', line 35 def valid_events(events) events.select { |e| valid_event? e } end |
#valid_transition?(event, to_state) ⇒ Boolean
47 48 49 50 |
# File 'lib/state_machines_rspec/state_machines_introspector.rb', line 47 def valid_transition?(event, to_state) @subject.send(event) current_state_value == to_state end |