aasm 5.1.0 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +0 -11
  3. data/Appraisals +5 -5
  4. data/CHANGELOG.md +17 -0
  5. data/README.md +78 -6
  6. data/aasm.gemspec +1 -1
  7. data/gemfiles/rails_4.2.gemfile +1 -1
  8. data/gemfiles/rails_4.2_mongoid_5.gemfile +1 -1
  9. data/gemfiles/rails_5.0.gemfile +1 -1
  10. data/gemfiles/rails_5.1.gemfile +1 -1
  11. data/gemfiles/rails_5.2.gemfile +1 -1
  12. data/lib/aasm/base.rb +30 -11
  13. data/lib/aasm/configuration.rb +3 -0
  14. data/lib/aasm/core/event.rb +7 -2
  15. data/lib/aasm/core/state.rb +6 -5
  16. data/lib/aasm/core/transition.rb +1 -1
  17. data/lib/aasm/dsl_helper.rb +24 -22
  18. data/lib/aasm/instance_base.rb +1 -1
  19. data/lib/aasm/localizer.rb +13 -3
  20. data/lib/aasm/persistence/active_record_persistence.rb +18 -13
  21. data/lib/aasm/persistence/base.rb +13 -2
  22. data/lib/aasm/persistence/orm.rb +1 -1
  23. data/lib/aasm/version.rb +1 -1
  24. data/lib/aasm.rb +0 -2
  25. data/spec/database.rb +9 -11
  26. data/spec/en.yml +0 -3
  27. data/spec/{en_deprecated_style.yml → localizer_test_model_deprecated_style.yml} +6 -3
  28. data/spec/localizer_test_model_new_style.yml +11 -0
  29. data/spec/models/active_record/localizer_test_model.rb +11 -3
  30. data/spec/models/active_record/namespaced.rb +16 -0
  31. data/spec/models/active_record/timestamp_example.rb +16 -0
  32. data/spec/models/default_state.rb +1 -1
  33. data/spec/models/mongoid/timestamp_example_mongoid.rb +20 -0
  34. data/spec/models/timestamps_example.rb +19 -0
  35. data/spec/models/timestamps_with_named_machine_example.rb +13 -0
  36. data/spec/spec_helper.rb +5 -0
  37. data/spec/unit/api_spec.rb +4 -0
  38. data/spec/unit/inspection_multiple_spec.rb +9 -5
  39. data/spec/unit/inspection_spec.rb +7 -3
  40. data/spec/unit/localizer_spec.rb +49 -18
  41. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +17 -0
  42. data/spec/unit/persistence/active_record_persistence_spec.rb +12 -0
  43. data/spec/unit/persistence/mongoid_persistence_spec.rb +12 -0
  44. data/spec/unit/state_spec.rb +21 -5
  45. data/spec/unit/timestamps_spec.rb +32 -0
  46. metadata +20 -12
data/spec/database.rb CHANGED
@@ -5,17 +5,10 @@ ActiveRecord::Migration.suppress_messages do
5
5
  end
6
6
  end
7
7
 
8
- ActiveRecord::Migration.create_table "simple_new_dsls", :force => true do |t|
9
- t.string "status"
10
- end
11
- ActiveRecord::Migration.create_table "multiple_simple_new_dsls", :force => true do |t|
12
- t.string "status"
13
- end
14
- ActiveRecord::Migration.create_table "implemented_abstract_class_dsls", :force => true do |t|
15
- t.string "status"
16
- end
17
- ActiveRecord::Migration.create_table "users", :force => true do |t|
18
- t.string "status"
8
+ %w(simple_new_dsls multiple_simple_new_dsls implemented_abstract_class_dsls users multiple_namespaceds).each do |table_name|
9
+ ActiveRecord::Migration.create_table table_name, :force => true do |t|
10
+ t.string "status"
11
+ end
19
12
  end
20
13
 
21
14
  ActiveRecord::Migration.create_table "complex_active_record_examples", :force => true do |t|
@@ -56,4 +49,9 @@ ActiveRecord::Migration.suppress_messages do
56
49
  t.string "state"
57
50
  t.string "some_string"
58
51
  end
52
+
53
+ ActiveRecord::Migration.create_table "timestamp_examples", :force => true do |t|
54
+ t.string "aasm_state"
55
+ t.datetime "opened_at"
56
+ end
59
57
  end
data/spec/en.yml CHANGED
@@ -4,9 +4,6 @@ en:
4
4
  localizer_test_model:
5
5
  close: "Let's close it!"
6
6
 
7
- attributes:
8
- localizer_test_model:
9
- aasm_state/opened: "It's open now!"
10
7
  errors:
11
8
  messages:
12
9
  record_invalid: "Invalid record"
@@ -1,10 +1,13 @@
1
1
  en:
2
2
  activerecord:
3
- events:
3
+ attributes:
4
4
  localizer_test_model:
5
- close: "Let's close it!"
5
+ aasm_state:
6
+ opened: "It's open now!"
6
7
 
8
+ fr:
9
+ activerecord:
7
10
  attributes:
8
11
  localizer_test_model:
9
12
  aasm_state:
10
- opened: "It's open now!"
13
+ opened: "C'est ouvert maintenant!"
@@ -0,0 +1,11 @@
1
+ en:
2
+ activerecord:
3
+ attributes:
4
+ localizer_test_model:
5
+ aasm_state/opened: "It's open now!"
6
+
7
+ fr:
8
+ activerecord:
9
+ attributes:
10
+ localizer_test_model:
11
+ aasm_state/opened: "C'est ouvert maintenant!"
@@ -11,24 +11,32 @@ end
11
11
 
12
12
  describe 'localized state names' do
13
13
  before(:all) do
14
- I18n.load_path << 'spec/en.yml'
15
- I18n.default_locale = :en
14
+ I18n.load_path << 'spec/localizer_test_model_new_style.yml'
16
15
  I18n.reload!
17
16
  end
18
17
 
19
18
  after(:all) do
20
- I18n.load_path.clear
19
+ I18n.load_path.delete('spec/localizer_test_model_new_style.yml')
20
+ I18n.backend.load_translations
21
21
  end
22
22
 
23
23
  it 'should localize' do
24
24
  state = LocalizerTestModel.aasm.states.detect {|s| s == :opened}
25
25
  expect(state.localized_name).to eq("It's open now!")
26
26
  expect(state.human_name).to eq("It's open now!")
27
+ expect(state.display_name).to eq("It's open now!")
28
+
29
+ I18n.with_locale(:fr) do
30
+ expect(state.localized_name).to eq("C'est ouvert maintenant!")
31
+ expect(state.human_name).to eq("C'est ouvert maintenant!")
32
+ expect(state.display_name).to eq("C'est ouvert maintenant!")
33
+ end
27
34
  end
28
35
 
29
36
  it 'should use fallback' do
30
37
  state = LocalizerTestModel.aasm.states.detect {|s| s == :closed}
31
38
  expect(state.localized_name).to eq('Closed')
32
39
  expect(state.human_name).to eq('Closed')
40
+ expect(state.display_name).to eq('Closed')
33
41
  end
34
42
  end
@@ -0,0 +1,16 @@
1
+ class MultipleNamespaced < ActiveRecord::Base
2
+ include AASM
3
+
4
+ aasm(:status, namespace: :car) do
5
+ state :unsold, initial: true
6
+ state :sold
7
+
8
+ event :sell do
9
+ transitions from: :unsold, to: :sold
10
+ end
11
+
12
+ event :return do
13
+ transitions from: :sold, to: :unsold
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ class TimestampExample < ActiveRecord::Base
2
+ include AASM
3
+
4
+ aasm column: :aasm_state, timestamps: true do
5
+ state :opened
6
+ state :closed
7
+
8
+ event :open do
9
+ transitions to: :opened
10
+ end
11
+
12
+ event :close do
13
+ transitions to: :closed
14
+ end
15
+ end
16
+ end
@@ -2,7 +2,7 @@ class DefaultState
2
2
  attr_accessor :transient_store, :persisted_store
3
3
  include AASM
4
4
  aasm do
5
- state :alpha, :initial => true
5
+ state :alpha, :initial => true, display: 'ALPHA'
6
6
  state :beta
7
7
  state :gamma
8
8
  event :release do
@@ -0,0 +1,20 @@
1
+ class TimestampExampleMongoid
2
+ include Mongoid::Document
3
+ include AASM
4
+
5
+ field :status, type: String
6
+ field :opened_at, type: Time
7
+
8
+ aasm column: :status, timestamps: true do
9
+ state :opened
10
+ state :closed
11
+
12
+ event :open do
13
+ transitions to: :opened
14
+ end
15
+
16
+ event :close do
17
+ transitions to: :closed
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ class TimestampsExample
2
+ include AASM
3
+
4
+ attr_accessor :opened_at
5
+ attr_reader :closed_at
6
+
7
+ aasm timestamps: true do
8
+ state :opened
9
+ state :closed
10
+
11
+ event :open do
12
+ transitions to: :opened
13
+ end
14
+
15
+ event :close do
16
+ transitions to: :closed
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ class TimestampsWithNamedMachineExample
2
+ include AASM
3
+
4
+ attr_accessor :opened_at
5
+
6
+ aasm :my_state, timestamps: true do
7
+ state :opened
8
+
9
+ event :open do
10
+ transitions to: :opened
11
+ end
12
+ end
13
+ end
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
@@ -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
@@ -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
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.2.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: 2021-05-02 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
@@ -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
@@ -301,6 +298,7 @@ files:
301
298
  - spec/models/mongoid/silent_persistor_mongoid.rb
302
299
  - spec/models/mongoid/simple_mongoid.rb
303
300
  - spec/models/mongoid/simple_new_dsl_mongoid.rb
301
+ - spec/models/mongoid/timestamp_example_mongoid.rb
304
302
  - spec/models/mongoid/validator_mongoid.rb
305
303
  - spec/models/multi_transitioner.rb
306
304
  - spec/models/multiple_transitions_that_differ_only_by_guard.rb
@@ -342,6 +340,8 @@ files:
342
340
  - spec/models/sub_classing.rb
343
341
  - spec/models/super_class.rb
344
342
  - spec/models/this_name_better_not_be_in_use.rb
343
+ - spec/models/timestamps_example.rb
344
+ - spec/models/timestamps_with_named_machine_example.rb
345
345
  - spec/models/valid_state_name.rb
346
346
  - spec/spec_helper.rb
347
347
  - spec/spec_helpers/active_record.rb
@@ -406,6 +406,7 @@ files:
406
406
  - spec/unit/states_on_one_line_example_spec.rb
407
407
  - spec/unit/subclassing_multiple_spec.rb
408
408
  - spec/unit/subclassing_spec.rb
409
+ - spec/unit/timestamps_spec.rb
409
410
  - spec/unit/transition_spec.rb
410
411
  - test/minitest_helper.rb
411
412
  - test/unit/minitest_matcher_test.rb
@@ -436,10 +437,11 @@ test_files:
436
437
  - spec/database.rb
437
438
  - spec/database.yml
438
439
  - spec/en.yml
439
- - spec/en_deprecated_style.yml
440
440
  - spec/generators/active_record_generator_spec.rb
441
441
  - spec/generators/mongoid_generator_spec.rb
442
442
  - spec/generators/no_brainer_generator_spec.rb
443
+ - spec/localizer_test_model_deprecated_style.yml
444
+ - spec/localizer_test_model_new_style.yml
443
445
  - spec/models/active_record/active_record_callback.rb
444
446
  - spec/models/active_record/basic_active_record_two_state_machines_example.rb
445
447
  - spec/models/active_record/complex_active_record_example.rb
@@ -449,6 +451,7 @@ test_files:
449
451
  - spec/models/active_record/instance_level_skip_validation_example.rb
450
452
  - spec/models/active_record/invalid_persistor.rb
451
453
  - spec/models/active_record/localizer_test_model.rb
454
+ - spec/models/active_record/namespaced.rb
452
455
  - spec/models/active_record/no_direct_assignment.rb
453
456
  - spec/models/active_record/no_scope.rb
454
457
  - spec/models/active_record/persisted_state.rb
@@ -459,6 +462,7 @@ test_files:
459
462
  - spec/models/active_record/silent_persistor.rb
460
463
  - spec/models/active_record/simple_new_dsl.rb
461
464
  - spec/models/active_record/thief.rb
465
+ - spec/models/active_record/timestamp_example.rb
462
466
  - spec/models/active_record/transactor.rb
463
467
  - spec/models/active_record/transient.rb
464
468
  - spec/models/active_record/validator.rb
@@ -505,6 +509,7 @@ test_files:
505
509
  - spec/models/mongoid/silent_persistor_mongoid.rb
506
510
  - spec/models/mongoid/simple_mongoid.rb
507
511
  - spec/models/mongoid/simple_new_dsl_mongoid.rb
512
+ - spec/models/mongoid/timestamp_example_mongoid.rb
508
513
  - spec/models/mongoid/validator_mongoid.rb
509
514
  - spec/models/multi_transitioner.rb
510
515
  - spec/models/multiple_transitions_that_differ_only_by_guard.rb
@@ -546,6 +551,8 @@ test_files:
546
551
  - spec/models/sub_classing.rb
547
552
  - spec/models/super_class.rb
548
553
  - spec/models/this_name_better_not_be_in_use.rb
554
+ - spec/models/timestamps_example.rb
555
+ - spec/models/timestamps_with_named_machine_example.rb
549
556
  - spec/models/valid_state_name.rb
550
557
  - spec/spec_helper.rb
551
558
  - spec/spec_helpers/active_record.rb
@@ -610,6 +617,7 @@ test_files:
610
617
  - spec/unit/states_on_one_line_example_spec.rb
611
618
  - spec/unit/subclassing_multiple_spec.rb
612
619
  - spec/unit/subclassing_spec.rb
620
+ - spec/unit/timestamps_spec.rb
613
621
  - spec/unit/transition_spec.rb
614
622
  - test/minitest_helper.rb
615
623
  - test/unit/minitest_matcher_test.rb