aasm 3.0.14 → 3.0.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,12 +3,14 @@ require 'active_record'
3
3
  require 'logger'
4
4
  require 'i18n'
5
5
 
6
+ load_schema
7
+
6
8
  class LocalizerTestModel < ActiveRecord::Base
7
9
  include AASM
8
10
 
9
11
  attr_accessor :aasm_state
10
12
 
11
- aasm_initial_state :open
13
+ aasm_initial_state :opened
12
14
  aasm_state :opened
13
15
  aasm_state :closed
14
16
 
@@ -16,6 +18,26 @@ class LocalizerTestModel < ActiveRecord::Base
16
18
  aasm_event :open
17
19
  end
18
20
 
21
+ describe 'localized state names' do
22
+ before(:all) do
23
+ I18n.load_path << 'spec/en.yml'
24
+ I18n.default_locale = :en
25
+ I18n.reload!
26
+ end
27
+
28
+ after(:all) do
29
+ I18n.load_path.clear
30
+ end
31
+
32
+ it 'should localize' do
33
+ LocalizerTestModel.aasm.states.detect {|s| s == :opened}.localized_name.should == "It's open now!"
34
+ end
35
+
36
+ it 'should use fallback' do
37
+ LocalizerTestModel.aasm.states.detect {|s| s == :closed}.localized_name.should == 'Closed'
38
+ end
39
+ end
40
+
19
41
  describe AASM::SupportingClasses::Localizer, "new style" do
20
42
  before(:all) do
21
43
  I18n.load_path << 'spec/en.yml'
@@ -32,7 +54,7 @@ describe AASM::SupportingClasses::Localizer, "new style" do
32
54
 
33
55
  context 'aasm_human_state' do
34
56
  it 'should return translated state value' do
35
- foo_opened.aasm_human_state.should == "It's opened now!"
57
+ foo_opened.aasm_human_state.should == "It's open now!"
36
58
  end
37
59
 
38
60
  it 'should return humanized value if not localized' do
@@ -67,7 +89,7 @@ describe AASM::SupportingClasses::Localizer, "deprecated style" do
67
89
 
68
90
  context 'aasm_human_state' do
69
91
  it 'should return translated state value' do
70
- foo_opened.aasm_human_state.should == "It's opened now!"
92
+ foo_opened.aasm_human_state.should == "It's open now!"
71
93
  end
72
94
 
73
95
  it 'should return humanized value if not localized' do
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
1
+ require 'spec_helper'
2
2
 
3
3
  describe AASM::SupportingClasses::State do
4
4
  before(:each) do
@@ -7,7 +7,7 @@ describe AASM::SupportingClasses::State do
7
7
  end
8
8
 
9
9
  def new_state(options={})
10
- AASM::SupportingClasses::State.new(@name, @options.merge(options))
10
+ AASM::SupportingClasses::State.new(@name, Conversation, @options.merge(options))
11
11
  end
12
12
 
13
13
  it 'should set the name' do
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'transitions' do
4
4
 
@@ -25,7 +25,7 @@ describe 'transitions' do
25
25
  silencer.smile_any!.should be_true
26
26
  silencer.should be_smiling
27
27
  end
28
-
28
+
29
29
  end
30
30
 
31
31
  describe AASM::SupportingClasses::StateTransition do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aasm
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.14
4
+ version: 3.0.15
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,11 +12,11 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-11-06 00:00:00.000000000Z
15
+ date: 2012-12-27 00:00:00.000000000Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: activerecord
19
- requirement: &70345873130760 !ruby/object:Gem::Requirement
19
+ requirement: &70247621982320 !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ! '>='
@@ -24,10 +24,10 @@ dependencies:
24
24
  version: '0'
25
25
  type: :development
26
26
  prerelease: false
27
- version_requirements: *70345873130760
27
+ version_requirements: *70247621982320
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rake
30
- requirement: &70345873130340 !ruby/object:Gem::Requirement
30
+ requirement: &70247621981900 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ! '>='
@@ -35,10 +35,10 @@ dependencies:
35
35
  version: '0'
36
36
  type: :development
37
37
  prerelease: false
38
- version_requirements: *70345873130340
38
+ version_requirements: *70247621981900
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: sdoc
41
- requirement: &70345873129920 !ruby/object:Gem::Requirement
41
+ requirement: &70247621981480 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
44
  - - ! '>='
@@ -46,10 +46,10 @@ dependencies:
46
46
  version: '0'
47
47
  type: :development
48
48
  prerelease: false
49
- version_requirements: *70345873129920
49
+ version_requirements: *70247621981480
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: rspec
52
- requirement: &70345873129420 !ruby/object:Gem::Requirement
52
+ requirement: &70247621980980 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
55
55
  - - ~>
@@ -57,10 +57,10 @@ dependencies:
57
57
  version: '2.0'
58
58
  type: :development
59
59
  prerelease: false
60
- version_requirements: *70345873129420
60
+ version_requirements: *70247621980980
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rr
63
- requirement: &70345873129000 !ruby/object:Gem::Requirement
63
+ requirement: &70247621980560 !ruby/object:Gem::Requirement
64
64
  none: false
65
65
  requirements:
66
66
  - - ! '>='
@@ -68,10 +68,10 @@ dependencies:
68
68
  version: '0'
69
69
  type: :development
70
70
  prerelease: false
71
- version_requirements: *70345873129000
71
+ version_requirements: *70247621980560
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: shoulda
74
- requirement: &70345873128540 !ruby/object:Gem::Requirement
74
+ requirement: &70247621980100 !ruby/object:Gem::Requirement
75
75
  none: false
76
76
  requirements:
77
77
  - - ! '>='
@@ -79,10 +79,10 @@ dependencies:
79
79
  version: '0'
80
80
  type: :development
81
81
  prerelease: false
82
- version_requirements: *70345873128540
82
+ version_requirements: *70247621980100
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: sqlite3
85
- requirement: &70345873128120 !ruby/object:Gem::Requirement
85
+ requirement: &70247621979680 !ruby/object:Gem::Requirement
86
86
  none: false
87
87
  requirements:
88
88
  - - ! '>='
@@ -90,10 +90,10 @@ dependencies:
90
90
  version: '0'
91
91
  type: :development
92
92
  prerelease: false
93
- version_requirements: *70345873128120
93
+ version_requirements: *70247621979680
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: minitest
96
- requirement: &70345873127700 !ruby/object:Gem::Requirement
96
+ requirement: &70247621979260 !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ! '>='
@@ -101,10 +101,10 @@ dependencies:
101
101
  version: '0'
102
102
  type: :development
103
103
  prerelease: false
104
- version_requirements: *70345873127700
104
+ version_requirements: *70247621979260
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: ruby-debug-completion
107
- requirement: &70345873143660 !ruby/object:Gem::Requirement
107
+ requirement: &70247622010320 !ruby/object:Gem::Requirement
108
108
  none: false
109
109
  requirements:
110
110
  - - ! '>='
@@ -112,7 +112,7 @@ dependencies:
112
112
  version: '0'
113
113
  type: :development
114
114
  prerelease: false
115
- version_requirements: *70345873143660
115
+ version_requirements: *70247622010320
116
116
  description: AASM is a continuation of the acts as state machine rails plugin, built
117
117
  for plain Ruby objects.
118
118
  email: scott@elitists.net, ttilley@gmail.com, aasm@mt7.de
@@ -148,12 +148,14 @@ files:
148
148
  - spec/database.yml
149
149
  - spec/en.yml
150
150
  - spec/en_deprecated_style.yml
151
+ - spec/models/argument.rb
151
152
  - spec/models/auth_machine.rb
152
153
  - spec/models/callback_new_dsl.rb
153
154
  - spec/models/callback_old_dsl.rb
154
155
  - spec/models/conversation.rb
155
156
  - spec/models/invalid_persistor.rb
156
157
  - spec/models/not_auto_loaded/process.rb
158
+ - spec/models/parametrised_event.rb
157
159
  - spec/models/persistence.rb
158
160
  - spec/models/process_with_new_dsl.rb
159
161
  - spec/models/silencer.rb
@@ -164,18 +166,19 @@ files:
164
166
  - spec/schema.rb
165
167
  - spec/spec_helper.rb
166
168
  - spec/spec_helpers/models_spec_helper.rb
167
- - spec/unit/aasm_spec.rb
168
- - spec/unit/callbacks_new_dsl_spec.rb
169
- - spec/unit/callbacks_old_dsl_spec.rb
169
+ - spec/unit/callbacks_spec.rb
170
170
  - spec/unit/complex_example_spec.rb
171
- - spec/unit/event_spec.rb
171
+ - spec/unit/initial_state_spec.rb
172
172
  - spec/unit/inspection_spec.rb
173
- - spec/unit/localizer_spec.rb
174
173
  - spec/unit/memory_leak_spec.rb
175
174
  - spec/unit/new_dsl_spec.rb
176
175
  - spec/unit/persistence/active_record_persistence_spec.rb
177
- - spec/unit/state_spec.rb
178
- - spec/unit/state_transition_spec.rb
176
+ - spec/unit/simple_example_spec.rb
177
+ - spec/unit/subclassing_spec.rb
178
+ - spec/unit/supporting_classes/event_spec.rb
179
+ - spec/unit/supporting_classes/localizer_spec.rb
180
+ - spec/unit/supporting_classes/state_spec.rb
181
+ - spec/unit/supporting_classes/state_transition_spec.rb
179
182
  homepage: https://github.com/aasm/aasm
180
183
  licenses:
181
184
  - MIT
@@ -205,12 +208,14 @@ test_files:
205
208
  - spec/database.yml
206
209
  - spec/en.yml
207
210
  - spec/en_deprecated_style.yml
211
+ - spec/models/argument.rb
208
212
  - spec/models/auth_machine.rb
209
213
  - spec/models/callback_new_dsl.rb
210
214
  - spec/models/callback_old_dsl.rb
211
215
  - spec/models/conversation.rb
212
216
  - spec/models/invalid_persistor.rb
213
217
  - spec/models/not_auto_loaded/process.rb
218
+ - spec/models/parametrised_event.rb
214
219
  - spec/models/persistence.rb
215
220
  - spec/models/process_with_new_dsl.rb
216
221
  - spec/models/silencer.rb
@@ -221,15 +226,16 @@ test_files:
221
226
  - spec/schema.rb
222
227
  - spec/spec_helper.rb
223
228
  - spec/spec_helpers/models_spec_helper.rb
224
- - spec/unit/aasm_spec.rb
225
- - spec/unit/callbacks_new_dsl_spec.rb
226
- - spec/unit/callbacks_old_dsl_spec.rb
229
+ - spec/unit/callbacks_spec.rb
227
230
  - spec/unit/complex_example_spec.rb
228
- - spec/unit/event_spec.rb
231
+ - spec/unit/initial_state_spec.rb
229
232
  - spec/unit/inspection_spec.rb
230
- - spec/unit/localizer_spec.rb
231
233
  - spec/unit/memory_leak_spec.rb
232
234
  - spec/unit/new_dsl_spec.rb
233
235
  - spec/unit/persistence/active_record_persistence_spec.rb
234
- - spec/unit/state_spec.rb
235
- - spec/unit/state_transition_spec.rb
236
+ - spec/unit/simple_example_spec.rb
237
+ - spec/unit/subclassing_spec.rb
238
+ - spec/unit/supporting_classes/event_spec.rb
239
+ - spec/unit/supporting_classes/localizer_spec.rb
240
+ - spec/unit/supporting_classes/state_spec.rb
241
+ - spec/unit/supporting_classes/state_transition_spec.rb
@@ -1,301 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
-
3
- describe AASM, '- class level definitions' do
4
- it 'should define a class level methods on its including class' do
5
- Foo.should respond_to(:aasm_initial_state)
6
- Foo.should respond_to(:aasm_state)
7
- Foo.should respond_to(:aasm_event)
8
- Foo.should respond_to(:aasm_states)
9
- Foo.should respond_to(:aasm_states_for_select)
10
- Foo.should respond_to(:aasm_events)
11
- Foo.should respond_to(:aasm_from_states_for_state)
12
- end
13
- end
14
-
15
- describe "naming" do
16
- it "work for valid" do
17
- Argument.aasm_states.should include(:invalid)
18
- Argument.aasm_states.should include(:valid)
19
-
20
- argument = Argument.new
21
- argument.invalid?.should be_true
22
- argument.aasm_current_state.should == :invalid
23
-
24
- argument.valid!
25
- argument.valid?.should be_true
26
- argument.aasm_current_state.should == :valid
27
- end
28
- end
29
-
30
- describe AASM, '- subclassing' do
31
- it 'should have the parent states' do
32
- Foo.aasm_states.each do |state|
33
- FooTwo.aasm_states.should include(state)
34
- end
35
- end
36
-
37
- it 'should not add the child states to the parent machine' do
38
- Foo.aasm_states.should_not include(:foo)
39
- end
40
- end
41
-
42
-
43
- describe AASM, '- aasm_states_for_select' do
44
- it "should return a select friendly array of states" do
45
- Foo.aasm_states_for_select.should == [['Open', 'open'], ['Closed', 'closed']]
46
- end
47
- end
48
-
49
- describe "aasm_from_states_for_state" do
50
- it "should return all from states for a state" do
51
- froms = AuthMachine.aasm_from_states_for_state(:active)
52
- [:pending, :passive, :suspended].each {|from| froms.should include(from)}
53
- end
54
-
55
- it "should return from states for a state for a particular transition only" do
56
- froms = AuthMachine.aasm_from_states_for_state(:active, :transition => :unsuspend)
57
- [:suspended].each {|from| froms.should include(from)}
58
- end
59
- end
60
-
61
- describe AASM, '- instance level definitions' do
62
- before(:each) do
63
- @foo = Foo.new
64
- end
65
-
66
- it 'should define a state querying instance method on including class' do
67
- @foo.should respond_to(:open?)
68
- end
69
-
70
- it 'should define an event! inance method' do
71
- @foo.should respond_to(:close!)
72
- end
73
- end
74
-
75
- describe AASM, '- initial states' do
76
- before(:each) do
77
- @foo = Foo.new
78
- @bar = Bar.new
79
- end
80
-
81
- it 'should set the initial state' do
82
- @foo.aasm_current_state.should == :open
83
- end
84
-
85
- it '#open? should be initially true' do
86
- @foo.open?.should be_true
87
- end
88
-
89
- it '#closed? should be initially false' do
90
- @foo.closed?.should be_false
91
- end
92
-
93
- it 'should use the first state defined if no initial state is given' do
94
- @bar.aasm_current_state.should == :read
95
- end
96
-
97
- it 'should determine initial state from the Proc results' do
98
- Banker.new(Banker::RICH - 1).aasm_current_state.should == :selling_bad_mortgages
99
- Banker.new(Banker::RICH + 1).aasm_current_state.should == :retired
100
- end
101
- end
102
-
103
- describe AASM, 'success callbacks' do
104
- it 'should call the success callback if one was provided' do
105
- foo = Foo.new
106
- foo.should_receive(:success_callback)
107
- foo.close!
108
- end
109
-
110
- end
111
-
112
- describe AASM, '- event firing without persistence' do
113
- it 'should attempt to persist if aasm_write_state is defined' do
114
- foo = Foo.new
115
-
116
- def foo.aasm_write_state
117
- end
118
-
119
- foo.should_receive(:aasm_write_state_without_persistence).twice
120
-
121
- foo.close
122
- end
123
- end
124
-
125
- describe AASM, '- getting events for a state' do
126
- it '#aasm_events_for_current_state should use current state' do
127
- foo = Foo.new
128
- foo.should_receive(:aasm_current_state)
129
- foo.aasm_events_for_current_state
130
- end
131
-
132
- it '#aasm_events_for_current_state should use aasm_events_for_state' do
133
- foo = Foo.new
134
- foo.stub!(:aasm_current_state).and_return(:foo)
135
- foo.should_receive(:aasm_events_for_state).with(:foo)
136
- foo.aasm_events_for_current_state
137
- end
138
- end
139
-
140
- describe AASM, '- event callbacks' do
141
- describe "with an error callback defined" do
142
- before do
143
- class Foo
144
- aasm_event :safe_close, :success => :success_callback, :error => :error_callback do
145
- transitions :to => :closed, :from => [:open]
146
- end
147
- end
148
-
149
- @foo = Foo.new
150
- end
151
-
152
- it "should run error_callback if an exception is raised and error_callback defined" do
153
- def @foo.error_callback(e)
154
- end
155
- @foo.stub!(:enter).and_raise(e=StandardError.new)
156
- @foo.should_receive(:error_callback).with(e)
157
- @foo.safe_close!
158
- end
159
-
160
- it "should raise NoMethodError if exceptionis raised and error_callback is declared but not defined" do
161
- @foo.stub!(:enter).and_raise(StandardError)
162
- lambda{@foo.safe_close!}.should raise_error(NoMethodError)
163
- end
164
-
165
- it "should propagate an error if no error callback is declared" do
166
- @foo.stub!(:enter).and_raise("Cannot enter safe")
167
- lambda{@foo.close!}.should raise_error(StandardError, "Cannot enter safe")
168
- end
169
- end
170
-
171
- describe "with aasm_event_fired defined" do
172
- before do
173
- @foo = Foo.new
174
- def @foo.aasm_event_fired(event, from, to)
175
- end
176
- end
177
-
178
- it 'should call it for successful bang fire' do
179
- @foo.should_receive(:aasm_event_fired).with(:close, :open, :closed)
180
- @foo.close!
181
- end
182
-
183
- it 'should call it for successful non-bang fire' do
184
- @foo.should_receive(:aasm_event_fired)
185
- @foo.close
186
- end
187
-
188
- it 'should not call it for failing bang fire' do
189
- @foo.stub!(:aasm_set_current_state_with_persistence).and_return(false)
190
- @foo.should_not_receive(:aasm_event_fired)
191
- @foo.close!
192
- end
193
- end
194
-
195
- describe "with aasm_event_failed defined" do
196
- before do
197
- @foo = Foo.new
198
- def @foo.aasm_event_failed(event, from)
199
- end
200
- end
201
-
202
- it 'should call it when transition failed for bang fire' do
203
- @foo.should_receive(:aasm_event_failed).with(:null, :open)
204
- lambda {@foo.null!}.should raise_error(AASM::InvalidTransition)
205
- end
206
-
207
- it 'should call it when transition failed for non-bang fire' do
208
- @foo.should_receive(:aasm_event_failed).with(:null, :open)
209
- lambda {@foo.null}.should raise_error(AASM::InvalidTransition)
210
- end
211
-
212
- it 'should not call it if persist fails for bang fire' do
213
- @foo.stub!(:aasm_set_current_state_with_persistence).and_return(false)
214
- @foo.should_receive(:aasm_event_failed)
215
- @foo.close!
216
- end
217
- end
218
- end
219
-
220
- describe AASM, '- state actions' do
221
- it "should call enter when entering state" do
222
- foo = Foo.new
223
- foo.should_receive(:enter)
224
-
225
- foo.close
226
- end
227
-
228
- it "should call exit when exiting state" do
229
- foo = Foo.new
230
- foo.should_receive(:exit)
231
-
232
- foo.close
233
- end
234
- end
235
-
236
-
237
- describe Baz do
238
- it "should have the same states as it's parent" do
239
- Baz.aasm_states.should == Bar.aasm_states
240
- end
241
-
242
- it "should have the same events as it's parent" do
243
- Baz.aasm_events.should == Bar.aasm_events
244
- end
245
- end
246
-
247
-
248
-
249
- describe ChetanPatil do
250
- it 'should transition to specified next state (sleeping to showering)' do
251
- cp = ChetanPatil.new
252
- cp.wakeup! :showering
253
-
254
- cp.aasm_current_state.should == :showering
255
- end
256
-
257
- it 'should transition to specified next state (sleeping to working)' do
258
- cp = ChetanPatil.new
259
- cp.wakeup! :working
260
-
261
- cp.aasm_current_state.should == :working
262
- end
263
-
264
- it 'should transition to default (first or showering) state' do
265
- cp = ChetanPatil.new
266
- cp.wakeup!
267
-
268
- cp.aasm_current_state.should == :showering
269
- end
270
-
271
- it 'should transition to default state when on_transition invoked' do
272
- cp = ChetanPatil.new
273
- cp.dress!(nil, 'purple', 'dressy')
274
-
275
- cp.aasm_current_state.should == :working
276
- end
277
-
278
- it 'should call on_transition method with args' do
279
- cp = ChetanPatil.new
280
- cp.wakeup! :showering
281
-
282
- cp.should_receive(:wear_clothes).with('blue', 'jeans')
283
- cp.dress! :working, 'blue', 'jeans'
284
- end
285
-
286
- it 'should call on_transition proc' do
287
- cp = ChetanPatil.new
288
- cp.wakeup! :showering
289
-
290
- cp.should_receive(:wear_clothes).with('purple', 'slacks')
291
- cp.dress!(:dating, 'purple', 'slacks')
292
- end
293
-
294
- it 'should call on_transition with an array of methods' do
295
- cp = ChetanPatil.new
296
- cp.wakeup! :showering
297
- cp.should_receive(:condition_hair)
298
- cp.should_receive(:fix_hair)
299
- cp.dress!(:prettying_up)
300
- end
301
- end