aasm 5.1.0 → 5.3.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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +100 -0
  3. data/Appraisals +18 -34
  4. data/CHANGELOG.md +28 -0
  5. data/Gemfile +3 -2
  6. data/README.md +93 -15
  7. data/aasm.gemspec +1 -1
  8. data/gemfiles/norails.gemfile +1 -0
  9. data/gemfiles/rails_4.2.gemfile +2 -2
  10. data/gemfiles/rails_4.2_mongoid_5.gemfile +2 -2
  11. data/gemfiles/rails_4.2_nobrainer.gemfile +2 -1
  12. data/gemfiles/rails_5.2.gemfile +2 -2
  13. data/gemfiles/rails_6.0.gemfile +14 -0
  14. data/gemfiles/rails_6.1.gemfile +14 -0
  15. data/gemfiles/rails_7.0.gemfile +14 -0
  16. data/lib/aasm/base.rb +44 -12
  17. data/lib/aasm/configuration.rb +3 -0
  18. data/lib/aasm/core/event.rb +12 -6
  19. data/lib/aasm/core/state.rb +6 -5
  20. data/lib/aasm/core/transition.rb +1 -1
  21. data/lib/aasm/dsl_helper.rb +24 -22
  22. data/lib/aasm/instance_base.rb +14 -4
  23. data/lib/aasm/localizer.rb +13 -3
  24. data/lib/aasm/persistence/active_record_persistence.rb +18 -13
  25. data/lib/aasm/persistence/base.rb +13 -2
  26. data/lib/aasm/persistence/orm.rb +1 -1
  27. data/lib/aasm/version.rb +1 -1
  28. data/lib/aasm.rb +0 -2
  29. data/lib/generators/active_record/templates/migration.rb +1 -1
  30. data/spec/database.rb +9 -11
  31. data/spec/en.yml +0 -3
  32. data/spec/{en_deprecated_style.yml → localizer_test_model_deprecated_style.yml} +6 -3
  33. data/spec/localizer_test_model_new_style.yml +11 -0
  34. data/spec/models/active_record/localizer_test_model.rb +11 -3
  35. data/spec/models/active_record/namespaced.rb +16 -0
  36. data/spec/models/active_record/timestamp_example.rb +16 -0
  37. data/spec/models/default_state.rb +1 -1
  38. data/spec/models/event_with_keyword_arguments.rb +16 -0
  39. data/spec/models/mongoid/timestamp_example_mongoid.rb +20 -0
  40. data/spec/models/timestamps_example.rb +19 -0
  41. data/spec/models/timestamps_with_named_machine_example.rb +13 -0
  42. data/spec/spec_helper.rb +5 -0
  43. data/spec/spec_helpers/dynamoid.rb +5 -1
  44. data/spec/unit/api_spec.rb +4 -0
  45. data/spec/unit/callbacks_spec.rb +34 -4
  46. data/spec/unit/complex_example_spec.rb +8 -0
  47. data/spec/unit/event_with_keyword_arguments_spec.rb +10 -0
  48. data/spec/unit/inspection_multiple_spec.rb +9 -5
  49. data/spec/unit/inspection_spec.rb +7 -3
  50. data/spec/unit/localizer_spec.rb +49 -18
  51. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +17 -0
  52. data/spec/unit/persistence/active_record_persistence_spec.rb +12 -0
  53. data/spec/unit/persistence/mongoid_persistence_spec.rb +12 -0
  54. data/spec/unit/state_spec.rb +21 -5
  55. data/spec/unit/timestamps_spec.rb +32 -0
  56. data/test/minitest_helper.rb +5 -1
  57. metadata +28 -16
  58. data/.travis.yml +0 -93
  59. data/gemfiles/rails_5.0.gemfile +0 -14
  60. data/gemfiles/rails_5.0_nobrainer.gemfile +0 -9
  61. data/gemfiles/rails_5.1.gemfile +0 -14
data/spec/spec_helper.rb CHANGED
@@ -13,6 +13,7 @@ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib
13
13
  require 'aasm'
14
14
  require 'rspec'
15
15
  require 'aasm/rspec'
16
+ require 'i18n'
16
17
  require 'pry'
17
18
 
18
19
  # require 'ruby-debug'; Debugger.settings[:autoeval] = true; debugger; rubys_debugger = 'annoying'
@@ -34,3 +35,7 @@ Dir[File.dirname(__FILE__) + "/spec_helpers/**/*.rb"].sort.each { |f| require Fi
34
35
 
35
36
  # example model classes
36
37
  Dir[File.dirname(__FILE__) + "/models/*.rb"].sort.each { |f| require File.expand_path(f) }
38
+
39
+ I18n.load_path << 'spec/en.yml'
40
+ I18n.enforce_available_locales = false
41
+ I18n.default_locale = :en
@@ -2,8 +2,12 @@
2
2
 
3
3
  begin
4
4
  require 'dynamoid'
5
- require 'aws-sdk-resources'
6
5
  puts "dynamoid #{Dynamoid::VERSION} gem found, running Dynamoid specs \e[32m#{'✔'}\e[0m"
6
+ if Gem::Version.new(Dynamoid::VERSION) >= Gem::Version.new('3.0.0')
7
+ require 'aws-sdk-dynamodb'
8
+ else
9
+ require 'aws-sdk-resources'
10
+ end
7
11
 
8
12
  ENV['ACCESS_KEY'] ||= 'abcd'
9
13
  ENV['SECRET_KEY'] ||= '1234'
@@ -13,6 +13,10 @@ if defined?(ActiveRecord)
13
13
  expect(DefaultState.new.aasm.current_state).to eql :alpha
14
14
  end
15
15
 
16
+ it "uses display option" do
17
+ expect(DefaultState.new.aasm.human_state).to eql "ALPHA"
18
+ end
19
+
16
20
  it "uses the provided method" do
17
21
  expect(ProvidedState.new.aasm.current_state).to eql :beta
18
22
  end
@@ -90,11 +90,9 @@ describe 'callbacks for the new DSL' do
90
90
  expect(callback).to receive(:ensure_on_all_events).once.ordered
91
91
  end
92
92
 
93
- # puts "------- close!"
94
93
  callback.close!
95
94
  end
96
95
 
97
-
98
96
  it "works fine after reload" do
99
97
  show_debug_log = false
100
98
 
@@ -125,10 +123,43 @@ describe 'callbacks for the new DSL' do
125
123
  expect(callback).to receive(:after_event).once.ordered
126
124
  end
127
125
 
128
- # puts "------- close!"
129
126
  callback.close!
130
127
  end
131
128
 
129
+ it 'does not run callbacks if firing an unknown event' do
130
+ show_debug_log = false
131
+
132
+ callback = Callbacks::Basic.new(:log => show_debug_log)
133
+
134
+ expect(callback).to_not receive(:before_all_events).ordered
135
+ expect(callback).to_not receive(:before_event).ordered
136
+ expect(callback).to_not receive(:event_guard).ordered
137
+ expect(callback).to_not receive(:transition_guard)
138
+ expect(callback).to_not receive(:before_exit_open)
139
+ expect(callback).to_not receive(:exit_open)
140
+ expect(callback).to_not receive(:after_all_transitions)
141
+ expect(callback).to_not receive(:after_transition)
142
+ expect(callback).to_not receive(:before_enter_closed)
143
+ expect(callback).to_not receive(:enter_closed)
144
+ expect(callback).to_not receive(:aasm_write_state)
145
+ expect(callback).to_not receive(:event_before_success)
146
+ expect(callback).to_not receive(:success_transition)
147
+ expect(callback).to_not receive(:after_exit_open)
148
+ expect(callback).to_not receive(:after_enter_closed)
149
+ expect(callback).to_not receive(:after_event)
150
+ expect(callback).to_not receive(:after_all_events)
151
+ expect(callback).to_not receive(:ensure_event).ordered
152
+ expect(callback).to_not receive(:ensure_on_all_events).ordered
153
+
154
+ expect {
155
+ callback.aasm.fire(:unknown)
156
+ }.to raise_error(AASM::UndefinedState, "State :unknown doesn't exist")
157
+
158
+ expect {
159
+ callback.aasm.fire!(:unknown)
160
+ }.to raise_error(AASM::UndefinedState, "State :unknown! doesn't exist")
161
+ end
162
+
132
163
  it "does not run any state callback if the event guard fails" do
133
164
  callback = Callbacks::Basic.new(:log => false)
134
165
  callback.aasm.current_state
@@ -164,7 +195,6 @@ describe 'callbacks for the new DSL' do
164
195
  callback = Callbacks::PrivateMethod.new(:log => show_debug_log)
165
196
  callback.aasm.current_state
166
197
 
167
- # puts "------- close!"
168
198
  expect {
169
199
  callback.close!
170
200
  }.to_not raise_error
@@ -90,4 +90,12 @@ describe 'when being unsuspended' do
90
90
  it "should not be able to fire unknown events" do
91
91
  expect(auth.aasm.may_fire_event?(:unknown)).to be false
92
92
  end
93
+
94
+ it "should raise AASM::UndefinedState when firing unknown events" do
95
+ expect { auth.aasm.fire(:unknown) }.to raise_error(AASM::UndefinedState, "State :unknown doesn't exist")
96
+ end
97
+
98
+ it "should raise AASM::UndefinedState when firing unknown bang events" do
99
+ expect { auth.aasm.fire!(:unknown) }.to raise_error(AASM::UndefinedState, "State :unknown! doesn't exist")
100
+ end
93
101
  end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe EventWithKeywordArguments do
4
+ let(:example) { EventWithKeywordArguments.new }
5
+ describe 'enable keyword arguments' do
6
+ it 'should be executed correctly that method registered by "before hooks" for events with keyword arguments.' do
7
+ expect(example.close(key: 1)).to be_truthy
8
+ end
9
+ end
10
+ end
@@ -166,11 +166,15 @@ describe "special cases" do
166
166
  end
167
167
 
168
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
- )
169
+ context 'without I18n' do
170
+ before { allow(Module).to receive(:const_defined?).with(:I18n).and_return(nil) }
171
+
172
+ it "should return a select friendly array of states" do
173
+ expect(FooMultiple.aasm(:left)).to respond_to(:states_for_select)
174
+ expect(FooMultiple.aasm(:left).states_for_select).to eq(
175
+ [['Open', 'open'], ['Closed', 'closed'], ['Final', 'final']]
176
+ )
177
+ end
174
178
  end
175
179
  end
176
180
 
@@ -102,9 +102,13 @@ describe "special cases" do
102
102
  end
103
103
 
104
104
  describe 'aasm.states_for_select' do
105
- it "should return a select friendly array of states" do
106
- expect(Foo.aasm).to respond_to(:states_for_select)
107
- expect(Foo.aasm.states_for_select).to eq([['Open', 'open'], ['Closed', 'closed'], ['Final', 'final']])
105
+ context 'without I18n' do
106
+ before { allow(Module).to receive(:const_defined?).with(:I18n).and_return(nil) }
107
+
108
+ it "should return a select friendly array of states" do
109
+ expect(Foo.aasm).to respond_to(:states_for_select)
110
+ expect(Foo.aasm.states_for_select).to eq([['Open', 'open'], ['Closed', 'closed'], ['Final', 'final']])
111
+ end
108
112
  end
109
113
  end
110
114
 
@@ -1,20 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
- if defined?(ActiceRecord)
4
- require 'i18n'
5
-
6
- I18n.enforce_available_locales = false
3
+ if defined?(ActiveRecord)
4
+ require 'models/active_record/localizer_test_model'
7
5
  load_schema
8
6
 
9
7
  describe AASM::Localizer, "new style" do
10
8
  before(:all) do
11
- I18n.load_path << 'spec/en.yml'
12
- I18n.default_locale = :en
9
+ I18n.load_path << 'spec/localizer_test_model_new_style.yml'
13
10
  I18n.reload!
14
11
  end
15
12
 
16
13
  after(:all) do
17
- I18n.load_path.clear
14
+ I18n.load_path.delete('spec/localizer_test_model_new_style.yml')
15
+ I18n.backend.load_translations
18
16
  end
19
17
 
20
18
  let (:foo_opened) { LocalizerTestModel.new }
@@ -31,25 +29,42 @@ if defined?(ActiceRecord)
31
29
  end
32
30
 
33
31
  context 'aasm.human_event_name' do
34
- it 'should return translated event name' do
35
- expect(LocalizerTestModel.aasm.human_event_name(:close)).to eq("Let's close it!")
32
+ context 'with 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
36
40
  end
37
41
 
38
- it 'should return humanized event name' do
39
- expect(LocalizerTestModel.aasm.human_event_name(:open)).to eq("Open")
42
+ context 'with event object' do
43
+ it 'should return translated event name' do
44
+ event = LocalizerTestModel.aasm.events.detect { |e| e.name == :close }
45
+
46
+ expect(LocalizerTestModel.aasm.human_event_name(event)).to eq("Let's close it!")
47
+ end
48
+
49
+ it 'should return humanized event name' do
50
+ event = LocalizerTestModel.aasm.events.detect { |e| e.name == :open }
51
+
52
+ expect(LocalizerTestModel.aasm.human_event_name(event)).to eq("Open")
53
+ end
40
54
  end
41
55
  end
42
56
  end
43
57
 
44
58
  describe AASM::Localizer, "deprecated style" do
45
59
  before(:all) do
46
- I18n.load_path << 'spec/en_deprecated_style.yml'
47
- I18n.default_locale = :en
60
+ I18n.load_path << 'spec/localizer_test_model_deprecated_style.yml'
48
61
  I18n.reload!
62
+ I18n.backend.load_translations
49
63
  end
50
64
 
51
65
  after(:all) do
52
- I18n.load_path.clear
66
+ I18n.load_path.delete('spec/localizer_test_model_deprecated_style.yml')
67
+ I18n.backend.load_translations
53
68
  end
54
69
 
55
70
  let (:foo_opened) { LocalizerTestModel.new }
@@ -66,12 +81,28 @@ if defined?(ActiceRecord)
66
81
  end
67
82
 
68
83
  context 'aasm.human_event_name' do
69
- it 'should return translated event name' do
70
- expect(LocalizerTestModel.aasm.human_event_name(:close)).to eq("Let's close it!")
84
+ context 'with event name' do
85
+ it 'should return translated event name' do
86
+ expect(LocalizerTestModel.aasm.human_event_name(:close)).to eq("Let's close it!")
87
+ end
88
+
89
+ it 'should return humanized event name' do
90
+ expect(LocalizerTestModel.aasm.human_event_name(:open)).to eq("Open")
91
+ end
71
92
  end
72
93
 
73
- it 'should return humanized event name' do
74
- expect(LocalizerTestModel.aasm.human_event_name(:open)).to eq("Open")
94
+ context 'with event object' do
95
+ it 'should return translated event name' do
96
+ event = LocalizerTestModel.aasm.events.detect { |e| e.name == :close }
97
+
98
+ expect(LocalizerTestModel.aasm.human_event_name(event)).to eq("Let's close it!")
99
+ end
100
+
101
+ it 'should return humanized event name' do
102
+ event = LocalizerTestModel.aasm.events.detect { |e| e.name == :open }
103
+
104
+ expect(LocalizerTestModel.aasm.human_event_name(event)).to eq("Open")
105
+ end
75
106
  end
76
107
  end
77
108
  end
@@ -331,6 +331,23 @@ if defined?(ActiveRecord)
331
331
  expect(MultipleSimpleNewDsl.unknown_scope).to contain_exactly(dsl2)
332
332
  end
333
333
  end
334
+
335
+ context "when namespeced" do
336
+ it "add namespaced scopes" do
337
+ expect(MultipleNamespaced).to respond_to(:car_unsold)
338
+ expect(MultipleNamespaced).to respond_to(:car_sold)
339
+
340
+ expect(MultipleNamespaced.car_unsold.is_a?(ActiveRecord::Relation)).to be_truthy
341
+ expect(MultipleNamespaced.car_sold.is_a?(ActiveRecord::Relation)).to be_truthy
342
+ end
343
+ it "add unnamespaced scopes" do
344
+ expect(MultipleNamespaced).to respond_to(:unsold)
345
+ expect(MultipleNamespaced).to respond_to(:sold)
346
+
347
+ expect(MultipleNamespaced.unsold.is_a?(ActiveRecord::Relation)).to be_truthy
348
+ expect(MultipleNamespaced.sold.is_a?(ActiveRecord::Relation)).to be_truthy
349
+ end
350
+ end
334
351
  end # scopes
335
352
 
336
353
  describe "direct assignment" do
@@ -837,4 +837,16 @@ if defined?(ActiveRecord)
837
837
  expect(example.complete!).to be_falsey
838
838
  end
839
839
  end
840
+
841
+ describe 'testing the timestamps option' do
842
+ let(:example) { TimestampExample.create! }
843
+
844
+ it 'should update existing timestamp columns' do
845
+ expect { example.open! }.to change { example.reload.opened_at }.from(nil).to(instance_of(::Time))
846
+ end
847
+
848
+ it 'should not fail if there is no corresponding timestamp column' do
849
+ expect { example.close! }.to change { example.reload.aasm_state }
850
+ end
851
+ end
840
852
  end
@@ -161,5 +161,17 @@ if defined?(Mongoid::Document)
161
161
  end
162
162
  end
163
163
 
164
+ describe 'testing the timestamps option' do
165
+ let(:example) { TimestampExampleMongoid.create }
166
+
167
+ it 'should update existing timestamp fields' do
168
+ expect { example.open! }.to change { example.reload.opened_at }.from(nil).to(instance_of(::Time))
169
+ end
170
+
171
+ it 'should not fail if there is no corresponding timestamp field' do
172
+ expect { example.close! }.to change { example.reload.status }
173
+ end
174
+ end
175
+
164
176
  end
165
177
  end
@@ -17,12 +17,28 @@ describe AASM::Core::State do
17
17
  expect(state.name).to eq(:astate)
18
18
  end
19
19
 
20
- it 'should set the display_name from name' do
21
- expect(new_state.display_name).to eq('Astate')
22
- end
20
+ describe '#display_name' do
21
+ subject(:display_name) { new_state(options).display_name }
22
+
23
+ context 'without options' do
24
+ let(:options) { {} }
25
+
26
+ context 'without I18n' do
27
+ before { allow(Module).to receive(:const_defined?).with(:I18n).and_return(nil) }
28
+
29
+ it 'should set the display_name from name' do
30
+ expect(display_name).to eq('Astate')
31
+ end
32
+ end
33
+ end
34
+
35
+ context 'with :display option' do
36
+ let(:options) { { display: "A State" } }
23
37
 
24
- it 'should set the display_name from options' do
25
- expect(new_state(:display => "A State").display_name).to eq('A State')
38
+ it 'should set the display_name from options' do
39
+ expect(display_name).to eq('A State')
40
+ end
41
+ end
26
42
  end
27
43
 
28
44
  it 'should set the options and expose them as options' do
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'timestamps option' do
4
+ it 'calls a timestamp setter based on the state name when entering a new state' do
5
+ object = TimestampsExample.new
6
+ expect { object.open }.to change { object.opened_at }.from(nil).to(instance_of(::Time))
7
+ end
8
+
9
+ it 'overwrites any previous timestamp if a state is entered repeatedly' do
10
+ object = TimestampsExample.new
11
+ object.opened_at = ::Time.new(2000, 1, 1)
12
+ expect { object.open }.to change { object.opened_at }
13
+ end
14
+
15
+ it 'does nothing if there is no setter matching the new state' do
16
+ object = TimestampsExample.new
17
+ expect { object.close }.not_to change { object.closed_at }
18
+ end
19
+
20
+ it 'can be turned off and on' do
21
+ object = TimestampsExample.new
22
+ object.class.aasm.state_machine.config.timestamps = false
23
+ expect { object.open }.not_to change { object.opened_at }
24
+ object.class.aasm.state_machine.config.timestamps = true
25
+ expect { object.open }.to change { object.opened_at }
26
+ end
27
+
28
+ it 'calls a timestamp setter when using a named state machine' do
29
+ object = TimestampsWithNamedMachineExample.new
30
+ expect { object.open }.to change { object.opened_at }.from(nil).to(instance_of(::Time))
31
+ end
32
+ end
@@ -23,7 +23,11 @@ end
23
23
  # Dynamoid initialization
24
24
  begin
25
25
  require 'dynamoid'
26
- require 'aws-sdk-resources'
26
+ if Gem::Version.new(Dynamoid::VERSION) >= Gem::Version.new('3.0.0')
27
+ require 'aws-sdk-dynamodb'
28
+ else
29
+ require 'aws-sdk-resources'
30
+ end
27
31
 
28
32
  ENV['ACCESS_KEY'] ||= 'abcd'
29
33
  ENV['SECRET_KEY'] ||= '1234'
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: 5.1.0
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thorsten Boettger
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-08-01 00:00:00.000000000 Z
12
+ date: 2022-07-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: concurrent-ruby
@@ -115,20 +115,14 @@ dependencies:
115
115
  requirements:
116
116
  - - ">="
117
117
  - !ruby/object:Gem::Version
118
- version: 0.1.17
119
- - - "<"
120
- - !ruby/object:Gem::Version
121
- version: 0.1.20
118
+ version: 0.1.21
122
119
  type: :development
123
120
  prerelease: false
124
121
  version_requirements: !ruby/object:Gem::Requirement
125
122
  requirements:
126
123
  - - ">="
127
124
  - !ruby/object:Gem::Version
128
- version: 0.1.17
129
- - - "<"
130
- - !ruby/object:Gem::Version
131
- version: 0.1.20
125
+ version: 0.1.21
132
126
  - !ruby/object:Gem::Dependency
133
127
  name: pry
134
128
  requirement: !ruby/object:Gem::Requirement
@@ -153,8 +147,8 @@ files:
153
147
  - ".document"
154
148
  - ".github/ISSUE_TEMPLATE/bug_report.md"
155
149
  - ".github/ISSUE_TEMPLATE/feature_request.md"
150
+ - ".github/workflows/build.yml"
156
151
  - ".gitignore"
157
- - ".travis.yml"
158
152
  - API
159
153
  - Appraisals
160
154
  - CHANGELOG.md
@@ -176,10 +170,10 @@ files:
176
170
  - gemfiles/rails_4.2.gemfile
177
171
  - gemfiles/rails_4.2_mongoid_5.gemfile
178
172
  - gemfiles/rails_4.2_nobrainer.gemfile
179
- - gemfiles/rails_5.0.gemfile
180
- - gemfiles/rails_5.0_nobrainer.gemfile
181
- - gemfiles/rails_5.1.gemfile
182
173
  - gemfiles/rails_5.2.gemfile
174
+ - gemfiles/rails_6.0.gemfile
175
+ - gemfiles/rails_6.1.gemfile
176
+ - gemfiles/rails_7.0.gemfile
183
177
  - lib/aasm.rb
184
178
  - lib/aasm/aasm.rb
185
179
  - lib/aasm/base.rb
@@ -232,10 +226,11 @@ files:
232
226
  - spec/database.rb
233
227
  - spec/database.yml
234
228
  - spec/en.yml
235
- - spec/en_deprecated_style.yml
236
229
  - spec/generators/active_record_generator_spec.rb
237
230
  - spec/generators/mongoid_generator_spec.rb
238
231
  - spec/generators/no_brainer_generator_spec.rb
232
+ - spec/localizer_test_model_deprecated_style.yml
233
+ - spec/localizer_test_model_new_style.yml
239
234
  - spec/models/active_record/active_record_callback.rb
240
235
  - spec/models/active_record/basic_active_record_two_state_machines_example.rb
241
236
  - spec/models/active_record/complex_active_record_example.rb
@@ -245,6 +240,7 @@ files:
245
240
  - spec/models/active_record/instance_level_skip_validation_example.rb
246
241
  - spec/models/active_record/invalid_persistor.rb
247
242
  - spec/models/active_record/localizer_test_model.rb
243
+ - spec/models/active_record/namespaced.rb
248
244
  - spec/models/active_record/no_direct_assignment.rb
249
245
  - spec/models/active_record/no_scope.rb
250
246
  - spec/models/active_record/persisted_state.rb
@@ -255,6 +251,7 @@ files:
255
251
  - spec/models/active_record/silent_persistor.rb
256
252
  - spec/models/active_record/simple_new_dsl.rb
257
253
  - spec/models/active_record/thief.rb
254
+ - spec/models/active_record/timestamp_example.rb
258
255
  - spec/models/active_record/transactor.rb
259
256
  - spec/models/active_record/transient.rb
260
257
  - spec/models/active_record/validator.rb
@@ -285,6 +282,7 @@ files:
285
282
  - spec/models/dynamoid/complex_dynamoid_example.rb
286
283
  - spec/models/dynamoid/dynamoid_multiple.rb
287
284
  - spec/models/dynamoid/dynamoid_simple.rb
285
+ - spec/models/event_with_keyword_arguments.rb
288
286
  - spec/models/foo.rb
289
287
  - spec/models/foo_callback_multiple.rb
290
288
  - spec/models/guard_arguments_check.rb
@@ -301,6 +299,7 @@ files:
301
299
  - spec/models/mongoid/silent_persistor_mongoid.rb
302
300
  - spec/models/mongoid/simple_mongoid.rb
303
301
  - spec/models/mongoid/simple_new_dsl_mongoid.rb
302
+ - spec/models/mongoid/timestamp_example_mongoid.rb
304
303
  - spec/models/mongoid/validator_mongoid.rb
305
304
  - spec/models/multi_transitioner.rb
306
305
  - spec/models/multiple_transitions_that_differ_only_by_guard.rb
@@ -342,6 +341,8 @@ files:
342
341
  - spec/models/sub_classing.rb
343
342
  - spec/models/super_class.rb
344
343
  - spec/models/this_name_better_not_be_in_use.rb
344
+ - spec/models/timestamps_example.rb
345
+ - spec/models/timestamps_with_named_machine_example.rb
345
346
  - spec/models/valid_state_name.rb
346
347
  - spec/spec_helper.rb
347
348
  - spec/spec_helpers/active_record.rb
@@ -362,6 +363,7 @@ files:
362
363
  - spec/unit/event_multiple_spec.rb
363
364
  - spec/unit/event_naming_spec.rb
364
365
  - spec/unit/event_spec.rb
366
+ - spec/unit/event_with_keyword_arguments_spec.rb
365
367
  - spec/unit/exception_spec.rb
366
368
  - spec/unit/guard_arguments_check_spec.rb
367
369
  - spec/unit/guard_multiple_spec.rb
@@ -406,6 +408,7 @@ files:
406
408
  - spec/unit/states_on_one_line_example_spec.rb
407
409
  - spec/unit/subclassing_multiple_spec.rb
408
410
  - spec/unit/subclassing_spec.rb
411
+ - spec/unit/timestamps_spec.rb
409
412
  - spec/unit/transition_spec.rb
410
413
  - test/minitest_helper.rb
411
414
  - test/unit/minitest_matcher_test.rb
@@ -436,10 +439,11 @@ test_files:
436
439
  - spec/database.rb
437
440
  - spec/database.yml
438
441
  - spec/en.yml
439
- - spec/en_deprecated_style.yml
440
442
  - spec/generators/active_record_generator_spec.rb
441
443
  - spec/generators/mongoid_generator_spec.rb
442
444
  - spec/generators/no_brainer_generator_spec.rb
445
+ - spec/localizer_test_model_deprecated_style.yml
446
+ - spec/localizer_test_model_new_style.yml
443
447
  - spec/models/active_record/active_record_callback.rb
444
448
  - spec/models/active_record/basic_active_record_two_state_machines_example.rb
445
449
  - spec/models/active_record/complex_active_record_example.rb
@@ -449,6 +453,7 @@ test_files:
449
453
  - spec/models/active_record/instance_level_skip_validation_example.rb
450
454
  - spec/models/active_record/invalid_persistor.rb
451
455
  - spec/models/active_record/localizer_test_model.rb
456
+ - spec/models/active_record/namespaced.rb
452
457
  - spec/models/active_record/no_direct_assignment.rb
453
458
  - spec/models/active_record/no_scope.rb
454
459
  - spec/models/active_record/persisted_state.rb
@@ -459,6 +464,7 @@ test_files:
459
464
  - spec/models/active_record/silent_persistor.rb
460
465
  - spec/models/active_record/simple_new_dsl.rb
461
466
  - spec/models/active_record/thief.rb
467
+ - spec/models/active_record/timestamp_example.rb
462
468
  - spec/models/active_record/transactor.rb
463
469
  - spec/models/active_record/transient.rb
464
470
  - spec/models/active_record/validator.rb
@@ -489,6 +495,7 @@ test_files:
489
495
  - spec/models/dynamoid/complex_dynamoid_example.rb
490
496
  - spec/models/dynamoid/dynamoid_multiple.rb
491
497
  - spec/models/dynamoid/dynamoid_simple.rb
498
+ - spec/models/event_with_keyword_arguments.rb
492
499
  - spec/models/foo.rb
493
500
  - spec/models/foo_callback_multiple.rb
494
501
  - spec/models/guard_arguments_check.rb
@@ -505,6 +512,7 @@ test_files:
505
512
  - spec/models/mongoid/silent_persistor_mongoid.rb
506
513
  - spec/models/mongoid/simple_mongoid.rb
507
514
  - spec/models/mongoid/simple_new_dsl_mongoid.rb
515
+ - spec/models/mongoid/timestamp_example_mongoid.rb
508
516
  - spec/models/mongoid/validator_mongoid.rb
509
517
  - spec/models/multi_transitioner.rb
510
518
  - spec/models/multiple_transitions_that_differ_only_by_guard.rb
@@ -546,6 +554,8 @@ test_files:
546
554
  - spec/models/sub_classing.rb
547
555
  - spec/models/super_class.rb
548
556
  - spec/models/this_name_better_not_be_in_use.rb
557
+ - spec/models/timestamps_example.rb
558
+ - spec/models/timestamps_with_named_machine_example.rb
549
559
  - spec/models/valid_state_name.rb
550
560
  - spec/spec_helper.rb
551
561
  - spec/spec_helpers/active_record.rb
@@ -566,6 +576,7 @@ test_files:
566
576
  - spec/unit/event_multiple_spec.rb
567
577
  - spec/unit/event_naming_spec.rb
568
578
  - spec/unit/event_spec.rb
579
+ - spec/unit/event_with_keyword_arguments_spec.rb
569
580
  - spec/unit/exception_spec.rb
570
581
  - spec/unit/guard_arguments_check_spec.rb
571
582
  - spec/unit/guard_multiple_spec.rb
@@ -610,6 +621,7 @@ test_files:
610
621
  - spec/unit/states_on_one_line_example_spec.rb
611
622
  - spec/unit/subclassing_multiple_spec.rb
612
623
  - spec/unit/subclassing_spec.rb
624
+ - spec/unit/timestamps_spec.rb
613
625
  - spec/unit/transition_spec.rb
614
626
  - test/minitest_helper.rb
615
627
  - test/unit/minitest_matcher_test.rb