Class: StateMachinesIntrospector

Inherits:
Object
  • Object
show all
Defined in:
lib/state_machines_rspec/state_machines_introspector.rb

Instance Method Summary collapse

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_statesObject



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_valueObject



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

Returns:

  • (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_attributeObject



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

Returns:

  • (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