simple_state_machine 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.4.2
@@ -9,9 +9,11 @@ module SimpleStateMachine
9
9
 
10
10
  # mark the method as an event and specify how the state should transition
11
11
  def event event_name, state_transitions
12
- state_transitions.each do |from, to|
13
- transition = state_machine_definition.add_transition(event_name, from, to)
14
- state_machine_decorator(self).decorate(transition)
12
+ state_transitions.each do |froms, to|
13
+ [froms].flatten.each do |from|
14
+ transition = state_machine_definition.add_transition(event_name, from, to)
15
+ state_machine_decorator(self).decorate(transition)
16
+ end
15
17
  end
16
18
  end
17
19
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{simple_state_machine}
8
- s.version = "0.4.1"
8
+ s.version = "0.4.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Marek de Heus", "Petrik de Heus"]
12
- s.date = %q{2010-09-10}
12
+ s.date = %q{2010-09-14}
13
13
  s.description = %q{A simple DSL to decorate existing methods with logic that guards state transitions.}
14
14
  s.email = ["FIX@example.com"]
15
15
  s.extra_rdoc_files = [
@@ -12,6 +12,7 @@ class SimpleExample
12
12
  'event2'
13
13
  end
14
14
  event :event2, :state2 => :state3
15
+ event :event_with_multiple_from, [:state1, :state2] => :state3
15
16
  end
16
17
 
17
18
  class SimpleExampleWithCustomStateMethod
@@ -37,7 +38,7 @@ describe SimpleStateMachine do
37
38
 
38
39
  describe "events" do
39
40
 
40
- it "changes state" do
41
+ it "changes state if event has multiple transitions" do
41
42
  example = SimpleExample.new
42
43
  example.should be_state1
43
44
  example.event1
@@ -46,6 +47,16 @@ describe SimpleStateMachine do
46
47
  example.should be_state3
47
48
  end
48
49
 
50
+ it "changes state if event has multiple froms" do
51
+ example = SimpleExample.new
52
+ example.event_with_multiple_from
53
+ example.should be_state3
54
+ example = SimpleExample.new 'state2'
55
+ example.should be_state2
56
+ example.event_with_multiple_from
57
+ example.should be_state3
58
+ end
59
+
49
60
  it "changes state when state is a symbol instead of a string" do
50
61
  example = SimpleExample.new :state1
51
62
  example.state.should == :state1
@@ -72,7 +83,7 @@ describe SimpleStateMachine do
72
83
  lambda { example.event2 }.should raise_error(SimpleStateMachine::Error, "You cannot 'event2' when state is 'state1'")
73
84
  end
74
85
 
75
- it "return nil" do
86
+ it "returns what the decorated method returns" do
76
87
  example = SimpleExample.new
77
88
  example.event1.should == nil
78
89
  example.event2.should == 'event2'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_state_machine
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 1
10
- version: 0.4.1
9
+ - 2
10
+ version: 0.4.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marek de Heus
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-09-10 00:00:00 +02:00
19
+ date: 2010-09-14 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency