aasm 3.0.14 → 3.0.15

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.
@@ -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