mongoid_paranoia 0.1.2 → 0.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.
@@ -0,0 +1,247 @@
1
+ class NormBase
2
+ include Mongoid::Document
3
+
4
+ has_one :norm_has_one, dependent: :destroy
5
+ has_one :para_has_one, dependent: :destroy
6
+
7
+ has_many :norm_has_many, dependent: :destroy
8
+ has_many :para_has_many, dependent: :destroy
9
+
10
+ has_many :norm_has_many_poly, dependent: :destroy
11
+ has_many :para_has_many_poly, dependent: :destroy
12
+
13
+ belongs_to :norm_belongs_to_one, dependent: :destroy
14
+ belongs_to :para_belongs_to_one, dependent: :destroy
15
+
16
+ belongs_to :norm_belongs_to, dependent: :destroy
17
+ belongs_to :para_belongs_to, dependent: :destroy
18
+
19
+ has_and_belongs_to_many :norm_habtm, dependent: :destroy
20
+ has_and_belongs_to_many :para_habtm, dependent: :destroy
21
+
22
+ embeds_one :norm_embeds_one
23
+ embeds_one :para_embeds_one
24
+
25
+ embeds_many :norm_embeds_many
26
+ embeds_many :para_embeds_many
27
+
28
+ embeds_many :norm_embeds_many_poly
29
+ embeds_many :para_embeds_many_poly
30
+ end
31
+
32
+ class ParaBase
33
+ include Mongoid::Document
34
+ include Mongoid::Paranoia
35
+
36
+ has_one :norm_has_one, dependent: :destroy
37
+ has_one :para_has_one, dependent: :destroy
38
+
39
+ has_many :norm_has_many, dependent: :destroy
40
+ has_many :para_has_many, dependent: :destroy
41
+
42
+ has_many :norm_has_many_poly, dependent: :destroy
43
+ has_many :para_has_many_poly, dependent: :destroy
44
+
45
+ belongs_to :norm_belongs_to_one, dependent: :destroy
46
+ belongs_to :para_belongs_to_one, dependent: :destroy
47
+
48
+ belongs_to :norm_belongs_to, dependent: :destroy
49
+ belongs_to :para_belongs_to, dependent: :destroy
50
+
51
+ has_and_belongs_to_many :norm_habtm, dependent: :destroy
52
+ has_and_belongs_to_many :para_habtm, dependent: :destroy
53
+
54
+ embeds_one :norm_embeds_one
55
+ embeds_one :para_embeds_one
56
+
57
+ embeds_many :norm_embeds_many
58
+ embeds_many :para_embeds_many
59
+
60
+ embeds_many :norm_embeds_many_poly
61
+ embeds_many :para_embeds_many_poly
62
+ end
63
+
64
+ class NormHasOne
65
+ include Mongoid::Document
66
+
67
+ belongs_to :norm_base
68
+ belongs_to :para_base
69
+
70
+ has_one :norm_belongs_to, dependent: :destroy
71
+ has_one :para_belongs_to, dependent: :destroy
72
+
73
+ has_one :norm_habtm, dependent: :destroy
74
+ has_one :norm_habtm, dependent: :destroy
75
+ end
76
+
77
+ class NormHasMany
78
+ include Mongoid::Document
79
+
80
+ belongs_to :norm_base
81
+ belongs_to :para_base
82
+
83
+ has_many :norm_belongs_to, dependent: :destroy
84
+ has_many :para_belongs_to, dependent: :destroy
85
+
86
+ has_many :norm_habtm, dependent: :destroy
87
+ has_many :norm_habtm, dependent: :destroy
88
+ end
89
+
90
+ class NormHasManyPoly
91
+ include Mongoid::Document
92
+
93
+ belongs_to :base, polymorphic: true
94
+ end
95
+
96
+ class NormBelongsToOne
97
+ include Mongoid::Document
98
+
99
+ has_one :norm_base
100
+ has_one :para_base
101
+ end
102
+
103
+ class NormBelongsTo
104
+ include Mongoid::Document
105
+
106
+ has_many :norm_base
107
+ has_many :para_base
108
+
109
+ belongs_to :norm_has_one, dependent: :destroy
110
+ belongs_to :para_has_one, dependent: :destroy
111
+
112
+ belongs_to :norm_has_many, dependent: :destroy
113
+ belongs_to :para_has_many, dependent: :destroy
114
+ end
115
+
116
+ class NormHabtm
117
+ include Mongoid::Document
118
+
119
+ has_and_belongs_to_many :norm_base
120
+ has_and_belongs_to_many :para_base
121
+
122
+ belongs_to :norm_has_one, dependent: :destroy
123
+ belongs_to :para_has_one, dependent: :destroy
124
+
125
+ belongs_to :norm_has_many, dependent: :destroy
126
+ belongs_to :para_has_many, dependent: :destroy
127
+
128
+ has_and_belongs_to_many :recursive, class_name: 'NormHabtm', inverse_of: :recursive, dependent: :destroy
129
+ has_and_belongs_to_many :para_habtm, dependent: :destroy
130
+ end
131
+
132
+ class NormEmbedsOne
133
+ include Mongoid::Document
134
+
135
+ embedded_in :norm_base
136
+ embedded_in :para_base
137
+ end
138
+
139
+ class NormEmbedsMany
140
+ include Mongoid::Document
141
+
142
+ embedded_in :norm_base
143
+ embedded_in :para_base
144
+ end
145
+
146
+ class NormEmbedsManyPoly
147
+ include Mongoid::Document
148
+
149
+ embedded_in :base, polymorphic: true
150
+ end
151
+
152
+ class ParaHasOne
153
+ include Mongoid::Document
154
+ include Mongoid::Paranoia
155
+
156
+ belongs_to :norm_base
157
+ belongs_to :para_base
158
+
159
+ has_one :norm_belongs_to, dependent: :destroy
160
+ has_one :para_belongs_to, dependent: :destroy
161
+
162
+ has_one :norm_habtm, dependent: :destroy
163
+ has_one :norm_habtm, dependent: :destroy
164
+ end
165
+
166
+ class ParaHasMany
167
+ include Mongoid::Document
168
+ include Mongoid::Paranoia
169
+
170
+ belongs_to :norm_base
171
+ belongs_to :para_base
172
+
173
+ has_many :norm_belongs_to, dependent: :destroy
174
+ has_many :para_belongs_to, dependent: :destroy
175
+
176
+ has_many :norm_habtm, dependent: :destroy
177
+ has_many :norm_habtm, dependent: :destroy
178
+ end
179
+
180
+ class ParaHasManyPoly
181
+ include Mongoid::Document
182
+ include Mongoid::Paranoia
183
+
184
+ belongs_to :base, polymorphic: true
185
+ end
186
+
187
+ class ParaBelongsToOne
188
+ include Mongoid::Document
189
+ include Mongoid::Paranoia
190
+
191
+ has_one :norm_base
192
+ has_one :para_base
193
+ end
194
+
195
+ class ParaBelongsTo
196
+ include Mongoid::Document
197
+ include Mongoid::Paranoia
198
+
199
+ has_many :norm_base
200
+ has_many :para_base
201
+
202
+ belongs_to :norm_has_one, dependent: :destroy
203
+ belongs_to :para_has_one, dependent: :destroy
204
+
205
+ belongs_to :norm_has_many, dependent: :destroy
206
+ belongs_to :para_has_many, dependent: :destroy
207
+ end
208
+
209
+ class ParaHabtm
210
+ include Mongoid::Document
211
+ include Mongoid::Paranoia
212
+
213
+ has_and_belongs_to_many :norm_base
214
+ has_and_belongs_to_many :para_base
215
+
216
+ belongs_to :norm_has_one, dependent: :destroy
217
+ belongs_to :para_has_one, dependent: :destroy
218
+
219
+ belongs_to :norm_has_many, dependent: :destroy
220
+ belongs_to :para_has_many, dependent: :destroy
221
+
222
+ has_and_belongs_to_many :norm_habtm, dependent: :destroy
223
+ has_and_belongs_to_many :recursive, class_name: 'ParaHabtm', inverse_of: :recursive, dependent: :destroy
224
+ end
225
+
226
+ class ParaEmbedsOne
227
+ include Mongoid::Document
228
+ include Mongoid::Paranoia
229
+
230
+ embedded_in :norm_base
231
+ embedded_in :para_base
232
+ end
233
+
234
+ class ParaEmbedsMany
235
+ include Mongoid::Document
236
+ include Mongoid::Paranoia
237
+
238
+ embedded_in :norm_base
239
+ embedded_in :para_base
240
+ end
241
+
242
+ class ParaEmbedsManyPoly
243
+ include Mongoid::Document
244
+ include Mongoid::Paranoia
245
+
246
+ embedded_in :base, polymorphic: true
247
+ end
@@ -1,6 +1,6 @@
1
- class Tag
2
- include Mongoid::Document
3
- field :text, type: String
4
- has_and_belongs_to_many :paranoid_posts
5
- has_and_belongs_to_many :related, class_name: "Tag", inverse_of: :related
6
- end
1
+ class Tag
2
+ include Mongoid::Document
3
+ field :text, type: String
4
+ has_and_belongs_to_many :paranoid_posts
5
+ has_and_belongs_to_many :related, class_name: "Tag", inverse_of: :related
6
+ end
@@ -1,4 +1,4 @@
1
- class Title
2
- include Mongoid::Document
3
- belongs_to :paranoid_post
4
- end
1
+ class Title
2
+ include Mongoid::Document
3
+ belongs_to :paranoid_post
4
+ end
@@ -0,0 +1,19 @@
1
+ require "spec_helper"
2
+
3
+ module Mongoid
4
+ module Paranoia
5
+ describe Configuration do
6
+ describe '#paranoid_field' do
7
+ it 'initializes with default value set to :deleted_at' do
8
+ expect(Configuration.new.paranoid_field).to eq(:deleted_at)
9
+ end
10
+
11
+ it 'can be updated' do
12
+ config = Configuration.new
13
+ config.paranoid_field = :myFieldName
14
+ expect(config.paranoid_field).to eq(:myFieldName)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,21 +1,21 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Document do
4
-
5
- describe ".paranoid?" do
6
-
7
- context "when Mongoid::Paranoia is included" do
8
- subject { ParanoidPost }
9
- it "returns true" do
10
- expect(subject.paranoid?).to be_truthy
11
- end
12
- end
13
-
14
- context "when Mongoid::Paranoia not included" do
15
- subject { Author }
16
- it "returns true" do
17
- expect(subject.paranoid?).to be_falsey
18
- end
19
- end
20
- end
21
- end
1
+ require "spec_helper"
2
+
3
+ describe Mongoid::Document do
4
+
5
+ describe ".paranoid?" do
6
+
7
+ context "when Mongoid::Paranoia is included" do
8
+ subject { ParanoidPost }
9
+ it "returns true" do
10
+ expect(subject.paranoid?).to be_truthy
11
+ end
12
+ end
13
+
14
+ context "when Mongoid::Paranoia not included" do
15
+ subject { Author }
16
+ it "returns true" do
17
+ expect(subject.paranoid?).to be_falsey
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,164 +1,164 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Attributes::Nested do
4
- describe "##{name}_attributes=" do
5
- context "when the parent document is new" do
6
- context "when the relation is an embeds many" do
7
- context "when ids are passed" do
8
-
9
- let(:person) do
10
- Person.create
11
- end
12
-
13
- let(:address_one) do
14
- Address.new(street: "Unter den Linden")
15
- end
16
-
17
- let(:address_two) do
18
- Address.new(street: "Kurfeurstendamm")
19
- end
20
-
21
- let(:phone_one) do
22
- ParanoidPhone.new(number: "1")
23
- end
24
-
25
- let(:phone_two) do
26
- ParanoidPhone.new(number: "2")
27
- end
28
-
29
- before do
30
- person.addresses << [ address_one, address_two ]
31
- end
32
-
33
- context "when destroy attributes are passed" do
34
- context "when the ids match" do
35
- context "when allow_destroy is true" do
36
- context "when the child is paranoid" do
37
-
38
- before(:all) do
39
- Person.send(:undef_method, :paranoid_phones_attributes=)
40
- Person.accepts_nested_attributes_for :paranoid_phones,
41
- allow_destroy: true
42
- end
43
-
44
- after(:all) do
45
- Person.send(:undef_method, :paranoid_phones_attributes=)
46
- Person.accepts_nested_attributes_for :paranoid_phones
47
- end
48
-
49
- [ 1, "1", true, "true" ].each do |truth|
50
-
51
- context "when passed a #{truth} with destroy" do
52
- context "when the parent is persisted" do
53
-
54
- let!(:persisted) do
55
- Person.create do |p|
56
- p.paranoid_phones << [ phone_one, phone_two ]
57
- end
58
- end
59
-
60
- context "when setting, pulling, and pushing in one op" do
61
-
62
- before do
63
- persisted.paranoid_phones_attributes =
64
- {
65
- "bar" => { "id" => phone_one.id, "_destroy" => truth },
66
- "foo" => { "id" => phone_two.id, "number" => "3" },
67
- "baz" => { "number" => "4" }
68
- }
69
- end
70
-
71
- it "removes the first document from the relation" do
72
- expect(persisted.paranoid_phones.size).to eq(2)
73
- end
74
-
75
- it "does not delete the unmarked document" do
76
- expect(persisted.paranoid_phones.first.number).to eq("3")
77
- end
78
-
79
- it "adds the new document to the relation" do
80
- expect(persisted.paranoid_phones.last.number).to eq("4")
81
- end
82
-
83
- it "has the proper persisted count" do
84
- expect(persisted.paranoid_phones.count).to eq(1)
85
- end
86
-
87
- it "soft deletes the removed document" do
88
- expect(phone_one).to be_destroyed
89
- end
90
-
91
- context "when saving the parent" do
92
-
93
- before do
94
- persisted.with(safe: true).save
95
- end
96
-
97
- it "deletes the marked document from the relation" do
98
- expect(persisted.reload.paranoid_phones.count).to eq(2)
99
- end
100
-
101
- it "does not delete the unmarked document" do
102
- expect(persisted.reload.paranoid_phones.first.number).to eq("3")
103
- end
104
-
105
- it "persists the new document to the relation" do
106
- expect(persisted.reload.paranoid_phones.last.number).to eq("4")
107
- end
108
- end
109
- end
110
- end
111
- end
112
- end
113
- end
114
-
115
- context "when the child has defaults" do
116
-
117
- before(:all) do
118
- Person.accepts_nested_attributes_for :appointments, allow_destroy: true
119
- end
120
-
121
- after(:all) do
122
- Person.send(:undef_method, :appointments_attributes=)
123
- end
124
- context "when the parent is persisted" do
125
- context "when the child returns false in a before callback" do
126
- context "when the child is paranoid" do
127
-
128
- before(:all) do
129
- Person.accepts_nested_attributes_for :paranoid_phones, allow_destroy: true
130
- end
131
-
132
- after(:all) do
133
- Person.send(:undef_method, :paranoid_phones=)
134
- Person.accepts_nested_attributes_for :paranoid_phones
135
- end
136
-
137
- let!(:persisted) do
138
- Person.create(age: 42)
139
- end
140
-
141
- let!(:phone) do
142
- persisted.paranoid_phones.create
143
- end
144
-
145
- before do
146
- persisted.paranoid_phones_attributes =
147
- { "foo" => { "id" => phone.id, "number" => 42, "_destroy" => true }}
148
- end
149
-
150
- it "does not destroy the child" do
151
- expect(persisted.reload.paranoid_phones).not_to be_empty
152
- end
153
- end
154
- end
155
- end
156
- end
157
- end
158
- end
159
- end
160
- end
161
- end
162
- end
163
- end
164
- end
1
+ require "spec_helper"
2
+
3
+ describe Mongoid::Attributes::Nested do
4
+ describe "##{name}_attributes=" do
5
+ context "when the parent document is new" do
6
+ context "when the relation is an embeds many" do
7
+ context "when ids are passed" do
8
+
9
+ let(:person) do
10
+ Person.create
11
+ end
12
+
13
+ let(:address_one) do
14
+ Address.new(street: "Unter den Linden")
15
+ end
16
+
17
+ let(:address_two) do
18
+ Address.new(street: "Kurfeurstendamm")
19
+ end
20
+
21
+ let(:phone_one) do
22
+ ParanoidPhone.new(number: "1")
23
+ end
24
+
25
+ let(:phone_two) do
26
+ ParanoidPhone.new(number: "2")
27
+ end
28
+
29
+ before do
30
+ person.addresses << [ address_one, address_two ]
31
+ end
32
+
33
+ context "when destroy attributes are passed" do
34
+ context "when the ids match" do
35
+ context "when allow_destroy is true" do
36
+ context "when the child is paranoid" do
37
+
38
+ before(:all) do
39
+ Person.send(:undef_method, :paranoid_phones_attributes=)
40
+ Person.accepts_nested_attributes_for :paranoid_phones,
41
+ allow_destroy: true
42
+ end
43
+
44
+ after(:all) do
45
+ Person.send(:undef_method, :paranoid_phones_attributes=)
46
+ Person.accepts_nested_attributes_for :paranoid_phones
47
+ end
48
+
49
+ [ 1, "1", true, "true" ].each do |truth|
50
+
51
+ context "when passed a #{truth} with destroy" do
52
+ context "when the parent is persisted" do
53
+
54
+ let!(:persisted) do
55
+ Person.create do |p|
56
+ p.paranoid_phones << [ phone_one, phone_two ]
57
+ end
58
+ end
59
+
60
+ context "when setting, pulling, and pushing in one op" do
61
+
62
+ before do
63
+ persisted.paranoid_phones_attributes =
64
+ {
65
+ "bar" => { "id" => phone_one.id, "_destroy" => truth },
66
+ "foo" => { "id" => phone_two.id, "number" => "3" },
67
+ "baz" => { "number" => "4" }
68
+ }
69
+ end
70
+
71
+ it "removes the first document from the relation" do
72
+ expect(persisted.paranoid_phones.size).to eq(2)
73
+ end
74
+
75
+ it "does not delete the unmarked document" do
76
+ expect(persisted.paranoid_phones.first.number).to eq("3")
77
+ end
78
+
79
+ it "adds the new document to the relation" do
80
+ expect(persisted.paranoid_phones.last.number).to eq("4")
81
+ end
82
+
83
+ it "has the proper persisted count" do
84
+ expect(persisted.paranoid_phones.count).to eq(1)
85
+ end
86
+
87
+ it "soft deletes the removed document" do
88
+ expect(phone_one).to be_destroyed
89
+ end
90
+
91
+ context "when saving the parent" do
92
+
93
+ before do
94
+ persisted.with(safe: true).save
95
+ end
96
+
97
+ it "deletes the marked document from the relation" do
98
+ expect(persisted.reload.paranoid_phones.count).to eq(2)
99
+ end
100
+
101
+ it "does not delete the unmarked document" do
102
+ expect(persisted.reload.paranoid_phones.first.number).to eq("3")
103
+ end
104
+
105
+ it "persists the new document to the relation" do
106
+ expect(persisted.reload.paranoid_phones.last.number).to eq("4")
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+
115
+ context "when the child has defaults" do
116
+
117
+ before(:all) do
118
+ Person.accepts_nested_attributes_for :appointments, allow_destroy: true
119
+ end
120
+
121
+ after(:all) do
122
+ Person.send(:undef_method, :appointments_attributes=)
123
+ end
124
+ context "when the parent is persisted" do
125
+ context "when the child returns false in a before callback" do
126
+ context "when the child is paranoid" do
127
+
128
+ before(:all) do
129
+ Person.accepts_nested_attributes_for :paranoid_phones, allow_destroy: true
130
+ end
131
+
132
+ after(:all) do
133
+ Person.send(:undef_method, :paranoid_phones=)
134
+ Person.accepts_nested_attributes_for :paranoid_phones
135
+ end
136
+
137
+ let!(:persisted) do
138
+ Person.create(age: 42)
139
+ end
140
+
141
+ let!(:phone) do
142
+ persisted.paranoid_phones.create
143
+ end
144
+
145
+ before do
146
+ persisted.paranoid_phones_attributes =
147
+ { "foo" => { "id" => phone.id, "number" => 42, "_destroy" => true }}
148
+ end
149
+
150
+ it "does not destroy the child" do
151
+ expect(persisted.reload.paranoid_phones).not_to be_empty
152
+ end
153
+ end
154
+ end
155
+ end
156
+ end
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end
162
+ end
163
+ end
164
+ end