class StateMachineIntrospector
Public Class Methods
new(subject, state_machine_name=nil)
click to toggle source
# File lib/state_machine_rspec/state_machine_introspector.rb, line 2 def initialize(subject, state_machine_name=nil) @subject = subject @state_machine_name = state_machine_name end
Public Instance Methods
current_state_value()
click to toggle source
# File lib/state_machine_rspec/state_machine_introspector.rb, line 11 def current_state_value @subject.send(state_machine_attribute) end
defined_states(states)
click to toggle source
# File lib/state_machine_rspec/state_machine_introspector.rb, line 23 def defined_states(states) states.select { |s| state_defined? s } end
invalid_events(events)
click to toggle source
# File lib/state_machine_rspec/state_machine_introspector.rb, line 35 def invalid_events(events) events.reject { |e| valid_event? e } end
state(name)
click to toggle source
# File lib/state_machine_rspec/state_machine_introspector.rb, line 15 def state(name) state = state_machine.states.find { |s| s.name == name } end
state_machine_attribute()
click to toggle source
# File lib/state_machine_rspec/state_machine_introspector.rb, line 7 def state_machine_attribute state_machine.attribute end
undefined_events(events)
click to toggle source
# File lib/state_machine_rspec/state_machine_introspector.rb, line 27 def undefined_events(events) events.reject { |e| event_defined? e } end
undefined_states(states)
click to toggle source
# File lib/state_machine_rspec/state_machine_introspector.rb, line 19 def undefined_states(states) states.reject { |s| state_defined? s } end
valid_events(events)
click to toggle source
# File lib/state_machine_rspec/state_machine_introspector.rb, line 31 def valid_events(events) events.select { |e| valid_event? e } end
Private Instance Methods
event_defined?(event)
click to toggle source
# File lib/state_machine_rspec/state_machine_introspector.rb, line 59 def event_defined?(event) @subject.respond_to? "can_#{event}?" end
state_defined?(state_name)
click to toggle source
# File lib/state_machine_rspec/state_machine_introspector.rb, line 55 def state_defined?(state_name) state(state_name) end
state_machine()
click to toggle source
# File lib/state_machine_rspec/state_machine_introspector.rb, line 41 def state_machine if @state_machine_name unless machine = @subject.class.state_machines[@state_machine_name] raise StateMachineIntrospectorError, "#{@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_machine_rspec/state_machine_introspector.rb, line 63 def valid_event?(event) @subject.send("can_#{event}?") end