aasm 4.0.8 → 4.2.0

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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -2
  3. data/CHANGELOG.md +18 -2
  4. data/CODE_OF_CONDUCT.md +13 -0
  5. data/Gemfile +6 -3
  6. data/LICENSE +1 -1
  7. data/README.md +31 -5
  8. data/aasm.gemspec +1 -5
  9. data/gemfiles/rails_3.2.gemfile +3 -2
  10. data/gemfiles/rails_4.0.gemfile +2 -6
  11. data/gemfiles/rails_4.0_bson1.gemfile +14 -0
  12. data/gemfiles/rails_4.1.gemfile +2 -6
  13. data/gemfiles/rails_4.1_bson1.gemfile +14 -0
  14. data/gemfiles/rails_4.2.gemfile +1 -5
  15. data/gemfiles/rails_4.2_bson1.gemfile +14 -0
  16. data/lib/aasm/aasm.rb +13 -7
  17. data/lib/aasm/base.rb +12 -4
  18. data/lib/aasm/core/event.rb +1 -1
  19. data/lib/aasm/core/state.rb +8 -6
  20. data/lib/aasm/errors.rb +12 -1
  21. data/lib/aasm/persistence/active_record_persistence.rb +4 -4
  22. data/lib/aasm/persistence/base.rb +3 -0
  23. data/lib/aasm/persistence/mongo_mapper_persistence.rb +174 -0
  24. data/lib/aasm/persistence/mongoid_persistence.rb +1 -5
  25. data/lib/aasm/persistence/sequel_persistence.rb +1 -0
  26. data/lib/aasm/persistence.rb +2 -0
  27. data/lib/aasm/version.rb +1 -1
  28. data/spec/models/active_record/derivate_new_dsl.rb +3 -0
  29. data/spec/models/active_record/false_state.rb +17 -0
  30. data/spec/models/active_record/gate.rb +19 -0
  31. data/spec/models/active_record/localizer_test_model.rb +34 -0
  32. data/spec/models/active_record/no_direct_assignment.rb +10 -0
  33. data/spec/models/active_record/no_scope.rb +10 -0
  34. data/spec/models/active_record/persisted_state.rb +12 -0
  35. data/spec/models/active_record/provided_and_persisted_state.rb +24 -0
  36. data/spec/models/active_record/reader.rb +7 -0
  37. data/spec/models/active_record/simple_new_dsl.rb +8 -0
  38. data/spec/models/active_record/thief.rb +14 -0
  39. data/spec/models/active_record/transient.rb +6 -0
  40. data/spec/models/active_record/with_enum.rb +19 -0
  41. data/spec/models/active_record/with_false_enum.rb +15 -0
  42. data/spec/models/active_record/with_true_enum.rb +19 -0
  43. data/spec/models/active_record/writer.rb +6 -0
  44. data/spec/models/callbacks/with_args.rb +9 -9
  45. data/spec/models/{auth_machine.rb → complex_example.rb} +1 -1
  46. data/spec/models/default_state.rb +12 -0
  47. data/spec/models/initial_state_proc.rb +15 -0
  48. data/spec/models/mongo_mapper/no_scope_mongo_mapper.rb +10 -0
  49. data/spec/models/mongo_mapper/simple_mongo_mapper.rb +11 -0
  50. data/spec/models/mongo_mapper/simple_new_dsl_mongo_mapper.rb +12 -0
  51. data/spec/models/mongoid/simple_new_dsl_mongoid.rb +1 -1
  52. data/spec/models/{bar.rb → no_initial_state.rb} +1 -4
  53. data/spec/models/provided_state.rb +24 -0
  54. data/spec/models/simple_example.rb +15 -0
  55. data/spec/models/state_machine_with_failed_event.rb +12 -0
  56. data/spec/models/sub_class.rb +3 -0
  57. data/spec/models/sub_class_with_more_states.rb +7 -0
  58. data/spec/models/super_class.rb +18 -0
  59. data/spec/models/{argument.rb → valid_state_name.rb} +1 -1
  60. data/spec/models/validator.rb +8 -0
  61. data/spec/spec_helper.rb +3 -4
  62. data/spec/unit/api_spec.rb +6 -1
  63. data/spec/unit/callbacks_spec.rb +1 -1
  64. data/spec/unit/complex_example_spec.rb +2 -2
  65. data/spec/unit/event_naming_spec.rb +2 -15
  66. data/spec/unit/initial_state_spec.rb +3 -18
  67. data/spec/unit/inspection_spec.rb +7 -7
  68. data/spec/unit/localizer_spec.rb +0 -38
  69. data/spec/unit/persistence/active_record_persistence_spec.rb +26 -3
  70. data/spec/unit/persistence/mongo_mapper_persistance_spec.rb +135 -0
  71. data/spec/unit/persistence/mongoid_persistance_spec.rb +4 -10
  72. data/spec/unit/persistence/sequel_persistence_spec.rb +15 -1
  73. data/spec/unit/simple_example_spec.rb +26 -42
  74. data/spec/unit/subclassing_spec.rb +10 -10
  75. data/spec/unit/transition_spec.rb +6 -1
  76. metadata +72 -19
  77. data/spec/models/active_record/api.rb +0 -75
  78. data/spec/models/father.rb +0 -21
  79. data/spec/models/persistence.rb +0 -164
  80. data/spec/models/son.rb +0 -3
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: 4.0.8
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Barron
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-12-31 00:00:00.000000000 Z
13
+ date: 2015-06-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -46,14 +46,14 @@ dependencies:
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: '0'
49
+ version: '3'
50
50
  type: :development
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: '0'
56
+ version: '3'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: pry
59
59
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,7 @@ files:
80
80
  - ".travis.yml"
81
81
  - API
82
82
  - CHANGELOG.md
83
+ - CODE_OF_CONDUCT.md
83
84
  - Gemfile
84
85
  - HOWTO
85
86
  - LICENSE
@@ -91,8 +92,11 @@ files:
91
92
  - callbacks.txt
92
93
  - gemfiles/rails_3.2.gemfile
93
94
  - gemfiles/rails_4.0.gemfile
95
+ - gemfiles/rails_4.0_bson1.gemfile
94
96
  - gemfiles/rails_4.1.gemfile
97
+ - gemfiles/rails_4.1_bson1.gemfile
95
98
  - gemfiles/rails_4.2.gemfile
99
+ - gemfiles/rails_4.2_bson1.gemfile
96
100
  - lib/aasm.rb
97
101
  - lib/aasm/aasm.rb
98
102
  - lib/aasm/base.rb
@@ -107,6 +111,7 @@ files:
107
111
  - lib/aasm/persistence.rb
108
112
  - lib/aasm/persistence/active_record_persistence.rb
109
113
  - lib/aasm/persistence/base.rb
114
+ - lib/aasm/persistence/mongo_mapper_persistence.rb
110
115
  - lib/aasm/persistence/mongoid_persistence.rb
111
116
  - lib/aasm/persistence/plain_persistence.rb
112
117
  - lib/aasm/persistence/sequel_persistence.rb
@@ -116,34 +121,57 @@ files:
116
121
  - spec/database.yml
117
122
  - spec/en.yml
118
123
  - spec/en_deprecated_style.yml
119
- - spec/models/active_record/api.rb
120
- - spec/models/argument.rb
121
- - spec/models/auth_machine.rb
122
- - spec/models/bar.rb
124
+ - spec/models/active_record/derivate_new_dsl.rb
125
+ - spec/models/active_record/false_state.rb
126
+ - spec/models/active_record/gate.rb
127
+ - spec/models/active_record/localizer_test_model.rb
128
+ - spec/models/active_record/no_direct_assignment.rb
129
+ - spec/models/active_record/no_scope.rb
130
+ - spec/models/active_record/persisted_state.rb
131
+ - spec/models/active_record/provided_and_persisted_state.rb
132
+ - spec/models/active_record/reader.rb
133
+ - spec/models/active_record/simple_new_dsl.rb
134
+ - spec/models/active_record/thief.rb
135
+ - spec/models/active_record/transient.rb
136
+ - spec/models/active_record/with_enum.rb
137
+ - spec/models/active_record/with_false_enum.rb
138
+ - spec/models/active_record/with_true_enum.rb
139
+ - spec/models/active_record/writer.rb
123
140
  - spec/models/callbacks/basic.rb
124
141
  - spec/models/callbacks/guard_within_block.rb
125
142
  - spec/models/callbacks/multiple_transitions_transition_guard.rb
126
143
  - spec/models/callbacks/private_method.rb
127
144
  - spec/models/callbacks/with_args.rb
128
145
  - spec/models/callbacks/with_state_args.rb
146
+ - spec/models/complex_example.rb
129
147
  - spec/models/conversation.rb
148
+ - spec/models/default_state.rb
130
149
  - spec/models/double_definer.rb
131
- - spec/models/father.rb
132
150
  - spec/models/foo.rb
133
151
  - spec/models/guardian.rb
152
+ - spec/models/initial_state_proc.rb
134
153
  - spec/models/invalid_persistor.rb
154
+ - spec/models/mongo_mapper/no_scope_mongo_mapper.rb
155
+ - spec/models/mongo_mapper/simple_mongo_mapper.rb
156
+ - spec/models/mongo_mapper/simple_new_dsl_mongo_mapper.rb
135
157
  - spec/models/mongoid/no_scope_mongoid.rb
136
158
  - spec/models/mongoid/simple_mongoid.rb
137
159
  - spec/models/mongoid/simple_new_dsl_mongoid.rb
160
+ - spec/models/no_initial_state.rb
138
161
  - spec/models/not_auto_loaded/process.rb
139
162
  - spec/models/parametrised_event.rb
140
- - spec/models/persistence.rb
141
163
  - spec/models/process_with_new_dsl.rb
164
+ - spec/models/provided_state.rb
142
165
  - spec/models/silencer.rb
143
- - spec/models/son.rb
166
+ - spec/models/simple_example.rb
167
+ - spec/models/state_machine_with_failed_event.rb
168
+ - spec/models/sub_class.rb
169
+ - spec/models/sub_class_with_more_states.rb
144
170
  - spec/models/sub_classing.rb
171
+ - spec/models/super_class.rb
145
172
  - spec/models/this_name_better_not_be_in_use.rb
146
173
  - spec/models/transactor.rb
174
+ - spec/models/valid_state_name.rb
147
175
  - spec/models/validator.rb
148
176
  - spec/models/worker.rb
149
177
  - spec/spec_helper.rb
@@ -159,6 +187,7 @@ files:
159
187
  - spec/unit/memory_leak_spec.rb
160
188
  - spec/unit/new_dsl_spec.rb
161
189
  - spec/unit/persistence/active_record_persistence_spec.rb
190
+ - spec/unit/persistence/mongo_mapper_persistance_spec.rb
162
191
  - spec/unit/persistence/mongoid_persistance_spec.rb
163
192
  - spec/unit/persistence/sequel_persistence_spec.rb
164
193
  - spec/unit/reloading_spec.rb
@@ -186,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
215
  version: '0'
187
216
  requirements: []
188
217
  rubyforge_project:
189
- rubygems_version: 2.2.2
218
+ rubygems_version: 2.4.5
190
219
  signing_key:
191
220
  specification_version: 4
192
221
  summary: State machine mixin for Ruby objects
@@ -195,34 +224,57 @@ test_files:
195
224
  - spec/database.yml
196
225
  - spec/en.yml
197
226
  - spec/en_deprecated_style.yml
198
- - spec/models/active_record/api.rb
199
- - spec/models/argument.rb
200
- - spec/models/auth_machine.rb
201
- - spec/models/bar.rb
227
+ - spec/models/active_record/derivate_new_dsl.rb
228
+ - spec/models/active_record/false_state.rb
229
+ - spec/models/active_record/gate.rb
230
+ - spec/models/active_record/localizer_test_model.rb
231
+ - spec/models/active_record/no_direct_assignment.rb
232
+ - spec/models/active_record/no_scope.rb
233
+ - spec/models/active_record/persisted_state.rb
234
+ - spec/models/active_record/provided_and_persisted_state.rb
235
+ - spec/models/active_record/reader.rb
236
+ - spec/models/active_record/simple_new_dsl.rb
237
+ - spec/models/active_record/thief.rb
238
+ - spec/models/active_record/transient.rb
239
+ - spec/models/active_record/with_enum.rb
240
+ - spec/models/active_record/with_false_enum.rb
241
+ - spec/models/active_record/with_true_enum.rb
242
+ - spec/models/active_record/writer.rb
202
243
  - spec/models/callbacks/basic.rb
203
244
  - spec/models/callbacks/guard_within_block.rb
204
245
  - spec/models/callbacks/multiple_transitions_transition_guard.rb
205
246
  - spec/models/callbacks/private_method.rb
206
247
  - spec/models/callbacks/with_args.rb
207
248
  - spec/models/callbacks/with_state_args.rb
249
+ - spec/models/complex_example.rb
208
250
  - spec/models/conversation.rb
251
+ - spec/models/default_state.rb
209
252
  - spec/models/double_definer.rb
210
- - spec/models/father.rb
211
253
  - spec/models/foo.rb
212
254
  - spec/models/guardian.rb
255
+ - spec/models/initial_state_proc.rb
213
256
  - spec/models/invalid_persistor.rb
257
+ - spec/models/mongo_mapper/no_scope_mongo_mapper.rb
258
+ - spec/models/mongo_mapper/simple_mongo_mapper.rb
259
+ - spec/models/mongo_mapper/simple_new_dsl_mongo_mapper.rb
214
260
  - spec/models/mongoid/no_scope_mongoid.rb
215
261
  - spec/models/mongoid/simple_mongoid.rb
216
262
  - spec/models/mongoid/simple_new_dsl_mongoid.rb
263
+ - spec/models/no_initial_state.rb
217
264
  - spec/models/not_auto_loaded/process.rb
218
265
  - spec/models/parametrised_event.rb
219
- - spec/models/persistence.rb
220
266
  - spec/models/process_with_new_dsl.rb
267
+ - spec/models/provided_state.rb
221
268
  - spec/models/silencer.rb
222
- - spec/models/son.rb
269
+ - spec/models/simple_example.rb
270
+ - spec/models/state_machine_with_failed_event.rb
271
+ - spec/models/sub_class.rb
272
+ - spec/models/sub_class_with_more_states.rb
223
273
  - spec/models/sub_classing.rb
274
+ - spec/models/super_class.rb
224
275
  - spec/models/this_name_better_not_be_in_use.rb
225
276
  - spec/models/transactor.rb
277
+ - spec/models/valid_state_name.rb
226
278
  - spec/models/validator.rb
227
279
  - spec/models/worker.rb
228
280
  - spec/spec_helper.rb
@@ -238,6 +290,7 @@ test_files:
238
290
  - spec/unit/memory_leak_spec.rb
239
291
  - spec/unit/new_dsl_spec.rb
240
292
  - spec/unit/persistence/active_record_persistence_spec.rb
293
+ - spec/unit/persistence/mongo_mapper_persistance_spec.rb
241
294
  - spec/unit/persistence/mongoid_persistance_spec.rb
242
295
  - spec/unit/persistence/sequel_persistence_spec.rb
243
296
  - spec/unit/reloading_spec.rb
@@ -1,75 +0,0 @@
1
- class DefaultState
2
- attr_accessor :transient_store, :persisted_store
3
- include AASM
4
- aasm do
5
- state :alpha, :initial => true
6
- state :beta
7
- state :gamma
8
- event :release do
9
- transitions :from => [:alpha, :beta, :gamma], :to => :beta
10
- end
11
- end
12
- end
13
-
14
- class ProvidedState
15
- attr_accessor :transient_store, :persisted_store
16
- include AASM
17
- aasm do
18
- state :alpha, :initial => true
19
- state :beta
20
- state :gamma
21
- event :release do
22
- transitions :from => [:alpha, :beta, :gamma], :to => :beta
23
- end
24
- end
25
-
26
- def aasm_read_state
27
- :beta
28
- end
29
-
30
- def aasm_write_state(new_state)
31
- @persisted_store = new_state
32
- end
33
-
34
- def aasm_write_state_without_persistence(new_state)
35
- @transient_store = new_state
36
- end
37
- end
38
-
39
- class PersistedState < ActiveRecord::Base
40
- attr_accessor :transient_store, :persisted_store
41
- include AASM
42
- aasm do
43
- state :alpha, :initial => true
44
- state :beta
45
- state :gamma
46
- event :release do
47
- transitions :from => [:alpha, :beta, :gamma], :to => :beta
48
- end
49
- end
50
- end
51
-
52
- class ProvidedAndPersistedState < ActiveRecord::Base
53
- attr_accessor :transient_store, :persisted_store
54
- include AASM
55
- aasm do
56
- state :alpha, :initial => true
57
- state :beta
58
- state :gamma
59
- event :release do
60
- transitions :from => [:alpha, :beta, :gamma], :to => :beta
61
- end
62
- end
63
-
64
- def aasm_read_state
65
- :gamma
66
- end
67
-
68
- def aasm_write_state(new_state)
69
- @persisted_store = new_state
70
- end
71
-
72
- def aasm_write_state_without_persistence(new_state)
73
- @transient_store = new_state
74
- end
75
- end
@@ -1,21 +0,0 @@
1
- require 'active_record'
2
-
3
- class Father < ActiveRecord::Base
4
- include AASM
5
-
6
- aasm do
7
- state :missing_details, :initial => true
8
- state :pending_details_confirmation
9
-
10
- event :add_details do
11
- transitions :from => :missing_details, :to => :pending_details_confirmation
12
- end
13
- end
14
-
15
- def update_state
16
- if may_add_details?
17
- add_details!
18
- end
19
- end
20
-
21
- end
@@ -1,164 +0,0 @@
1
- class Gate < ActiveRecord::Base
2
- include AASM
3
-
4
- # Fake this column for testing purposes
5
- # attr_accessor :aasm_state
6
-
7
- def value
8
- 'value'
9
- end
10
-
11
- aasm do
12
- state :opened
13
- state :closed
14
-
15
- event :view do
16
- transitions :to => :read, :from => [:needs_attention]
17
- end
18
- end
19
- end
20
-
21
- class FalseState < ActiveRecord::Base
22
- include AASM
23
-
24
- def initialize(*args)
25
- super
26
- self.aasm_state = false
27
- end
28
-
29
- aasm do
30
- state :opened
31
- state :closed
32
-
33
- event :view do
34
- transitions :to => :read, :from => [:needs_attention]
35
- end
36
- end
37
- end
38
-
39
- class WithEnum < ActiveRecord::Base
40
- include AASM
41
-
42
- # Fake this column for testing purposes
43
- attr_accessor :aasm_state
44
-
45
- def self.test
46
- {}
47
- end
48
-
49
- aasm :enum => :test do
50
- state :opened
51
- state :closed
52
-
53
- event :view do
54
- transitions :to => :read, :from => [:needs_attention]
55
- end
56
- end
57
- end
58
-
59
- class WithTrueEnum < ActiveRecord::Base
60
- include AASM
61
-
62
- # Fake this column for testing purposes
63
- attr_accessor :aasm_state
64
-
65
- def value
66
- 'value'
67
- end
68
-
69
- aasm :enum => true do
70
- state :opened
71
- state :closed
72
-
73
- event :view do
74
- transitions :to => :read, :from => [:needs_attention]
75
- end
76
- end
77
- end
78
-
79
- class WithFalseEnum < ActiveRecord::Base
80
- include AASM
81
-
82
- # Fake this column for testing purposes
83
- attr_accessor :aasm_state
84
-
85
- aasm :enum => false do
86
- state :opened
87
- state :closed
88
-
89
- event :view do
90
- transitions :to => :read, :from => [:needs_attention]
91
- end
92
- end
93
- end
94
-
95
- class Reader < ActiveRecord::Base
96
- include AASM
97
-
98
- def aasm_read_state
99
- "fi"
100
- end
101
- end
102
-
103
- class Writer < ActiveRecord::Base
104
- def aasm_write_state(state)
105
- "fo"
106
- end
107
- include AASM
108
- end
109
-
110
- class Transient < ActiveRecord::Base
111
- def aasm_write_state_without_persistence(state)
112
- "fum"
113
- end
114
- include AASM
115
- end
116
-
117
- class SimpleNewDsl < ActiveRecord::Base
118
- include AASM
119
- aasm :column => :status
120
- aasm do
121
- state :unknown_scope
122
- state :new
123
- end
124
- end
125
-
126
- class NoScope < ActiveRecord::Base
127
- include AASM
128
- aasm :create_scopes => false do
129
- state :pending, :initial => true
130
- state :running
131
- event :run do
132
- transitions :from => :pending, :to => :running
133
- end
134
- end
135
- end
136
-
137
- class NoDirectAssignment < ActiveRecord::Base
138
- include AASM
139
- aasm :no_direct_assignment => true do
140
- state :pending, :initial => true
141
- state :running
142
- event :run do
143
- transitions :from => :pending, :to => :running
144
- end
145
- end
146
- end
147
-
148
- class DerivateNewDsl < SimpleNewDsl
149
- end
150
-
151
- class Thief < ActiveRecord::Base
152
- if ActiveRecord::VERSION::MAJOR >= 3
153
- self.table_name = 'thieves'
154
- else
155
- set_table_name "thieves"
156
- end
157
- include AASM
158
- aasm do
159
- state :rich
160
- state :jailed
161
- initial_state Proc.new {|thief| thief.skilled ? :rich : :jailed }
162
- end
163
- attr_accessor :skilled, :aasm_state
164
- end
data/spec/models/son.rb DELETED
@@ -1,3 +0,0 @@
1
- class Son < Father
2
- include AASM
3
- end