simple_machine 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -102,7 +102,7 @@ module SimpleMachine
102
102
  end
103
103
  end
104
104
 
105
- SimpleMachine::ClassMethods.get_state_machine_class_for(self, state_field_name).instance_eval &block
105
+ SimpleMachine::ClassMethods.get_state_machine_class_for(self, state_field_name, true).instance_eval &block
106
106
 
107
107
  raise "Initial state not defined." unless send default_state_field_name
108
108
  end
@@ -111,10 +111,13 @@ module SimpleMachine
111
111
 
112
112
  @state_machine_classes = {}
113
113
 
114
- def self.get_state_machine_class_for(cls, state_field_name)
114
+ def self.get_state_machine_class_for(cls, state_field_name, delete_if_exists=false)
115
115
  key = [cls.to_s.to_sym, state_field_name]
116
+ if @state_machine_classes.has_key? key and delete_if_exists
117
+ @state_machine_classes.delete key
118
+ end
116
119
  unless @state_machine_classes.has_key? key
117
- @state_machine_classes[key] ||= SimpleMachine::SimpleMachinePrototype.clone
120
+ @state_machine_classes[key] = SimpleMachine::SimpleMachinePrototype.clone
118
121
  @state_machine_classes[key].owner_class = cls
119
122
  @state_machine_classes[key].parents_state_field_name = state_field_name
120
123
  end
@@ -34,7 +34,7 @@ describe SimpleMachine, "for :dispatch_state field on Job, when state machine is
34
34
  end
35
35
 
36
36
  context "with only initial state :waiting" do
37
- before :each do
37
+ before :all do
38
38
  Job.implement_state_machine_for :dispatch_state do
39
39
  initial_state :waiting
40
40
  end
@@ -200,12 +200,11 @@ describe SimpleMachine, "for :dispatch_state field on Job, when state machine is
200
200
  end
201
201
  context "when there are more job instances" do
202
202
  before :all do
203
- Job.new.dispatch_state_machine.class.expects(:defined_transition?).with(:assign, :waiting).returns false
204
- Job.new.dispatch_state_machine.class.expects(:defined_transition?).with(:accept, :assigned)
205
- Job.implement_state_machine_for :dispatch_state do
206
- allow_transition :assign, :from => :waiting, :to => :assigned
207
- allow_transition :accept, :from => :assigned, :to => :accepted
208
- end
203
+ @inner_state_machine_class = Job.new.dispatch_state_machine.class
204
+ @inner_state_machine_class.expects(:defined_transition?).with(:assign, :waiting).returns false
205
+ @inner_state_machine_class.expects(:defined_transition?).with(:accept, :assigned)
206
+ @inner_state_machine_class.allow_transition :assign, :from => :waiting, :to => :assigned
207
+ @inner_state_machine_class.allow_transition :accept, :from => :assigned, :to => :accepted
209
208
  end
210
209
 
211
210
  it "each instance tracks it's own flow" do
@@ -222,4 +221,9 @@ describe SimpleMachine, "for :dispatch_state field on Job, when state machine is
222
221
  job3.dispatch_state.should be(:waiting)
223
222
  end
224
223
  end
224
+ context "when invoking implement_state_machine_for :dispatch_state on Job again" do
225
+ xit "undos meta works from previous invocation" do
226
+
227
+ end
228
+ end
225
229
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_machine
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 1
10
- version: 1.0.1
9
+ - 2
10
+ version: 1.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Milan Burmaja
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-16 00:00:00 +01:00
18
+ date: 2010-12-17 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies: []
21
21