statesman 3.5.0 → 7.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +49 -250
  3. data/.rubocop.yml +1 -1
  4. data/.rubocop_todo.yml +26 -6
  5. data/CHANGELOG.md +106 -0
  6. data/Gemfile +10 -4
  7. data/Guardfile +2 -0
  8. data/README.md +78 -48
  9. data/Rakefile +2 -4
  10. data/lib/generators/statesman/active_record_transition_generator.rb +2 -0
  11. data/lib/generators/statesman/generator_helpers.rb +2 -0
  12. data/lib/generators/statesman/migration_generator.rb +2 -0
  13. data/lib/statesman.rb +14 -4
  14. data/lib/statesman/adapters/active_record.rb +259 -37
  15. data/lib/statesman/adapters/active_record_queries.rb +100 -36
  16. data/lib/statesman/adapters/active_record_transition.rb +2 -0
  17. data/lib/statesman/adapters/memory.rb +2 -0
  18. data/lib/statesman/adapters/memory_transition.rb +2 -0
  19. data/lib/statesman/callback.rb +2 -0
  20. data/lib/statesman/config.rb +28 -0
  21. data/lib/statesman/exceptions.rb +34 -2
  22. data/lib/statesman/guard.rb +3 -4
  23. data/lib/statesman/machine.rb +29 -7
  24. data/lib/statesman/railtie.rb +2 -0
  25. data/lib/statesman/utils.rb +2 -0
  26. data/lib/statesman/version.rb +3 -1
  27. data/lib/tasks/statesman.rake +3 -1
  28. data/spec/fixtures/add_constraints_to_most_recent_for_bacon_transitions_with_partial_index.rb +2 -0
  29. data/spec/fixtures/add_constraints_to_most_recent_for_bacon_transitions_without_partial_index.rb +2 -0
  30. data/spec/fixtures/add_most_recent_to_bacon_transitions.rb +2 -0
  31. data/spec/generators/statesman/active_record_transition_generator_spec.rb +2 -0
  32. data/spec/generators/statesman/migration_generator_spec.rb +2 -0
  33. data/spec/spec_helper.rb +3 -30
  34. data/spec/statesman/adapters/active_record_queries_spec.rb +167 -91
  35. data/spec/statesman/adapters/active_record_spec.rb +15 -1
  36. data/spec/statesman/adapters/active_record_transition_spec.rb +2 -0
  37. data/spec/statesman/adapters/memory_spec.rb +2 -0
  38. data/spec/statesman/adapters/memory_transition_spec.rb +2 -0
  39. data/spec/statesman/adapters/shared_examples.rb +2 -0
  40. data/spec/statesman/callback_spec.rb +2 -0
  41. data/spec/statesman/config_spec.rb +2 -0
  42. data/spec/statesman/exceptions_spec.rb +88 -0
  43. data/spec/statesman/guard_spec.rb +2 -0
  44. data/spec/statesman/machine_spec.rb +79 -4
  45. data/spec/statesman/utils_spec.rb +2 -0
  46. data/spec/support/active_record.rb +9 -12
  47. data/spec/support/generators_shared_examples.rb +2 -0
  48. data/statesman.gemspec +19 -7
  49. metadata +40 -32
  50. data/lib/generators/statesman/mongoid_transition_generator.rb +0 -25
  51. data/lib/generators/statesman/templates/mongoid_transition_model.rb.erb +0 -14
  52. data/lib/statesman/adapters/mongoid.rb +0 -66
  53. data/lib/statesman/adapters/mongoid_transition.rb +0 -10
  54. data/spec/generators/statesman/mongoid_transition_generator_spec.rb +0 -23
  55. data/spec/statesman/adapters/mongoid_spec.rb +0 -86
  56. data/spec/support/mongoid.rb +0 -28
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  describe Statesman::Guard do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  describe Statesman::Machine do
@@ -57,7 +59,11 @@ describe Statesman::Machine do
57
59
  expect(instance).
58
60
  to receive(:transition_to).once.
59
61
  and_raise(StandardError)
60
- transition_state rescue nil # rubocop:disable RescueModifier
62
+ begin
63
+ transition_state
64
+ rescue StandardError
65
+ nil
66
+ end
61
67
  end
62
68
 
63
69
  it "re-raises the exception" do
@@ -86,7 +92,11 @@ describe Statesman::Machine do
86
92
  to receive(:transition_to).
87
93
  exactly(retry_attempts + 1).times.
88
94
  and_raise(Statesman::TransitionConflictError)
89
- transition_state rescue nil # rubocop:disable RescueModifier
95
+ begin
96
+ transition_state
97
+ rescue StandardError
98
+ nil
99
+ end
90
100
  end
91
101
 
92
102
  it "re-raises the conflict" do
@@ -320,6 +330,16 @@ describe Statesman::Machine do
320
330
  it_behaves_like "a callback store", :guard_transition, :guards
321
331
  end
322
332
 
333
+ describe ".after_transition_failure" do
334
+ it_behaves_like "a callback store",
335
+ :after_transition_failure,
336
+ :after_transition_failure
337
+ end
338
+
339
+ describe ".after_guard_failure" do
340
+ it_behaves_like "a callback store", :after_guard_failure, :after_guard_failure
341
+ end
342
+
323
343
  describe "#initialize" do
324
344
  it "accepts an object to manipulate" do
325
345
  machine_instance = machine.new(my_model)
@@ -609,8 +629,12 @@ describe Statesman::Machine do
609
629
 
610
630
  context "when the state cannot be transitioned to" do
611
631
  it "raises an error" do
632
+ # Hardcoding error message here to ensure backward
633
+ # compatibility as people may have been parsing the string
634
+ # to figure out the transitions involved.
612
635
  expect { instance.transition_to!(:z) }.
613
- to raise_error(Statesman::TransitionFailedError)
636
+ to raise_error(Statesman::TransitionFailedError,
637
+ "Cannot transition from 'x' to 'z'")
614
638
  end
615
639
  end
616
640
 
@@ -658,6 +682,24 @@ describe Statesman::Machine do
658
682
  end
659
683
  end
660
684
 
685
+ context "which covers all transitions" do
686
+ let(:result) { true }
687
+ let(:guard_cb) { ->(*_args) { false } }
688
+
689
+ before { machine.guard_transition(from: :x, to: :y, &guard_cb) }
690
+
691
+ it "raises an exception with the transition information" do
692
+ expect(guard_cb).to receive(:call).once.with(
693
+ my_model, instance.last_transition, {}
694
+ ).and_return(false)
695
+ expect { instance.transition_to!(:y) }.
696
+ to raise_error(
697
+ an_instance_of(Statesman::GuardFailedError).
698
+ and(having_attributes(from: "x", to: ["y"])),
699
+ )
700
+ end
701
+ end
702
+
661
703
  context "which passes" do
662
704
  it "changes state" do
663
705
  instance.transition_to!(:y)
@@ -672,6 +714,39 @@ describe Statesman::Machine do
672
714
  expect { instance.transition_to!(:y) }.
673
715
  to raise_error(Statesman::GuardFailedError)
674
716
  end
717
+
718
+ context "and a guard failed callback defined" do
719
+ let(:guard_failure_result) { true }
720
+ let(:guard_failure_cb) { ->(*_args) { guard_failure_result } }
721
+
722
+ before { machine.after_guard_failure(from: :x, to: :y, &guard_failure_cb) }
723
+
724
+ it "calls the failure callback" do
725
+ expect(guard_failure_cb).to receive(:call).once.with(
726
+ my_model, instance_of(Statesman::GuardFailedError)
727
+ ).and_return(guard_failure_result)
728
+ expect { instance.transition_to!(:y) }.
729
+ to raise_error(Statesman::GuardFailedError)
730
+ end
731
+ end
732
+ end
733
+ end
734
+
735
+ context "with a transition failed callback" do
736
+ let(:result) { true }
737
+ let(:transition_failed_cb) { ->(*_args) { result } }
738
+ let(:instance) { machine.new(my_model) }
739
+
740
+ before do
741
+ machine.after_transition_failure(&transition_failed_cb)
742
+ end
743
+
744
+ it "raises and exception and calls the callback" do
745
+ expect(transition_failed_cb).to receive(:call).once.with(
746
+ my_model, instance_of(Statesman::TransitionFailedError)
747
+ ).and_return(true)
748
+ expect { instance.transition_to!(:z) }.
749
+ to raise_error(Statesman::TransitionFailedError)
675
750
  end
676
751
  end
677
752
  end
@@ -695,7 +770,7 @@ describe Statesman::Machine do
695
770
  context "when it is unsuccesful" do
696
771
  before do
697
772
  allow(instance).to receive(:transition_to!).
698
- and_raise(Statesman::GuardFailedError)
773
+ and_raise(Statesman::GuardFailedError.new(:x, :some_state))
699
774
  end
700
775
 
701
776
  it { is_expected.to be_falsey }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  describe Statesman::Utils do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "json"
2
4
 
3
5
  MIGRATION_CLASS = if Rails.version.split(".").map(&:to_i).first >= 5
@@ -94,14 +96,12 @@ class CreateMyActiveRecordModelTransitionMigration < MIGRATION_CLASS
94
96
  %i[my_active_record_model_id most_recent],
95
97
  unique: true,
96
98
  where: "most_recent",
97
- name: "index_my_active_record_model_transitions_"\
98
- "parent_most_recent"
99
+ name: "index_my_active_record_model_transitions_parent_latest"
99
100
  else
100
101
  add_index :my_active_record_model_transitions,
101
102
  %i[my_active_record_model_id most_recent],
102
103
  unique: true,
103
- name: "index_my_active_record_model_transitions_"\
104
- "parent_most_recent"
104
+ name: "index_my_active_record_model_transitions_parent_latest"
105
105
  end
106
106
  end
107
107
  end
@@ -173,13 +173,13 @@ class CreateOtherActiveRecordModelTransitionMigration < MIGRATION_CLASS
173
173
  unique: true,
174
174
  where: "most_recent",
175
175
  name: "index_other_active_record_model_transitions_"\
176
- "parent_most_recent"
176
+ "parent_latest"
177
177
  else
178
178
  add_index :other_active_record_model_transitions,
179
179
  %i[other_active_record_model_id most_recent],
180
180
  unique: true,
181
181
  name: "index_other_active_record_model_transitions_"\
182
- "parent_most_recent"
182
+ "parent_latest"
183
183
  end
184
184
  end
185
185
  end
@@ -188,8 +188,7 @@ end
188
188
  class DropMostRecentColumn < MIGRATION_CLASS
189
189
  def change
190
190
  remove_index :my_active_record_model_transitions,
191
- name: "index_my_active_record_model_transitions_"\
192
- "parent_most_recent"
191
+ name: "index_my_active_record_model_transitions_parent_latest"
193
192
  remove_column :my_active_record_model_transitions, :most_recent
194
193
  end
195
194
  end
@@ -270,14 +269,12 @@ class CreateNamespacedARModelTransitionMigration < MIGRATION_CLASS
270
269
  %i[my_active_record_model_id most_recent],
271
270
  unique: true,
272
271
  where: "most_recent",
273
- name: "index_namespace_model_transitions_"\
274
- "parent_most_recent"
272
+ name: "index_namespace_model_transitions_parent_latest"
275
273
  else
276
274
  add_index :my_namespace_my_active_record_model_transitions,
277
275
  %i[my_active_record_model_id most_recent],
278
276
  unique: true,
279
- name: "index_namespace_model_transitions_"\
280
- "parent_most_recent"
277
+ name: "index_namespace_model_transitions_parent_latest"
281
278
  end
282
279
  end
283
280
  # rubocop:enable MethodLength
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "rails/version"
2
4
  require "rspec/rails"
3
5
  require "ammeter/init"
@@ -1,7 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path("lib", __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require "statesman/version"
4
6
 
7
+ GITHUB_URL = "https://github.com/gocardless/statesman"
8
+
5
9
  Gem::Specification.new do |spec|
6
10
  spec.name = "statesman"
7
11
  spec.version = Statesman::VERSION
@@ -9,7 +13,7 @@ Gem::Specification.new do |spec|
9
13
  spec.email = ["developers@gocardless.com"]
10
14
  spec.description = "A statesman-like state machine library"
11
15
  spec.summary = spec.description
12
- spec.homepage = "https://github.com/gocardless/statesman"
16
+ spec.homepage = GITHUB_URL
13
17
  spec.license = "MIT"
14
18
 
15
19
  spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
@@ -20,17 +24,25 @@ Gem::Specification.new do |spec|
20
24
  spec.required_ruby_version = ">= 2.2"
21
25
 
22
26
  spec.add_development_dependency "ammeter", "~> 1.1"
23
- spec.add_development_dependency "bundler", "~> 1.3"
27
+ spec.add_development_dependency "bundler", "~> 2.1.4"
24
28
  spec.add_development_dependency "gc_ruboconfig", "~> 2.3.9"
25
- spec.add_development_dependency "mysql2", "~> 0.4.0"
26
- spec.add_development_dependency "pg", "~> 0.18"
29
+ spec.add_development_dependency "mysql2", ">= 0.4", "< 0.6"
30
+ spec.add_development_dependency "pg", ">= 0.18", "<= 1.3"
27
31
  spec.add_development_dependency "pry"
28
- spec.add_development_dependency "rails", ">= 3.2"
29
- spec.add_development_dependency "rake", "~> 12.3.0"
32
+ spec.add_development_dependency "rails", ">= 5.2"
33
+ spec.add_development_dependency "rake", "~> 13.0.0"
30
34
  spec.add_development_dependency "rspec", "~> 3.1"
31
35
  spec.add_development_dependency "rspec-its", "~> 1.1"
32
36
  spec.add_development_dependency "rspec-rails", "~> 3.1"
33
37
  spec.add_development_dependency "rspec_junit_formatter", "~> 0.4.0"
34
- spec.add_development_dependency "sqlite3", "~> 1.3"
38
+ spec.add_development_dependency "sqlite3", "~> 1.4.2"
35
39
  spec.add_development_dependency "timecop", "~> 0.9.1"
40
+
41
+ spec.metadata = {
42
+ "bug_tracker_uri" => "#{GITHUB_URL}/issues",
43
+ "changelog_uri" => "#{GITHUB_URL}/blob/master/CHANGELOG.md",
44
+ "documentation_uri" => "#{GITHUB_URL}/blob/master/README.md",
45
+ "homepage_uri" => GITHUB_URL,
46
+ "source_code_uri" => GITHUB_URL,
47
+ }
36
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statesman
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0
4
+ version: 7.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GoCardless
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-02 00:00:00.000000000 Z
11
+ date: 2020-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ammeter
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.3'
33
+ version: 2.1.4
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.3'
40
+ version: 2.1.4
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: gc_ruboconfig
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -56,30 +56,42 @@ dependencies:
56
56
  name: mysql2
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 0.4.0
61
+ version: '0.4'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '0.6'
62
65
  type: :development
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
65
68
  requirements:
66
- - - "~>"
69
+ - - ">="
67
70
  - !ruby/object:Gem::Version
68
- version: 0.4.0
71
+ version: '0.4'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '0.6'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: pg
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
- - - "~>"
79
+ - - ">="
74
80
  - !ruby/object:Gem::Version
75
81
  version: '0.18'
82
+ - - "<="
83
+ - !ruby/object:Gem::Version
84
+ version: '1.3'
76
85
  type: :development
77
86
  prerelease: false
78
87
  version_requirements: !ruby/object:Gem::Requirement
79
88
  requirements:
80
- - - "~>"
89
+ - - ">="
81
90
  - !ruby/object:Gem::Version
82
91
  version: '0.18'
92
+ - - "<="
93
+ - !ruby/object:Gem::Version
94
+ version: '1.3'
83
95
  - !ruby/object:Gem::Dependency
84
96
  name: pry
85
97
  requirement: !ruby/object:Gem::Requirement
@@ -100,28 +112,28 @@ dependencies:
100
112
  requirements:
101
113
  - - ">="
102
114
  - !ruby/object:Gem::Version
103
- version: '3.2'
115
+ version: '5.2'
104
116
  type: :development
105
117
  prerelease: false
106
118
  version_requirements: !ruby/object:Gem::Requirement
107
119
  requirements:
108
120
  - - ">="
109
121
  - !ruby/object:Gem::Version
110
- version: '3.2'
122
+ version: '5.2'
111
123
  - !ruby/object:Gem::Dependency
112
124
  name: rake
113
125
  requirement: !ruby/object:Gem::Requirement
114
126
  requirements:
115
127
  - - "~>"
116
128
  - !ruby/object:Gem::Version
117
- version: 12.3.0
129
+ version: 13.0.0
118
130
  type: :development
119
131
  prerelease: false
120
132
  version_requirements: !ruby/object:Gem::Requirement
121
133
  requirements:
122
134
  - - "~>"
123
135
  - !ruby/object:Gem::Version
124
- version: 12.3.0
136
+ version: 13.0.0
125
137
  - !ruby/object:Gem::Dependency
126
138
  name: rspec
127
139
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +196,14 @@ dependencies:
184
196
  requirements:
185
197
  - - "~>"
186
198
  - !ruby/object:Gem::Version
187
- version: '1.3'
199
+ version: 1.4.2
188
200
  type: :development
189
201
  prerelease: false
190
202
  version_requirements: !ruby/object:Gem::Requirement
191
203
  requirements:
192
204
  - - "~>"
193
205
  - !ruby/object:Gem::Version
194
- version: '1.3'
206
+ version: 1.4.2
195
207
  - !ruby/object:Gem::Dependency
196
208
  name: timecop
197
209
  requirement: !ruby/object:Gem::Requirement
@@ -228,10 +240,8 @@ files:
228
240
  - lib/generators/statesman/active_record_transition_generator.rb
229
241
  - lib/generators/statesman/generator_helpers.rb
230
242
  - lib/generators/statesman/migration_generator.rb
231
- - lib/generators/statesman/mongoid_transition_generator.rb
232
243
  - lib/generators/statesman/templates/active_record_transition_model.rb.erb
233
244
  - lib/generators/statesman/templates/create_migration.rb.erb
234
- - lib/generators/statesman/templates/mongoid_transition_model.rb.erb
235
245
  - lib/generators/statesman/templates/update_migration.rb.erb
236
246
  - lib/statesman.rb
237
247
  - lib/statesman/adapters/active_record.rb
@@ -239,8 +249,6 @@ files:
239
249
  - lib/statesman/adapters/active_record_transition.rb
240
250
  - lib/statesman/adapters/memory.rb
241
251
  - lib/statesman/adapters/memory_transition.rb
242
- - lib/statesman/adapters/mongoid.rb
243
- - lib/statesman/adapters/mongoid_transition.rb
244
252
  - lib/statesman/callback.rb
245
253
  - lib/statesman/config.rb
246
254
  - lib/statesman/exceptions.rb
@@ -255,29 +263,32 @@ files:
255
263
  - spec/fixtures/add_most_recent_to_bacon_transitions.rb
256
264
  - spec/generators/statesman/active_record_transition_generator_spec.rb
257
265
  - spec/generators/statesman/migration_generator_spec.rb
258
- - spec/generators/statesman/mongoid_transition_generator_spec.rb
259
266
  - spec/spec_helper.rb
260
267
  - spec/statesman/adapters/active_record_queries_spec.rb
261
268
  - spec/statesman/adapters/active_record_spec.rb
262
269
  - spec/statesman/adapters/active_record_transition_spec.rb
263
270
  - spec/statesman/adapters/memory_spec.rb
264
271
  - spec/statesman/adapters/memory_transition_spec.rb
265
- - spec/statesman/adapters/mongoid_spec.rb
266
272
  - spec/statesman/adapters/shared_examples.rb
267
273
  - spec/statesman/callback_spec.rb
268
274
  - spec/statesman/config_spec.rb
275
+ - spec/statesman/exceptions_spec.rb
269
276
  - spec/statesman/guard_spec.rb
270
277
  - spec/statesman/machine_spec.rb
271
278
  - spec/statesman/utils_spec.rb
272
279
  - spec/support/active_record.rb
273
280
  - spec/support/generators_shared_examples.rb
274
- - spec/support/mongoid.rb
275
281
  - statesman.gemspec
276
282
  homepage: https://github.com/gocardless/statesman
277
283
  licenses:
278
284
  - MIT
279
- metadata: {}
280
- post_install_message:
285
+ metadata:
286
+ bug_tracker_uri: https://github.com/gocardless/statesman/issues
287
+ changelog_uri: https://github.com/gocardless/statesman/blob/master/CHANGELOG.md
288
+ documentation_uri: https://github.com/gocardless/statesman/blob/master/README.md
289
+ homepage_uri: https://github.com/gocardless/statesman
290
+ source_code_uri: https://github.com/gocardless/statesman
291
+ post_install_message:
281
292
  rdoc_options: []
282
293
  require_paths:
283
294
  - lib
@@ -292,9 +303,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
292
303
  - !ruby/object:Gem::Version
293
304
  version: '0'
294
305
  requirements: []
295
- rubyforge_project:
296
- rubygems_version: 2.6.14
297
- signing_key:
306
+ rubygems_version: 3.1.1
307
+ signing_key:
298
308
  specification_version: 4
299
309
  summary: A statesman-like state machine library
300
310
  test_files:
@@ -303,20 +313,18 @@ test_files:
303
313
  - spec/fixtures/add_most_recent_to_bacon_transitions.rb
304
314
  - spec/generators/statesman/active_record_transition_generator_spec.rb
305
315
  - spec/generators/statesman/migration_generator_spec.rb
306
- - spec/generators/statesman/mongoid_transition_generator_spec.rb
307
316
  - spec/spec_helper.rb
308
317
  - spec/statesman/adapters/active_record_queries_spec.rb
309
318
  - spec/statesman/adapters/active_record_spec.rb
310
319
  - spec/statesman/adapters/active_record_transition_spec.rb
311
320
  - spec/statesman/adapters/memory_spec.rb
312
321
  - spec/statesman/adapters/memory_transition_spec.rb
313
- - spec/statesman/adapters/mongoid_spec.rb
314
322
  - spec/statesman/adapters/shared_examples.rb
315
323
  - spec/statesman/callback_spec.rb
316
324
  - spec/statesman/config_spec.rb
325
+ - spec/statesman/exceptions_spec.rb
317
326
  - spec/statesman/guard_spec.rb
318
327
  - spec/statesman/machine_spec.rb
319
328
  - spec/statesman/utils_spec.rb
320
329
  - spec/support/active_record.rb
321
330
  - spec/support/generators_shared_examples.rb
322
- - spec/support/mongoid.rb