class StateMachinesIntrospector
Public Class Methods
new(subject, state_machine_name=nil)
click to toggle source
# 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
Public Instance Methods
all_states()
click to toggle source
# 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()
click to toggle source
# File lib/state_machines_rspec/state_machines_introspector.rb, line 11 def current_state_value @subject.send(state_machine_attribute) end
defined_states(states)
click to toggle source
# 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)
click to toggle source
# File lib/state_machines_rspec/state_machines_introspector.rb, line 43 def event_defined?(event) @subject.respond_to? "can_#{event}?" end
invalid_events(events)
click to toggle source
# File lib/state_machines_rspec/state_machines_introspector.rb, line 39 def invalid_events(events) events.reject { |e| valid_event? e } end
state(name)
click to toggle source
# 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()
click to toggle source
# File lib/state_machines_rspec/state_machines_introspector.rb, line 7 def state_machine_attribute state_machine.attribute end
undefined_events(events)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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
Private Instance Methods
state_defined?(state_name)
click to toggle source
# File lib/state_machines_rspec/state_machines_introspector.rb, line 68 def state_defined?(state_name) state(state_name) end
state_machine()
click to toggle source
# File lib/state_machines_rspec/state_machines_introspector.rb, line 54 def state_machine if @state_machine_name unless machine = @subject.class.state_machines[@state_machine_name] raise StateMachinesIntrospectorError, "#{@subject.class} does not have a state machine defined " \ "on #{@state_machine_name}" end else machine = @subject.class.state_machine end machine end
valid_event?(event)
click to toggle source
# File lib/state_machines_rspec/state_machines_introspector.rb, line 72 def valid_event?(event) @subject.send("can_#{event}?") end