mongoid-history 0.6.1 → 0.7.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.
@@ -31,7 +31,7 @@ describe Mongoid::History::Trackable do
31
31
  embedded_in :my_trackable_model
32
32
  end
33
33
 
34
- MyTrackableModel.track_history(on: [:foo, :my_embed_one_model, :my_embed_many_models, :my_dynamic_field])
34
+ MyTrackableModel.track_history(on: %i[foo my_embed_one_model my_embed_many_models my_dynamic_field])
35
35
  end
36
36
 
37
37
  describe '#tracked?' do
@@ -143,7 +143,7 @@ describe Mongoid::History::Trackable do
143
143
 
144
144
  describe '#tracked_fields' do
145
145
  it 'should include fields and dynamic fields' do
146
- expect(MyTrackableModel.tracked_fields).to eq %w(foo my_dynamic_field)
146
+ expect(MyTrackableModel.tracked_fields).to eq %w[foo my_dynamic_field]
147
147
  end
148
148
  end
149
149
 
@@ -199,17 +199,17 @@ describe Mongoid::History::Trackable do
199
199
 
200
200
  context 'when relation tracked' do
201
201
  before(:each) { ModelOne.track_history(on: :emb_one) }
202
- it { expect(ModelOne.tracked_embeds_one_attributes('emb_one')).to eq %w(_id em_foo em_bar) }
202
+ it { expect(ModelOne.tracked_embeds_one_attributes('emb_one')).to eq %w[_id em_foo em_bar] }
203
203
  end
204
204
 
205
205
  context 'when relation tracked with alias' do
206
206
  before(:each) { ModelOne.track_history(on: :emb_two) }
207
- it { expect(ModelOne.tracked_embeds_one_attributes('emb_two')).to eq %w(_id em_bar) }
207
+ it { expect(ModelOne.tracked_embeds_one_attributes('emb_two')).to eq %w[_id em_bar] }
208
208
  end
209
209
 
210
210
  context 'when relation tracked with attributes' do
211
211
  before(:each) { ModelOne.track_history(on: { emb_one: :em_foo }) }
212
- it { expect(ModelOne.tracked_embeds_one_attributes('emb_one')).to eq %w(_id em_foo) }
212
+ it { expect(ModelOne.tracked_embeds_one_attributes('emb_one')).to eq %w[_id em_foo] }
213
213
  end
214
214
 
215
215
  context 'when relation not tracked' do
@@ -268,17 +268,17 @@ describe Mongoid::History::Trackable do
268
268
 
269
269
  context 'when relation tracked' do
270
270
  before(:each) { ModelOne.track_history(on: :emb_ones) }
271
- it { expect(ModelOne.tracked_embeds_many_attributes('emb_ones')).to eq %w(_id em_foo em_bar) }
271
+ it { expect(ModelOne.tracked_embeds_many_attributes('emb_ones')).to eq %w[_id em_foo em_bar] }
272
272
  end
273
273
 
274
274
  context 'when relation tracked with alias' do
275
275
  before(:each) { ModelOne.track_history(on: :emb_twos) }
276
- it { expect(ModelOne.tracked_embeds_many_attributes('emb_twos')).to eq %w(_id em_bar) }
276
+ it { expect(ModelOne.tracked_embeds_many_attributes('emb_twos')).to eq %w[_id em_bar] }
277
277
  end
278
278
 
279
279
  context 'when relation tracked with attributes' do
280
280
  before(:each) { ModelOne.track_history(on: { emb_ones: :em_foo }) }
281
- it { expect(ModelOne.tracked_embeds_many_attributes('emb_ones')).to eq %w(_id em_foo) }
281
+ it { expect(ModelOne.tracked_embeds_many_attributes('emb_ones')).to eq %w[_id em_foo] }
282
282
  end
283
283
 
284
284
  context 'when relation not tracked' do
@@ -309,12 +309,12 @@ describe Mongoid::History::Trackable do
309
309
 
310
310
  describe '#clear_trackable_memoization' do
311
311
  before do
312
- MyTrackableModel.instance_variable_set(:@reserved_tracked_fields, %w(_id _type))
313
- MyTrackableModel.instance_variable_set(:@history_trackable_options, on: %w(fields))
312
+ MyTrackableModel.instance_variable_set(:@reserved_tracked_fields, %w[_id _type])
313
+ MyTrackableModel.instance_variable_set(:@history_trackable_options, on: %w[fields])
314
314
  MyTrackableModel.instance_variable_set(:@trackable_settings, paranoia_field: 'deleted_at')
315
- MyTrackableModel.instance_variable_set(:@tracked_fields, %w(foo))
316
- MyTrackableModel.instance_variable_set(:@tracked_embeds_one, %w(my_embed_one_model))
317
- MyTrackableModel.instance_variable_set(:@tracked_embeds_many, %w(my_embed_many_models))
315
+ MyTrackableModel.instance_variable_set(:@tracked_fields, %w[foo])
316
+ MyTrackableModel.instance_variable_set(:@tracked_embeds_one, %w[my_embed_one_model])
317
+ MyTrackableModel.instance_variable_set(:@tracked_embeds_many, %w[my_embed_many_models])
318
318
  MyTrackableModel.clear_trackable_memoization
319
319
  end
320
320
 
@@ -34,8 +34,8 @@ describe Mongoid::History::Trackable do
34
34
  end
35
35
  before(:each) { Mongoid::History.trackable_class_options = @persisted_history_options }
36
36
  let(:expected_option) do
37
- { on: %i(foo),
38
- except: %w(created_at updated_at),
37
+ { on: %i[foo],
38
+ except: %w[created_at updated_at],
39
39
  tracker_class_name: nil,
40
40
  modifier_field: :modifier,
41
41
  version_field: :version,
@@ -44,13 +44,13 @@ describe Mongoid::History::Trackable do
44
44
  track_create: false,
45
45
  track_update: true,
46
46
  track_destroy: false,
47
- fields: %w(foo),
47
+ fields: %w[foo],
48
48
  relations: { embeds_one: {}, embeds_many: {} },
49
49
  dynamic: [],
50
50
  format: {} }
51
51
  end
52
52
  let(:regular_fields) { ['foo'] }
53
- let(:reserved_fields) { %w(_id version modifier_id) }
53
+ let(:reserved_fields) { %w[_id version modifier_id] }
54
54
 
55
55
  it 'should have default options' do
56
56
  expect(Mongoid::History.trackable_class_options[:my_model]).to eq(expected_option)
@@ -217,7 +217,7 @@ describe Mongoid::History::Trackable do
217
217
  it 'should be rescued if an exception occurs' do
218
218
  begin
219
219
  MyModel.disable_tracking do
220
- fail 'exception'
220
+ raise 'exception'
221
221
  end
222
222
  rescue
223
223
  end
@@ -260,7 +260,7 @@ describe Mongoid::History::Trackable do
260
260
  Mongoid::History.disable do
261
261
  begin
262
262
  MyModel.disable_tracking do
263
- fail 'exception'
263
+ raise 'exception'
264
264
  end
265
265
  rescue
266
266
  end
@@ -289,7 +289,7 @@ describe Mongoid::History::Trackable do
289
289
  begin
290
290
  Mongoid::History.disable do
291
291
  MyModel.disable_tracking do
292
- fail 'exception'
292
+ raise 'exception'
293
293
  end
294
294
  end
295
295
  rescue
@@ -583,4 +583,63 @@ describe Mongoid::History::Trackable do
583
583
  Object.send(:remove_const, :MyTrackerClass)
584
584
  end
585
585
  end
586
+
587
+ describe '#track_update' do
588
+ before :all do
589
+ MyModel.track_history(on: :foo, track_update: true)
590
+ @persisted_history_options = Mongoid::History.trackable_class_options
591
+ end
592
+ before(:each) { Mongoid::History.trackable_class_options = @persisted_history_options }
593
+ let(:m) { MyModel.create!(foo: 'bar') }
594
+
595
+ it 'should create history' do
596
+ expect { m.update_attributes!(foo: 'bar2') }.to change(Tracker, :count).by(1)
597
+ end
598
+
599
+ it 'should not create history when error raised' do
600
+ expect(m).to receive(:update_attributes!).and_raise(StandardError)
601
+ expect do
602
+ expect { m.update_attributes!(foo: 'bar2') }.to raise_error(StandardError)
603
+ end.to change(Tracker, :count).by(0)
604
+ end
605
+ end
606
+
607
+ describe '#track_destroy' do
608
+ before :all do
609
+ MyModel.track_history(on: :foo, track_destroy: true)
610
+ @persisted_history_options = Mongoid::History.trackable_class_options
611
+ end
612
+ before(:each) { Mongoid::History.trackable_class_options = @persisted_history_options }
613
+ let(:m) { MyModel.create!(foo: 'bar') }
614
+
615
+ it 'should create history' do
616
+ expect { m.destroy }.to change(Tracker, :count).by(1)
617
+ end
618
+
619
+ it 'should not create history when error raised' do
620
+ expect(m).to receive(:destroy).and_raise(StandardError)
621
+ expect do
622
+ expect { m.destroy }.to raise_error(StandardError)
623
+ end.to change(Tracker, :count).by(0)
624
+ end
625
+ end
626
+
627
+ describe '#track_create' do
628
+ before :all do
629
+ MyModel.track_history(on: :foo, track_create: true)
630
+ @persisted_history_options = Mongoid::History.trackable_class_options
631
+ end
632
+ before(:each) { Mongoid::History.trackable_class_options = @persisted_history_options }
633
+
634
+ it 'should create history' do
635
+ expect { MyModel.create!(foo: 'bar') }.to change(Tracker, :count).by(1)
636
+ end
637
+
638
+ it 'should not create history when error raised' do
639
+ expect(MyModel).to receive(:create!).and_raise(StandardError)
640
+ expect do
641
+ expect { MyModel.create!(foo: 'bar') }.to raise_error(StandardError)
642
+ end.to change(Tracker, :count).by(0)
643
+ end
644
+ end
586
645
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-history
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Qian
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-01-04 00:00:00.000000000 Z
13
+ date: 2017-11-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: easy_diff
@@ -98,7 +98,9 @@ files:
98
98
  - Gemfile
99
99
  - LICENSE.txt
100
100
  - README.md
101
+ - RELEASING.md
101
102
  - Rakefile
103
+ - UPGRADING.md
102
104
  - lib/mongoid-history.rb
103
105
  - lib/mongoid/history.rb
104
106
  - lib/mongoid/history/attributes/base.rb
@@ -113,9 +115,11 @@ files:
113
115
  - spec/integration/embedded_in_polymorphic_spec.rb
114
116
  - spec/integration/integration_spec.rb
115
117
  - spec/integration/multi_relation_spec.rb
118
+ - spec/integration/multiple_trackers_spec.rb
116
119
  - spec/integration/nested_embedded_documents_spec.rb
117
120
  - spec/integration/nested_embedded_polymorphic_documents_spec.rb
118
121
  - spec/integration/subclasses_spec.rb
122
+ - spec/integration/validation_failure_spec.rb
119
123
  - spec/spec_helper.rb
120
124
  - spec/support/mongoid.rb
121
125
  - spec/support/mongoid_history.rb
@@ -152,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
156
  version: '0'
153
157
  requirements: []
154
158
  rubyforge_project:
155
- rubygems_version: 2.5.1
159
+ rubygems_version: 2.6.12
156
160
  signing_key:
157
161
  specification_version: 4
158
162
  summary: Track and audit, undo and redo changes on Mongoid documents.
@@ -160,9 +164,11 @@ test_files:
160
164
  - spec/integration/embedded_in_polymorphic_spec.rb
161
165
  - spec/integration/integration_spec.rb
162
166
  - spec/integration/multi_relation_spec.rb
167
+ - spec/integration/multiple_trackers_spec.rb
163
168
  - spec/integration/nested_embedded_documents_spec.rb
164
169
  - spec/integration/nested_embedded_polymorphic_documents_spec.rb
165
170
  - spec/integration/subclasses_spec.rb
171
+ - spec/integration/validation_failure_spec.rb
166
172
  - spec/spec_helper.rb
167
173
  - spec/support/mongoid.rb
168
174
  - spec/support/mongoid_history.rb