aasm 4.5.1 → 5.5.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 (186) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE +1 -1
  3. data/README.md +809 -129
  4. data/lib/aasm/aasm.rb +74 -37
  5. data/lib/aasm/base.rb +188 -41
  6. data/lib/aasm/configuration.rb +27 -2
  7. data/lib/aasm/core/event.rb +75 -47
  8. data/lib/aasm/core/invoker.rb +129 -0
  9. data/lib/aasm/core/invokers/base_invoker.rb +75 -0
  10. data/lib/aasm/core/invokers/class_invoker.rb +52 -0
  11. data/lib/aasm/core/invokers/literal_invoker.rb +49 -0
  12. data/lib/aasm/core/invokers/proc_invoker.rb +59 -0
  13. data/lib/aasm/core/state.rb +22 -13
  14. data/lib/aasm/core/transition.rb +30 -23
  15. data/lib/aasm/dsl_helper.rb +24 -22
  16. data/lib/aasm/errors.rb +8 -5
  17. data/lib/aasm/instance_base.rb +63 -15
  18. data/lib/aasm/localizer.rb +13 -3
  19. data/lib/aasm/minitest/allow_event.rb +13 -0
  20. data/lib/aasm/minitest/allow_transition_to.rb +13 -0
  21. data/lib/aasm/minitest/have_state.rb +13 -0
  22. data/lib/aasm/minitest/transition_from.rb +21 -0
  23. data/lib/aasm/minitest.rb +5 -0
  24. data/lib/aasm/minitest_spec.rb +15 -0
  25. data/lib/aasm/persistence/active_record_persistence.rb +87 -79
  26. data/lib/aasm/persistence/base.rb +30 -30
  27. data/lib/aasm/persistence/core_data_query_persistence.rb +94 -0
  28. data/lib/aasm/persistence/dynamoid_persistence.rb +92 -0
  29. data/lib/aasm/persistence/mongoid_persistence.rb +49 -35
  30. data/lib/aasm/persistence/no_brainer_persistence.rb +105 -0
  31. data/lib/aasm/persistence/orm.rb +154 -0
  32. data/lib/aasm/persistence/plain_persistence.rb +2 -1
  33. data/lib/aasm/persistence/redis_persistence.rb +112 -0
  34. data/lib/aasm/persistence/sequel_persistence.rb +37 -67
  35. data/lib/aasm/persistence.rb +20 -5
  36. data/lib/aasm/rspec/allow_event.rb +5 -1
  37. data/lib/aasm/rspec/allow_transition_to.rb +5 -1
  38. data/lib/aasm/rspec/transition_from.rb +8 -4
  39. data/lib/aasm/state_machine.rb +6 -12
  40. data/lib/aasm/state_machine_store.rb +76 -0
  41. data/lib/aasm/version.rb +1 -1
  42. data/lib/aasm.rb +8 -2
  43. data/lib/generators/aasm/aasm_generator.rb +16 -0
  44. data/lib/generators/aasm/orm_helpers.rb +41 -0
  45. data/lib/generators/active_record/aasm_generator.rb +40 -0
  46. data/lib/generators/active_record/templates/migration.rb +8 -0
  47. data/lib/generators/active_record/templates/migration_existing.rb +5 -0
  48. data/lib/generators/mongoid/aasm_generator.rb +28 -0
  49. data/lib/generators/nobrainer/aasm_generator.rb +28 -0
  50. data/lib/motion-aasm.rb +37 -0
  51. metadata +104 -259
  52. data/.document +0 -6
  53. data/.gitignore +0 -19
  54. data/.travis.yml +0 -37
  55. data/API +0 -34
  56. data/CHANGELOG.md +0 -272
  57. data/CODE_OF_CONDUCT.md +0 -13
  58. data/Gemfile +0 -15
  59. data/HOWTO +0 -12
  60. data/PLANNED_CHANGES.md +0 -11
  61. data/README_FROM_VERSION_3_TO_4.md +0 -240
  62. data/Rakefile +0 -26
  63. data/aasm.gemspec +0 -31
  64. data/callbacks.txt +0 -51
  65. data/gemfiles/rails_3.2.gemfile +0 -14
  66. data/gemfiles/rails_4.0.gemfile +0 -12
  67. data/gemfiles/rails_4.0_mongo_mapper.gemfile +0 -14
  68. data/gemfiles/rails_4.1.gemfile +0 -12
  69. data/gemfiles/rails_4.1_mongo_mapper.gemfile +0 -14
  70. data/gemfiles/rails_4.2.gemfile +0 -12
  71. data/gemfiles/rails_4.2_mongo_mapper.gemfile +0 -14
  72. data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -12
  73. data/lib/aasm/persistence/mongo_mapper_persistence.rb +0 -157
  74. data/spec/database.rb +0 -63
  75. data/spec/database.yml +0 -3
  76. data/spec/en.yml +0 -9
  77. data/spec/en_deprecated_style.yml +0 -10
  78. data/spec/models/active_record/basic_active_record_two_state_machines_example.rb +0 -25
  79. data/spec/models/active_record/complex_active_record_example.rb +0 -33
  80. data/spec/models/active_record/derivate_new_dsl.rb +0 -7
  81. data/spec/models/active_record/false_state.rb +0 -35
  82. data/spec/models/active_record/gate.rb +0 -39
  83. data/spec/models/active_record/localizer_test_model.rb +0 -34
  84. data/spec/models/active_record/no_direct_assignment.rb +0 -21
  85. data/spec/models/active_record/no_scope.rb +0 -21
  86. data/spec/models/active_record/persisted_state.rb +0 -12
  87. data/spec/models/active_record/provided_and_persisted_state.rb +0 -24
  88. data/spec/models/active_record/reader.rb +0 -7
  89. data/spec/models/active_record/readme_job.rb +0 -21
  90. data/spec/models/active_record/simple_new_dsl.rb +0 -17
  91. data/spec/models/active_record/thief.rb +0 -29
  92. data/spec/models/active_record/transient.rb +0 -6
  93. data/spec/models/active_record/with_enum.rb +0 -39
  94. data/spec/models/active_record/with_false_enum.rb +0 -31
  95. data/spec/models/active_record/with_true_enum.rb +0 -39
  96. data/spec/models/active_record/writer.rb +0 -6
  97. data/spec/models/basic_two_state_machines_example.rb +0 -25
  98. data/spec/models/callbacks/basic.rb +0 -78
  99. data/spec/models/callbacks/basic_multiple.rb +0 -75
  100. data/spec/models/callbacks/guard_within_block.rb +0 -66
  101. data/spec/models/callbacks/guard_within_block_multiple.rb +0 -66
  102. data/spec/models/callbacks/multiple_transitions_transition_guard.rb +0 -65
  103. data/spec/models/callbacks/multiple_transitions_transition_guard_multiple.rb +0 -65
  104. data/spec/models/callbacks/private_method.rb +0 -44
  105. data/spec/models/callbacks/private_method_multiple.rb +0 -44
  106. data/spec/models/callbacks/with_args.rb +0 -61
  107. data/spec/models/callbacks/with_args_multiple.rb +0 -61
  108. data/spec/models/callbacks/with_state_arg.rb +0 -26
  109. data/spec/models/callbacks/with_state_arg_multiple.rb +0 -26
  110. data/spec/models/complex_example.rb +0 -222
  111. data/spec/models/conversation.rb +0 -93
  112. data/spec/models/default_state.rb +0 -12
  113. data/spec/models/double_definer.rb +0 -21
  114. data/spec/models/foo.rb +0 -92
  115. data/spec/models/foo_callback_multiple.rb +0 -45
  116. data/spec/models/guardian.rb +0 -48
  117. data/spec/models/guardian_multiple.rb +0 -48
  118. data/spec/models/initial_state_proc.rb +0 -31
  119. data/spec/models/invalid_persistor.rb +0 -31
  120. data/spec/models/mongo_mapper/complex_mongo_mapper_example.rb +0 -37
  121. data/spec/models/mongo_mapper/no_scope_mongo_mapper.rb +0 -21
  122. data/spec/models/mongo_mapper/simple_mongo_mapper.rb +0 -23
  123. data/spec/models/mongo_mapper/simple_new_dsl_mongo_mapper.rb +0 -25
  124. data/spec/models/mongoid/complex_mongoid_example.rb +0 -37
  125. data/spec/models/mongoid/no_scope_mongoid.rb +0 -21
  126. data/spec/models/mongoid/simple_mongoid.rb +0 -23
  127. data/spec/models/mongoid/simple_new_dsl_mongoid.rb +0 -25
  128. data/spec/models/no_initial_state.rb +0 -25
  129. data/spec/models/not_auto_loaded/process.rb +0 -21
  130. data/spec/models/parametrised_event.rb +0 -29
  131. data/spec/models/parametrised_event_multiple.rb +0 -29
  132. data/spec/models/process_with_new_dsl.rb +0 -31
  133. data/spec/models/provided_state.rb +0 -24
  134. data/spec/models/sequel/complex_sequel_example.rb +0 -45
  135. data/spec/models/sequel/sequel_multiple.rb +0 -25
  136. data/spec/models/sequel/sequel_simple.rb +0 -25
  137. data/spec/models/silencer.rb +0 -27
  138. data/spec/models/simple_example.rb +0 -15
  139. data/spec/models/simple_multiple_example.rb +0 -30
  140. data/spec/models/state_machine_with_failed_event.rb +0 -12
  141. data/spec/models/sub_class.rb +0 -7
  142. data/spec/models/sub_class_with_more_states.rb +0 -18
  143. data/spec/models/sub_classing.rb +0 -3
  144. data/spec/models/super_class.rb +0 -46
  145. data/spec/models/this_name_better_not_be_in_use.rb +0 -11
  146. data/spec/models/transactor.rb +0 -53
  147. data/spec/models/valid_state_name.rb +0 -23
  148. data/spec/models/validator.rb +0 -79
  149. data/spec/models/worker.rb +0 -2
  150. data/spec/spec_helper.rb +0 -25
  151. data/spec/unit/api_spec.rb +0 -77
  152. data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
  153. data/spec/unit/callback_multiple_spec.rb +0 -295
  154. data/spec/unit/callbacks_spec.rb +0 -296
  155. data/spec/unit/complex_example_spec.rb +0 -84
  156. data/spec/unit/complex_multiple_example_spec.rb +0 -99
  157. data/spec/unit/edge_cases_spec.rb +0 -16
  158. data/spec/unit/event_multiple_spec.rb +0 -73
  159. data/spec/unit/event_naming_spec.rb +0 -11
  160. data/spec/unit/event_spec.rb +0 -322
  161. data/spec/unit/guard_multiple_spec.rb +0 -60
  162. data/spec/unit/guard_spec.rb +0 -60
  163. data/spec/unit/initial_state_multiple_spec.rb +0 -15
  164. data/spec/unit/initial_state_spec.rb +0 -12
  165. data/spec/unit/inspection_multiple_spec.rb +0 -201
  166. data/spec/unit/inspection_spec.rb +0 -111
  167. data/spec/unit/localizer_spec.rb +0 -76
  168. data/spec/unit/memory_leak_spec.rb +0 -38
  169. data/spec/unit/new_dsl_spec.rb +0 -12
  170. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +0 -573
  171. data/spec/unit/persistence/active_record_persistence_spec.rb +0 -552
  172. data/spec/unit/persistence/mongo_mapper_persistence_multiple_spec.rb +0 -146
  173. data/spec/unit/persistence/mongo_mapper_persistence_spec.rb +0 -93
  174. data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +0 -127
  175. data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -79
  176. data/spec/unit/persistence/sequel_persistence_multiple_spec.rb +0 -153
  177. data/spec/unit/persistence/sequel_persistence_spec.rb +0 -100
  178. data/spec/unit/readme_spec.rb +0 -42
  179. data/spec/unit/reloading_spec.rb +0 -15
  180. data/spec/unit/rspec_matcher_spec.rb +0 -79
  181. data/spec/unit/simple_example_spec.rb +0 -42
  182. data/spec/unit/simple_multiple_example_spec.rb +0 -63
  183. data/spec/unit/state_spec.rb +0 -89
  184. data/spec/unit/subclassing_multiple_spec.rb +0 -39
  185. data/spec/unit/subclassing_spec.rb +0 -31
  186. data/spec/unit/transition_spec.rb +0 -291
@@ -1,201 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'inspection for common cases' do
4
- it 'should support the new DSL' do
5
- # 1st state machine
6
- expect(FooMultiple.aasm(:left)).to respond_to(:states)
7
- expect(FooMultiple.aasm(:left).states.size).to eql 3
8
- expect(FooMultiple.aasm(:left).states).to include(:open)
9
- expect(FooMultiple.aasm(:left).states).to include(:closed)
10
- expect(FooMultiple.aasm(:left).states).to include(:final)
11
-
12
- expect(FooMultiple.aasm(:left)).to respond_to(:initial_state)
13
- expect(FooMultiple.aasm(:left).initial_state).to eq(:open)
14
-
15
- expect(FooMultiple.aasm(:left)).to respond_to(:events)
16
- expect(FooMultiple.aasm(:left).events.size).to eql 2
17
- expect(FooMultiple.aasm(:left).events).to include(:close)
18
- expect(FooMultiple.aasm(:left).events).to include(:null)
19
-
20
- # 2nd state machine
21
- expect(FooMultiple.aasm(:right)).to respond_to(:states)
22
- expect(FooMultiple.aasm(:right).states.size).to eql 3
23
- expect(FooMultiple.aasm(:right).states).to include(:green)
24
- expect(FooMultiple.aasm(:right).states).to include(:yellow)
25
- expect(FooMultiple.aasm(:right).states).to include(:red)
26
-
27
- expect(FooMultiple.aasm(:right)).to respond_to(:initial_state)
28
- expect(FooMultiple.aasm(:right).initial_state).to eq(:green)
29
-
30
- expect(FooMultiple.aasm(:right)).to respond_to(:events)
31
- expect(FooMultiple.aasm(:right).events.size).to eql 3
32
- expect(FooMultiple.aasm(:right).events).to include(:green)
33
- expect(FooMultiple.aasm(:right).events).to include(:yellow)
34
- expect(FooMultiple.aasm(:right).events).to include(:red)
35
- end
36
-
37
- context "instance level inspection" do
38
- let(:foo) { FooMultiple.new }
39
- let(:two) { FooTwoMultiple.new }
40
-
41
- it "delivers all states" do
42
- # 1st state machine
43
- states = foo.aasm(:left).states
44
- expect(states.size).to eql 3
45
- expect(states).to include(:open)
46
- expect(states).to include(:closed)
47
- expect(states).to include(:final)
48
-
49
- states = foo.aasm(:left).states(:permitted => true)
50
- expect(states.size).to eql 1
51
- expect(states).to include(:closed)
52
- expect(states).not_to include(:open)
53
- expect(states).not_to include(:final)
54
-
55
- foo.close
56
- expect(foo.aasm(:left).states(:permitted => true)).to be_empty
57
-
58
- # 2nd state machine
59
- states = foo.aasm(:right).states
60
- expect(states.size).to eql 3
61
- expect(states).to include(:green)
62
- expect(states).to include(:yellow)
63
- expect(states).to include(:red)
64
-
65
- states = foo.aasm(:right).states(:permitted => true)
66
- expect(states.size).to eql 1
67
- expect(states).to include(:yellow)
68
- expect(states).not_to include(:green)
69
- expect(states).not_to include(:red)
70
-
71
- foo.yellow
72
- states = foo.aasm(:right).states(:permitted => true)
73
- expect(states.size).to eql 2
74
- expect(states).to include(:red)
75
- expect(states).to include(:green)
76
- expect(states).not_to include(:yellow)
77
- end
78
-
79
- it "delivers all states for subclasses" do
80
- # 1st state machine
81
- states = two.aasm(:left).states
82
- expect(states.size).to eql 4
83
- expect(states).to include(:open)
84
- expect(states).to include(:closed)
85
- expect(states).to include(:final)
86
- expect(states).to include(:foo)
87
-
88
- states = two.aasm(:left).states(:permitted => true)
89
- expect(states.size).to eql 1
90
- expect(states).to include(:closed)
91
- expect(states).not_to include(:open)
92
-
93
- two.close
94
- expect(two.aasm(:left).states(:permitted => true)).to be_empty
95
-
96
- # 2nd state machine
97
- states = two.aasm(:right).states
98
- expect(states.size).to eql 4
99
- expect(states).to include(:green)
100
- expect(states).to include(:yellow)
101
- expect(states).to include(:red)
102
- expect(states).to include(:bar)
103
-
104
- states = two.aasm(:right).states(:permitted => true)
105
- expect(states.size).to eql 1
106
- expect(states).to include(:yellow)
107
- expect(states).not_to include(:red)
108
- expect(states).not_to include(:green)
109
- expect(states).not_to include(:bar)
110
-
111
- two.yellow
112
- states = two.aasm(:right).states(:permitted => true)
113
- expect(states.size).to eql 2
114
- expect(states).to include(:green)
115
- expect(states).to include(:red)
116
- expect(states).not_to include(:yellow)
117
- expect(states).not_to include(:bar)
118
- end
119
-
120
- it "delivers all events" do
121
- # 1st state machine
122
- events = foo.aasm(:left).events
123
- expect(events.size).to eql 2
124
- expect(events).to include(:close)
125
- expect(events).to include(:null)
126
-
127
- foo.close
128
- expect(foo.aasm(:left).events).to be_empty
129
-
130
- # 2nd state machine
131
- events = foo.aasm(:right).events
132
- expect(events.size).to eql 1
133
- expect(events).to include(:yellow)
134
- expect(events).not_to include(:green)
135
- expect(events).not_to include(:red)
136
-
137
- foo.yellow
138
- events = foo.aasm(:right).events
139
- expect(events.size).to eql 2
140
- expect(events).to include(:green)
141
- expect(events).to include(:red)
142
- expect(events).not_to include(:yellow)
143
- end
144
- end
145
-
146
- it 'should list states in the order they have been defined' do
147
- expect(ConversationMultiple.aasm(:left).states).to eq([
148
- :needs_attention, :read, :closed, :awaiting_response, :junk
149
- ])
150
- end
151
- end
152
-
153
- describe "special cases" do
154
- it "should support valid as state name" do
155
- expect(ValidStateNameMultiple.aasm(:left).states).to include(:invalid)
156
- expect(ValidStateNameMultiple.aasm(:left).states).to include(:valid)
157
-
158
- argument = ValidStateNameMultiple.new
159
- expect(argument.invalid?).to be_truthy
160
- expect(argument.aasm(:left).current_state).to eq(:invalid)
161
-
162
- argument.valid!
163
- expect(argument.valid?).to be_truthy
164
- expect(argument.aasm(:left).current_state).to eq(:valid)
165
- end
166
- end
167
-
168
- describe 'aasm.states_for_select' do
169
- it "should return a select friendly array of states" do
170
- expect(FooMultiple.aasm(:left)).to respond_to(:states_for_select)
171
- expect(FooMultiple.aasm(:left).states_for_select).to eq(
172
- [['Open', 'open'], ['Closed', 'closed'], ['Final', 'final']]
173
- )
174
- end
175
- end
176
-
177
- describe 'aasm.from_states_for_state' do
178
- it "should return all from states for a state" do
179
- expect(ComplexExampleMultiple.aasm(:left)).to respond_to(:from_states_for_state)
180
- froms = ComplexExampleMultiple.aasm(:left).from_states_for_state(:active)
181
- [:pending, :passive, :suspended].each {|from| expect(froms).to include(from)}
182
- end
183
-
184
- it "should return from states for a state for a particular transition only" do
185
- froms = ComplexExampleMultiple.aasm(:left).from_states_for_state(:active, :transition => :left_unsuspend)
186
- [:suspended].each {|from| expect(froms).to include(from)}
187
- end
188
- end
189
-
190
- describe 'permitted events' do
191
- let(:foo) {FooMultiple.new}
192
-
193
- it 'work' do
194
- expect(foo.aasm(:left).events(:permitted => true)).to include(:close)
195
- expect(foo.aasm(:left).events(:permitted => true)).not_to include(:null)
196
-
197
- expect(foo.aasm(:right).events(:permitted => true)).to include(:yellow)
198
- expect(foo.aasm(:right).events(:permitted => true)).not_to include(:green)
199
- expect(foo.aasm(:right).events(:permitted => true)).not_to include(:red)
200
- end
201
- end
@@ -1,111 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'inspection for common cases' do
4
- it 'should support the new DSL' do
5
- expect(Foo.aasm).to respond_to(:states)
6
- expect(Foo.aasm.states).to include(:open)
7
- expect(Foo.aasm.states).to include(:closed)
8
-
9
- expect(Foo.aasm).to respond_to(:initial_state)
10
- expect(Foo.aasm.initial_state).to eq(:open)
11
-
12
- expect(Foo.aasm).to respond_to(:events)
13
- expect(Foo.aasm.events).to include(:close)
14
- expect(Foo.aasm.events).to include(:null)
15
- end
16
-
17
- context "instance level inspection" do
18
- let(:foo) { Foo.new }
19
- let(:two) { FooTwo.new }
20
-
21
- it "delivers all states" do
22
- states = foo.aasm.states
23
- expect(states).to include(:open)
24
- expect(states).to include(:closed)
25
- expect(states).to include(:final)
26
-
27
- states = foo.aasm.states(:permitted => true)
28
- expect(states).to include(:closed)
29
- expect(states).not_to include(:open)
30
- expect(states).not_to include(:final)
31
-
32
- foo.close
33
- expect(foo.aasm.states(:permitted => true)).to be_empty
34
- end
35
-
36
- it "delivers all states for subclasses" do
37
- states = two.aasm.states
38
- expect(states).to include(:open)
39
- expect(states).to include(:closed)
40
- expect(states).to include(:foo)
41
-
42
- states = two.aasm.states(:permitted => true)
43
- expect(states).to include(:closed)
44
- expect(states).not_to include(:open)
45
-
46
- two.close
47
- expect(two.aasm.states(:permitted => true)).to be_empty
48
- end
49
-
50
- it "delivers all events" do
51
- events = foo.aasm.events
52
- expect(events).to include(:close)
53
- expect(events).to include(:null)
54
- foo.close
55
- expect(foo.aasm.events).to be_empty
56
- end
57
- end
58
-
59
- it 'should list states in the order they have been defined' do
60
- expect(Conversation.aasm.states).to eq([:needs_attention, :read, :closed, :awaiting_response, :junk])
61
- end
62
- end
63
-
64
- describe "special cases" do
65
- it "should support valid as state name" do
66
- expect(ValidStateName.aasm.states).to include(:invalid)
67
- expect(ValidStateName.aasm.states).to include(:valid)
68
-
69
- argument = ValidStateName.new
70
- expect(argument.invalid?).to be_truthy
71
- expect(argument.aasm.current_state).to eq(:invalid)
72
-
73
- argument.valid!
74
- expect(argument.valid?).to be_truthy
75
- expect(argument.aasm.current_state).to eq(:valid)
76
- end
77
- end
78
-
79
- describe 'aasm.states_for_select' do
80
- it "should return a select friendly array of states" do
81
- expect(Foo.aasm).to respond_to(:states_for_select)
82
- expect(Foo.aasm.states_for_select).to eq([['Open', 'open'], ['Closed', 'closed'], ['Final', 'final']])
83
- end
84
- end
85
-
86
- describe 'aasm.from_states_for_state' do
87
- it "should return all from states for a state" do
88
- expect(ComplexExample.aasm).to respond_to(:from_states_for_state)
89
- froms = ComplexExample.aasm.from_states_for_state(:active)
90
- [:pending, :passive, :suspended].each {|from| expect(froms).to include(from)}
91
- end
92
-
93
- it "should return from states for a state for a particular transition only" do
94
- froms = ComplexExample.aasm.from_states_for_state(:active, :transition => :unsuspend)
95
- [:suspended].each {|from| expect(froms).to include(from)}
96
- end
97
- end
98
-
99
- describe 'permitted events' do
100
- let(:foo) {Foo.new}
101
-
102
- it 'work' do
103
- expect(foo.aasm.events(:permitted => true)).to include(:close)
104
- expect(foo.aasm.events(:permitted => true)).not_to include(:null)
105
- end
106
-
107
- it 'should not include events in the reject option' do
108
- expect(foo.aasm.events(:permitted => true, reject: :close)).not_to include(:close)
109
- expect(foo.aasm.events(:permitted => true, reject: [:close])).not_to include(:close)
110
- end
111
- end
@@ -1,76 +0,0 @@
1
- require 'spec_helper'
2
- require 'active_record'
3
- require 'i18n'
4
-
5
- I18n.enforce_available_locales = false
6
- load_schema
7
-
8
- describe AASM::Localizer, "new style" do
9
- before(:all) do
10
- I18n.load_path << 'spec/en.yml'
11
- I18n.default_locale = :en
12
- I18n.reload!
13
- end
14
-
15
- after(:all) do
16
- I18n.load_path.clear
17
- end
18
-
19
- let (:foo_opened) { LocalizerTestModel.new }
20
- let (:foo_closed) { LocalizerTestModel.new.tap { |x| x.aasm_state = :closed } }
21
-
22
- context 'aasm.human_state' do
23
- it 'should return translated state value' do
24
- expect(foo_opened.aasm.human_state).to eq("It's open now!")
25
- end
26
-
27
- it 'should return humanized value if not localized' do
28
- expect(foo_closed.aasm.human_state).to eq("Closed")
29
- end
30
- end
31
-
32
- context 'aasm.human_event_name' do
33
- it 'should return translated event name' do
34
- expect(LocalizerTestModel.aasm.human_event_name(:close)).to eq("Let's close it!")
35
- end
36
-
37
- it 'should return humanized event name' do
38
- expect(LocalizerTestModel.aasm.human_event_name(:open)).to eq("Open")
39
- end
40
- end
41
- end
42
-
43
- describe AASM::Localizer, "deprecated style" do
44
- before(:all) do
45
- I18n.load_path << 'spec/en_deprecated_style.yml'
46
- I18n.default_locale = :en
47
- I18n.reload!
48
- end
49
-
50
- after(:all) do
51
- I18n.load_path.clear
52
- end
53
-
54
- let (:foo_opened) { LocalizerTestModel.new }
55
- let (:foo_closed) { LocalizerTestModel.new.tap { |x| x.aasm_state = :closed } }
56
-
57
- context 'aasm.human_state' do
58
- it 'should return translated state value' do
59
- expect(foo_opened.aasm.human_state).to eq("It's open now!")
60
- end
61
-
62
- it 'should return humanized value if not localized' do
63
- expect(foo_closed.aasm.human_state).to eq("Closed")
64
- end
65
- end
66
-
67
- context 'aasm.human_event_name' do
68
- it 'should return translated event name' do
69
- expect(LocalizerTestModel.aasm.human_event_name(:close)).to eq("Let's close it!")
70
- end
71
-
72
- it 'should return humanized event name' do
73
- expect(LocalizerTestModel.aasm.human_event_name(:open)).to eq("Open")
74
- end
75
- end
76
- end
@@ -1,38 +0,0 @@
1
- # require 'spec_helper'
2
-
3
- # describe "state machines" do
4
-
5
- # def number_of_objects(klass)
6
- # ObjectSpace.each_object(klass) {}
7
- # end
8
-
9
- # def machines
10
- # AASM::StateMachine.instance_variable_get("@machines")
11
- # end
12
-
13
- # it "should be created without memory leak" do
14
- # machines_count = machines.size
15
- # state_count = number_of_objects(AASM::Core::State)
16
- # event_count = number_of_objects(AASM::Core::Event)
17
- # puts "event_count = #{event_count}"
18
- # transition_count = number_of_objects(AASM::Core::Transition)
19
-
20
- # load File.expand_path(File.dirname(__FILE__) + '/../models/not_auto_loaded/process.rb')
21
- # machines.size.should == machines_count + 1 # + Process
22
- # number_of_objects(Models::Process).should == 0
23
- # number_of_objects(AASM::Core::State).should == state_count + 3 # + Process
24
- # puts "event_count = #{number_of_objects(AASM::Core::Event)}"
25
- # number_of_objects(AASM::Core::Event).should == event_count + 2 # + Process
26
- # number_of_objects(AASM::Core::Transition).should == transition_count + 2 # + Process
27
-
28
- # Models.send(:remove_const, "Process") if Models.const_defined?("Process")
29
- # load File.expand_path(File.dirname(__FILE__) + '/../models/not_auto_loaded/process.rb')
30
- # machines.size.should == machines_count + 1 # + Process
31
- # number_of_objects(AASM::Core::State).should == state_count + 3 # + Process
32
- # # ObjectSpace.each_object(AASM::Core::Event) {|o| puts o.inspect}
33
- # puts "event_count = #{number_of_objects(AASM::Core::Event)}"
34
- # number_of_objects(AASM::Core::Event).should == event_count + 2 # + Process
35
- # number_of_objects(AASM::Core::Transition).should == transition_count + 2 # + Process
36
- # end
37
-
38
- # end
@@ -1,12 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "the new dsl" do
4
-
5
- let(:process) {ProcessWithNewDsl.new}
6
-
7
- it 'should not conflict with other event or state methods' do
8
- expect {ProcessWithNewDsl.state}.to raise_error(RuntimeError, "wrong state method")
9
- expect {ProcessWithNewDsl.event}.to raise_error(RuntimeError, "wrong event method")
10
- end
11
-
12
- end