mongoid-history 0.8.0 → 0.8.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +5 -5
  2. data/.coveralls.yml +1 -1
  3. data/.document +5 -5
  4. data/.github/workflows/test.yml +72 -0
  5. data/.gitignore +46 -46
  6. data/.rspec +2 -2
  7. data/.rubocop.yml +6 -6
  8. data/.rubocop_todo.yml +99 -101
  9. data/CHANGELOG.md +173 -144
  10. data/CONTRIBUTING.md +117 -118
  11. data/Dangerfile +1 -1
  12. data/Gemfile +49 -37
  13. data/LICENSE.txt +20 -20
  14. data/README.md +609 -595
  15. data/RELEASING.md +66 -67
  16. data/Rakefile +24 -24
  17. data/UPGRADING.md +53 -34
  18. data/lib/mongoid/history/attributes/base.rb +72 -72
  19. data/lib/mongoid/history/attributes/create.rb +45 -50
  20. data/lib/mongoid/history/attributes/destroy.rb +34 -34
  21. data/lib/mongoid/history/attributes/update.rb +104 -45
  22. data/lib/mongoid/history/options.rb +177 -179
  23. data/lib/mongoid/history/trackable.rb +588 -521
  24. data/lib/mongoid/history/tracker.rb +247 -244
  25. data/lib/mongoid/history/version.rb +5 -5
  26. data/lib/mongoid/history.rb +77 -52
  27. data/lib/mongoid-history.rb +1 -1
  28. data/mongoid-history.gemspec +25 -25
  29. data/perf/benchmark_modified_attributes_for_create.rb +65 -0
  30. data/perf/gc_suite.rb +21 -0
  31. data/spec/integration/embedded_in_polymorphic_spec.rb +112 -135
  32. data/spec/integration/integration_spec.rb +976 -942
  33. data/spec/integration/multi_relation_spec.rb +47 -53
  34. data/spec/integration/multiple_trackers_spec.rb +68 -71
  35. data/spec/integration/nested_embedded_documents_spec.rb +64 -84
  36. data/spec/integration/nested_embedded_documents_tracked_in_parent_spec.rb +124 -0
  37. data/spec/integration/nested_embedded_polymorphic_documents_spec.rb +115 -127
  38. data/spec/integration/subclasses_spec.rb +47 -29
  39. data/spec/integration/track_history_order_spec.rb +84 -52
  40. data/spec/integration/validation_failure_spec.rb +76 -63
  41. data/spec/spec_helper.rb +32 -25
  42. data/spec/support/error_helpers.rb +7 -0
  43. data/spec/support/mongoid.rb +11 -11
  44. data/spec/support/mongoid_history.rb +12 -13
  45. data/spec/unit/attributes/base_spec.rb +141 -150
  46. data/spec/unit/attributes/create_spec.rb +342 -315
  47. data/spec/unit/attributes/destroy_spec.rb +228 -218
  48. data/spec/unit/attributes/update_spec.rb +342 -321
  49. data/spec/unit/callback_options_spec.rb +165 -159
  50. data/spec/unit/embedded_methods_spec.rb +87 -69
  51. data/spec/unit/history_spec.rb +58 -35
  52. data/spec/unit/my_instance_methods_spec.rb +555 -485
  53. data/spec/unit/options_spec.rb +365 -327
  54. data/spec/unit/singleton_methods_spec.rb +406 -338
  55. data/spec/unit/store/default_store_spec.rb +11 -11
  56. data/spec/unit/store/request_store_spec.rb +13 -13
  57. data/spec/unit/trackable_spec.rb +1057 -689
  58. data/spec/unit/tracker_spec.rb +190 -163
  59. metadata +13 -8
  60. data/.travis.yml +0 -35
@@ -1,127 +1,115 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::History::Tracker do
4
- before :all do
5
- class Modelone
6
- include Mongoid::Document
7
- include Mongoid::History::Trackable
8
-
9
- field :name, type: String
10
- belongs_to :user
11
- embeds_one :one_embedded, as: :embedable
12
-
13
- track_history on: :all,
14
- modifier_field: :modifier,
15
- version_field: :version,
16
- track_create: true,
17
- track_update: true,
18
- track_destroy: true
19
- end
20
-
21
- class Modeltwo
22
- include Mongoid::Document
23
- include Mongoid::History::Trackable
24
-
25
- field :name, type: String
26
- belongs_to :user
27
- embeds_one :one_embedded, as: :embedable
28
-
29
- track_history on: :all,
30
- modifier_field: :modifier,
31
- version_field: :version,
32
- track_create: true,
33
- track_update: true,
34
- track_destroy: true
35
- end
36
-
37
- class OneEmbedded
38
- include Mongoid::Document
39
- include Mongoid::History::Trackable
40
-
41
- field :name
42
- embeds_many :embedded_twos, store_as: :ems
43
- embedded_in :embedable, polymorphic: true
44
-
45
- track_history on: :all,
46
- modifier_field: :modifier,
47
- version_field: :version,
48
- track_create: true,
49
- track_update: true,
50
- track_destroy: true,
51
- scope: %i[modelone modeltwo]
52
- end
53
-
54
- class EmbeddedTwo
55
- include Mongoid::Document
56
- include Mongoid::History::Trackable
57
-
58
- field :name
59
- embedded_in :one_embedded
60
-
61
- track_history on: :all,
62
- modifier_field: :modifier,
63
- version_field: :version,
64
- track_create: true,
65
- track_update: true,
66
- track_destroy: true,
67
- scope: %i[modelone modeltwo]
68
- end
69
-
70
- class User
71
- include Mongoid::Document
72
- has_many :modelones
73
- has_many :modeltwos
74
- end
75
- end
76
-
77
- it 'tracks history for nested embedded documents with polymorphic relations' do
78
- user = User.new
79
- user.save!
80
-
81
- modelone = user.modelones.build(name: 'modelone')
82
- modelone.save!
83
- modelone.build_one_embedded(name: 'modelone_one_embedded').save!
84
- expect(modelone.history_tracks.count).to eq(2)
85
- expect(modelone.one_embedded.history_tracks.count).to eq(1)
86
-
87
- modelone.reload
88
- modelone.one_embedded.update_attribute(:name, 'modelone_embedded_one!')
89
- expect(modelone.history_tracks.count).to eq(3)
90
- expect(modelone.one_embedded.history_tracks.count).to eq(2)
91
- expect(modelone.history_tracks.last.action).to eq('update')
92
-
93
- modelone.build_one_embedded(name: 'Lorem ipsum').save!
94
- expect(modelone.history_tracks.count).to eq(4)
95
- expect(modelone.one_embedded.history_tracks.count).to eq(1)
96
- expect(modelone.one_embedded.history_tracks.last.action).to eq('create')
97
- expect(modelone.one_embedded.history_tracks.last.association_chain.last['name']).to eq('one_embedded')
98
-
99
- embedded_one1 = modelone.one_embedded.embedded_twos.create(name: 'modelone_one_embedded_1')
100
- expect(modelone.history_tracks.count).to eq(5)
101
- expect(modelone.one_embedded.history_tracks.count).to eq(2)
102
- expect(embedded_one1.history_tracks.count).to eq(1)
103
-
104
- modeltwo = user.modeltwos.build(name: 'modeltwo')
105
- modeltwo.save!
106
- modeltwo.build_one_embedded(name: 'modeltwo_one_embedded').save!
107
- expect(modeltwo.history_tracks.count).to eq(2)
108
- expect(modeltwo.one_embedded.history_tracks.count).to eq(1)
109
-
110
- modeltwo.reload
111
- modeltwo.one_embedded.update_attribute(:name, 'modeltwo_one_embedded!')
112
- expect(modeltwo.history_tracks.count).to eq(3)
113
- expect(modeltwo.one_embedded.history_tracks.count).to eq(2)
114
- expect(modeltwo.history_tracks.last.action).to eq('update')
115
-
116
- modeltwo.build_one_embedded(name: 'Lorem ipsum').save!
117
- expect(modeltwo.history_tracks.count).to eq(4)
118
- expect(modeltwo.one_embedded.history_tracks.count).to eq(1)
119
- expect(modeltwo.one_embedded.history_tracks.last.action).to eq('create')
120
- expect(modeltwo.one_embedded.history_tracks.last.association_chain.last['name']).to eq('one_embedded')
121
-
122
- embedded_one2 = modeltwo.one_embedded.embedded_twos.create(name: 'modeltwo_one_embedded_1')
123
- expect(modeltwo.history_tracks.count).to eq(5)
124
- expect(modeltwo.one_embedded.history_tracks.count).to eq(2)
125
- expect(embedded_one2.history_tracks.count).to eq(1)
126
- end
127
- end
1
+ require 'spec_helper'
2
+
3
+ describe Mongoid::History::Tracker do
4
+ before :each do
5
+ class ModelOne
6
+ include Mongoid::Document
7
+ include Mongoid::History::Trackable
8
+
9
+ field :name, type: String
10
+ belongs_to :user
11
+ embeds_one :one_embedded, as: :embedable
12
+
13
+ track_history
14
+ end
15
+
16
+ class ModelTwo
17
+ include Mongoid::Document
18
+ include Mongoid::History::Trackable
19
+
20
+ field :name, type: String
21
+ belongs_to :user
22
+ embeds_one :one_embedded, as: :embedable
23
+
24
+ track_history
25
+ end
26
+
27
+ class OneEmbedded
28
+ include Mongoid::Document
29
+ include Mongoid::History::Trackable
30
+
31
+ field :name
32
+ embeds_many :embedded_twos, store_as: :ems
33
+ embedded_in :embedable, polymorphic: true
34
+
35
+ track_history scope: %i[model_one model_two]
36
+ end
37
+
38
+ class EmbeddedTwo
39
+ include Mongoid::Document
40
+ include Mongoid::History::Trackable
41
+
42
+ field :name
43
+ embedded_in :one_embedded
44
+
45
+ track_history scope: %i[model_one model_two]
46
+ end
47
+
48
+ class User
49
+ include Mongoid::Document
50
+
51
+ has_many :model_ones
52
+ has_many :model_twos
53
+ end
54
+ end
55
+
56
+ after :each do
57
+ Object.send(:remove_const, :ModelOne)
58
+ Object.send(:remove_const, :ModelTwo)
59
+ Object.send(:remove_const, :OneEmbedded)
60
+ Object.send(:remove_const, :EmbeddedTwo)
61
+ Object.send(:remove_const, :User)
62
+ end
63
+
64
+ let (:user) { User.create! }
65
+
66
+ it 'tracks history for nested embedded documents with polymorphic relations' do
67
+ user = User.create!
68
+
69
+ model_one = user.model_ones.build(name: 'model_one', modifier: user)
70
+ model_one.save!
71
+ model_one.build_one_embedded(name: 'model_one_one_embedded', modifier: user).save!
72
+ expect(model_one.history_tracks.count).to eq(2)
73
+ expect(model_one.one_embedded.history_tracks.count).to eq(1)
74
+
75
+ model_one.reload
76
+ model_one.one_embedded.update_attributes!(name: 'model_one_embedded_one!')
77
+ expect(model_one.history_tracks.count).to eq(3)
78
+ expect(model_one.one_embedded.history_tracks.count).to eq(2)
79
+ expect(model_one.history_tracks.last.action).to eq('update')
80
+
81
+ model_one.build_one_embedded(name: 'Lorem ipsum', modifier: user).save!
82
+ expect(model_one.history_tracks.count).to eq(4)
83
+ expect(model_one.one_embedded.history_tracks.count).to eq(1)
84
+ expect(model_one.one_embedded.history_tracks.last.action).to eq('create')
85
+ expect(model_one.one_embedded.history_tracks.last.association_chain.last['name']).to eq('one_embedded')
86
+
87
+ embedded_one1 = model_one.one_embedded.embedded_twos.create!(name: 'model_one_one_embedded_1', modifier: user)
88
+ expect(model_one.history_tracks.count).to eq(5)
89
+ expect(model_one.one_embedded.history_tracks.count).to eq(2)
90
+ expect(embedded_one1.history_tracks.count).to eq(1)
91
+
92
+ model_two = user.model_twos.build(name: 'model_two', modifier: user)
93
+ model_two.save!
94
+ model_two.build_one_embedded(name: 'model_two_one_embedded', modifier: user).save!
95
+ expect(model_two.history_tracks.count).to eq(2)
96
+ expect(model_two.one_embedded.history_tracks.count).to eq(1)
97
+
98
+ model_two.reload
99
+ model_two.one_embedded.update_attributes!(name: 'model_two_one_embedded!')
100
+ expect(model_two.history_tracks.count).to eq(3)
101
+ expect(model_two.one_embedded.history_tracks.count).to eq(2)
102
+ expect(model_two.history_tracks.last.action).to eq('update')
103
+
104
+ model_two.build_one_embedded(name: 'Lorem ipsum', modifier: user).save!
105
+ expect(model_two.history_tracks.count).to eq(4)
106
+ expect(model_two.one_embedded.history_tracks.count).to eq(1)
107
+ expect(model_two.one_embedded.history_tracks.last.action).to eq('create')
108
+ expect(model_two.one_embedded.history_tracks.last.association_chain.last['name']).to eq('one_embedded')
109
+
110
+ embedded_one2 = model_two.one_embedded.embedded_twos.create!(name: 'model_two_one_embedded_1', modifier: user)
111
+ expect(model_two.history_tracks.count).to eq(5)
112
+ expect(model_two.one_embedded.history_tracks.count).to eq(2)
113
+ expect(embedded_one2.history_tracks.count).to eq(1)
114
+ end
115
+ end
@@ -1,29 +1,47 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::History::Tracker do
4
- before :all do
5
- class Element
6
- include Mongoid::Document
7
- include Mongoid::Timestamps
8
- include Mongoid::History::Trackable
9
-
10
- field :body
11
-
12
- track_history on: [:body], track_create: true, track_update: true, track_destroy: true
13
- end
14
-
15
- class Prompt < Element
16
- end
17
- end
18
-
19
- it 'tracks subclass create and update' do
20
- prompt = Prompt.new
21
- expect { prompt.save! }.to change(Tracker, :count).by(1)
22
- expect { prompt.update_attributes!(body: 'one') }.to change(Tracker, :count).by(1)
23
- prompt.undo!
24
- expect(prompt.body).to be_blank
25
- prompt.redo! nil, 2
26
- expect(prompt.body).to eq('one')
27
- expect { prompt.destroy }.to change(Tracker, :count).by(1)
28
- end
29
- end
1
+ require 'spec_helper'
2
+
3
+ describe Mongoid::History::Tracker do
4
+ before :each do
5
+ class Element
6
+ include Mongoid::Document
7
+ include Mongoid::Timestamps
8
+ include Mongoid::History::Trackable
9
+
10
+ track_history
11
+
12
+ field :body
13
+
14
+ # force preparation of options
15
+ history_trackable_options
16
+ end
17
+
18
+ class Prompt < Element
19
+ field :head
20
+ end
21
+
22
+ class User
23
+ include Mongoid::Document
24
+ end
25
+ end
26
+
27
+ after :each do
28
+ Object.send(:remove_const, :Element)
29
+ Object.send(:remove_const, :Prompt)
30
+ Object.send(:remove_const, :User)
31
+ end
32
+
33
+ let(:user) { User.create! }
34
+
35
+ it 'tracks subclass create and update' do
36
+ prompt = Prompt.new(modifier: user)
37
+ expect { prompt.save! }.to change(Tracker, :count).by(1)
38
+ expect { prompt.update_attributes!(body: 'one', head: 'two') }.to change(Tracker, :count).by(1)
39
+ prompt.undo! user
40
+ expect(prompt.body).to be_blank
41
+ expect(prompt.head).to be_blank
42
+ prompt.redo! user, 2
43
+ expect(prompt.body).to eq('one')
44
+ expect(prompt.head).to eq('two')
45
+ expect { prompt.destroy }.to change(Tracker, :count).by(1)
46
+ end
47
+ end
@@ -1,52 +1,84 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::History::Tracker do
4
- it 'should not track fields when track_history not called' do
5
- class NotModel
6
- include Mongoid::Document
7
- include Mongoid::History::Trackable
8
-
9
- field :foo
10
- end
11
-
12
- expect(NotModel.respond_to?(:tracked?)).to be false
13
- end
14
-
15
- it 'should track fields when track_history called inside class and before fields' do
16
- class InsideBeforeModel
17
- include Mongoid::Document
18
- include Mongoid::History::Trackable
19
-
20
- track_history on: :fields
21
-
22
- field :foo
23
- end
24
-
25
- expect(InsideBeforeModel.tracked?(:foo)).to be true
26
- end
27
-
28
- it 'should track fields when track_history called inside class and after fields' do
29
- class InsideAfterModel
30
- include Mongoid::Document
31
- include Mongoid::History::Trackable
32
-
33
- field :foo
34
-
35
- track_history on: :fields
36
- end
37
-
38
- expect(InsideAfterModel.tracked?(:foo)).to be true
39
- end
40
-
41
- it 'should track fields when track_history called outside class' do
42
- class OutsideModel
43
- include Mongoid::Document
44
- include Mongoid::History::Trackable
45
-
46
- field :foo
47
- end
48
-
49
- OutsideModel.track_history on: :fields
50
- expect(OutsideModel.tracked?(:foo)).to be true
51
- end
52
- end
1
+ require 'spec_helper'
2
+
3
+ describe Mongoid::History::Tracker do
4
+ context 'when track_history not called' do
5
+ before :each do
6
+ class NotModel
7
+ include Mongoid::Document
8
+ include Mongoid::History::Trackable
9
+
10
+ field :foo
11
+ end
12
+ end
13
+
14
+ after :each do
15
+ Object.send(:remove_const, :NotModel)
16
+ end
17
+
18
+ it 'should not track fields' do
19
+ expect(NotModel.respond_to?(:tracked?)).to be false
20
+ end
21
+ end
22
+
23
+ context 'boefore field' do
24
+ before :each do
25
+ class InsideBeforeModel
26
+ include Mongoid::Document
27
+ include Mongoid::History::Trackable
28
+
29
+ track_history on: :fields
30
+
31
+ field :foo
32
+ end
33
+ end
34
+
35
+ after :each do
36
+ Object.send(:remove_const, :InsideBeforeModel)
37
+ end
38
+
39
+ it 'should track fields' do
40
+ expect(InsideBeforeModel.tracked?(:foo)).to be true
41
+ end
42
+ end
43
+
44
+ context 'when track_history called inside class and after fields' do
45
+ before :each do
46
+ class InsideAfterModel
47
+ include Mongoid::Document
48
+ include Mongoid::History::Trackable
49
+
50
+ field :foo
51
+
52
+ track_history on: :fields
53
+ end
54
+ end
55
+
56
+ after :each do
57
+ Object.send(:remove_const, :InsideAfterModel)
58
+ end
59
+
60
+ it 'should track fields' do
61
+ expect(InsideAfterModel.tracked?(:foo)).to be true
62
+ end
63
+ end
64
+
65
+ context 'when track_history called outside class' do
66
+ before :each do
67
+ class OutsideModel
68
+ include Mongoid::Document
69
+ include Mongoid::History::Trackable
70
+
71
+ field :foo
72
+ end
73
+ end
74
+
75
+ after :each do
76
+ Object.send(:remove_const, :OutsideModel)
77
+ end
78
+
79
+ it 'should track fields' do
80
+ OutsideModel.track_history on: :fields
81
+ expect(OutsideModel.tracked?(:foo)).to be true
82
+ end
83
+ end
84
+ end
@@ -1,63 +1,76 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::History::Tracker do
4
- before :all do
5
- class Element
6
- include Mongoid::Document
7
- include Mongoid::Timestamps
8
- include Mongoid::History::Trackable
9
-
10
- field :title
11
- field :body
12
-
13
- validates :title, presence: true
14
-
15
- has_many :items, dependent: :restrict
16
-
17
- track_history on: [:body], track_create: true, track_update: true, track_destroy: true
18
- end
19
-
20
- class Item
21
- include Mongoid::Document
22
- include Mongoid::Timestamps
23
-
24
- belongs_to :element
25
- end
26
-
27
- class Prompt < Element
28
- end
29
-
30
- @persisted_history_options = Mongoid::History.trackable_class_options
31
- end
32
-
33
- before(:each) { Mongoid::History.trackable_class_options = @persisted_history_options }
34
-
35
- it 'does not track delete when parent class validation fails' do
36
- prompt = Prompt.new(title: 'first')
37
- expect { prompt.save! }.to change(Tracker, :count).by(1)
38
- expect do
39
- expect { prompt.update_attributes!(title: nil, body: 'one') }
40
- .to raise_error(Mongoid::Errors::Validations)
41
- end.to change(Tracker, :count).by(0)
42
- end
43
-
44
- it 'does not track delete when parent class restrict dependency fails' do
45
- prompt = Prompt.new(title: 'first')
46
- prompt.items << Item.new
47
- expect { prompt.save! }.to change(Tracker, :count).by(1)
48
- expect(prompt.version).to eq(1)
49
- expect do
50
- expect { prompt.destroy }.to raise_error(Mongoid::Errors::DeleteRestriction)
51
- end.to change(Tracker, :count).by(0)
52
- end
53
-
54
- it 'does not track delete when restrict dependency fails' do
55
- elem = Element.new(title: 'first')
56
- elem.items << Item.new
57
- expect { elem.save! }.to change(Tracker, :count).by(1)
58
- expect(elem.version).to eq(1)
59
- expect do
60
- expect { elem.destroy }.to raise_error(Mongoid::Errors::DeleteRestriction)
61
- end.to change(Tracker, :count).by(0)
62
- end
63
- end
1
+ require 'spec_helper'
2
+
3
+ describe Mongoid::History::Tracker do
4
+ before :each do
5
+ class Element
6
+ include Mongoid::Document
7
+ include Mongoid::Timestamps
8
+ include Mongoid::History::Trackable
9
+
10
+ field :title
11
+ field :body
12
+
13
+ validates :title, presence: true
14
+
15
+ if Mongoid::Compatibility::Version.mongoid7_or_newer?
16
+ has_many :items, dependent: :restrict_with_exception
17
+ else
18
+ has_many :items, dependent: :restrict
19
+ end
20
+
21
+ track_history on: [:body]
22
+ end
23
+
24
+ class Item
25
+ include Mongoid::Document
26
+ include Mongoid::Timestamps
27
+
28
+ belongs_to :element
29
+ end
30
+
31
+ class Prompt < Element
32
+ end
33
+
34
+ class User
35
+ include Mongoid::Document
36
+ end
37
+ end
38
+
39
+ after :each do
40
+ Object.send(:remove_const, :Element)
41
+ Object.send(:remove_const, :Item)
42
+ Object.send(:remove_const, :Prompt)
43
+ Object.send(:remove_const, :User)
44
+ end
45
+
46
+ let(:user) { User.create! }
47
+
48
+ it 'does not track delete when parent class validation fails' do
49
+ prompt = Prompt.new(title: 'first', modifier: user)
50
+ expect { prompt.save! }.to change(Tracker, :count).by(1)
51
+ expect do
52
+ expect { prompt.update_attributes!(title: nil, body: 'one') }
53
+ .to raise_error(Mongoid::Errors::Validations)
54
+ end.to change(Tracker, :count).by(0)
55
+ end
56
+
57
+ it 'does not track delete when parent class restrict dependency fails' do
58
+ prompt = Prompt.new(title: 'first', modifier: user)
59
+ prompt.items << Item.new
60
+ expect { prompt.save! }.to change(Tracker, :count).by(1)
61
+ expect(prompt.version).to eq(1)
62
+ expect do
63
+ expect { prompt.destroy }.to raise_error(Mongoid::Errors::DeleteRestriction)
64
+ end.to change(Tracker, :count).by(0)
65
+ end
66
+
67
+ it 'does not track delete when restrict dependency fails' do
68
+ elem = Element.new(title: 'first', modifier: user)
69
+ elem.items << Item.new
70
+ expect { elem.save! }.to change(Tracker, :count).by(1)
71
+ expect(elem.version).to eq(1)
72
+ expect do
73
+ expect { elem.destroy }.to raise_error(Mongoid::Errors::DeleteRestriction)
74
+ end.to change(Tracker, :count).by(0)
75
+ end
76
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,25 +1,32 @@
1
- require 'coveralls'
2
- Coveralls.wear!
3
-
4
- $LOAD_PATH.push File.expand_path('../../lib', __FILE__)
5
-
6
- require 'active_support/all'
7
- require 'mongoid'
8
- require 'request_store'
9
-
10
- # Undefine RequestStore so that it may be stubbed in specific tests
11
- RequestStoreTemp = RequestStore
12
- Object.send(:remove_const, :RequestStore)
13
-
14
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
15
-
16
- require 'mongoid/history'
17
-
18
- RSpec.configure do |config|
19
- config.raise_errors_for_deprecations!
20
- config.before :all do
21
- Mongoid.logger.level = Logger::INFO
22
- Mongo::Logger.logger.level = Logger::INFO if Mongoid::Compatibility::Version.mongoid5? || Mongoid::Compatibility::Version.mongoid6?
23
- Mongoid.belongs_to_required_by_default = false if Mongoid::Compatibility::Version.mongoid6?
24
- end
25
- end
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ $LOAD_PATH.push File.expand_path('../../lib', __FILE__)
5
+
6
+ require 'active_support/all'
7
+ require 'mongoid'
8
+ require 'request_store'
9
+
10
+ # Undefine RequestStore so that it may be stubbed in specific tests
11
+ RequestStoreTemp = RequestStore
12
+ Object.send(:remove_const, :RequestStore)
13
+
14
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
15
+
16
+ require 'mongoid/history'
17
+
18
+ RSpec.configure do |config|
19
+ config.raise_errors_for_deprecations!
20
+
21
+ config.before :all do
22
+ Mongoid.logger.level = Logger::INFO
23
+ Mongo::Logger.logger.level = Logger::INFO if Mongoid::Compatibility::Version.mongoid5_or_newer?
24
+ Mongoid.belongs_to_required_by_default = false if Mongoid::Compatibility::Version.mongoid6?
25
+ end
26
+
27
+ config.before :each do
28
+ Mongoid::History.reset!
29
+ end
30
+
31
+ config.include ErrorHelpers
32
+ end
@@ -0,0 +1,7 @@
1
+ module ErrorHelpers
2
+ def ignore_errors
3
+ yield
4
+ rescue StandardError => e
5
+ Mongoid.logger.debug "ignored error #{e}"
6
+ end
7
+ end