statesman 3.5.0 → 7.4.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 (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