mongoid-versioning 1.2.0 → 2.0.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.
@@ -1,16 +1,16 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  describe Mongoid::Relations::Macros do
4
- describe ".embedded_in" do
5
- context "when the document is versioned" do
6
- it "raises an error" do
7
- expect {
4
+ describe '.embedded_in' do
5
+ context 'when the document is versioned' do
6
+ it 'raises an error' do
7
+ expect do
8
8
  Class.new do
9
9
  include Mongoid::Document
10
10
  include Mongoid::Versioning
11
11
  embedded_in :parent_class
12
12
  end
13
- }.to raise_error(Mongoid::Errors::VersioningNotOnRoot)
13
+ end.to raise_error(Mongoid::Errors::VersioningNotOnRoot)
14
14
  end
15
15
  end
16
16
  end
@@ -1,10 +1,8 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  describe Mongoid::Relations::Metadata do
4
- describe "#versioned?" do
5
-
6
- context "when versioned is true" do
7
-
4
+ describe '#versioned?' do
5
+ context 'when versioned is true' do
8
6
  let(:metadata) do
9
7
  described_class.new(
10
8
  name: :versions,
@@ -13,13 +11,12 @@ describe Mongoid::Relations::Metadata do
13
11
  )
14
12
  end
15
13
 
16
- it "returns true" do
14
+ it 'returns true' do
17
15
  expect(metadata).to be_versioned
18
16
  end
19
17
  end
20
18
 
21
- context "when versioned is false" do
22
-
19
+ context 'when versioned is false' do
23
20
  let(:metadata) do
24
21
  described_class.new(
25
22
  name: :versions,
@@ -28,13 +25,12 @@ describe Mongoid::Relations::Metadata do
28
25
  )
29
26
  end
30
27
 
31
- it "returns false" do
28
+ it 'returns false' do
32
29
  expect(metadata).not_to be_versioned
33
30
  end
34
31
  end
35
32
 
36
- context "when versioned is nil" do
37
-
33
+ context 'when versioned is nil' do
38
34
  let(:metadata) do
39
35
  described_class.new(
40
36
  name: :versions,
@@ -42,7 +38,7 @@ describe Mongoid::Relations::Metadata do
42
38
  )
43
39
  end
44
40
 
45
- it "returns false" do
41
+ it 'returns false' do
46
42
  expect(metadata).not_to be_versioned
47
43
  end
48
44
  end
@@ -1,11 +1,8 @@
1
- require_relative "../spec_helper"
1
+ require_relative '../spec_helper'
2
2
 
3
3
  describe Mongoid::Versioning do
4
-
5
- describe ".max_versions" do
6
-
7
- context "when provided an integer" do
8
-
4
+ describe '.max_versions' do
5
+ context 'when provided an integer' do
9
6
  before do
10
7
  WikiPage.max_versions(10)
11
8
  end
@@ -14,105 +11,95 @@ describe Mongoid::Versioning do
14
11
  WikiPage.max_versions(5)
15
12
  end
16
13
 
17
- it "sets the class version max" do
14
+ it 'sets the class version max' do
18
15
  expect(WikiPage.version_max).to eq(10)
19
16
  end
20
17
  end
21
18
 
22
- context "when provided a string" do
23
-
19
+ context 'when provided a string' do
24
20
  before do
25
- WikiPage.max_versions("10")
21
+ WikiPage.max_versions('10')
26
22
  end
27
23
 
28
24
  after do
29
25
  WikiPage.max_versions(5)
30
26
  end
31
27
 
32
- it "sets the class version max" do
28
+ it 'sets the class version max' do
33
29
  expect(WikiPage.version_max).to eq(10)
34
30
  end
35
31
  end
36
32
  end
37
33
 
38
- describe "#version" do
39
-
40
- context "when there is no default scope" do
41
-
42
- context "when the document is new" do
43
-
44
- it "returns 1" do
34
+ describe '#version' do
35
+ context 'when there is no default scope' do
36
+ context 'when the document is new' do
37
+ it 'returns 1' do
45
38
  expect(WikiPage.new.version).to eq(1)
46
39
  end
47
40
  end
48
41
 
49
- context "when the document is persisted once" do
50
-
42
+ context 'when the document is persisted once' do
51
43
  let(:page) do
52
- WikiPage.create(title: "1")
44
+ WikiPage.create(title: '1')
53
45
  end
54
46
 
55
- it "returns 1" do
47
+ it 'returns 1' do
56
48
  expect(page.version).to eq(1)
57
49
  end
58
50
  end
59
51
 
60
- context "when the document is persisted more than once" do
61
-
52
+ context 'when the document is persisted more than once' do
62
53
  let(:page) do
63
- WikiPage.create(title: "1")
54
+ WikiPage.create(title: '1')
64
55
  end
65
56
 
66
57
  before do
67
- 3.times { |n| page.update_attribute(:title, "#{n}") }
58
+ 3.times { |n| page.update_attribute(:title, n.to_s) }
68
59
  end
69
60
 
70
- it "returns the number of versions" do
61
+ it 'returns the number of versions' do
71
62
  expect(page.version).to eq(4)
72
63
  end
73
64
  end
74
65
 
75
- context "when maximum versions is defined" do
76
-
66
+ context 'when maximum versions is defined' do
77
67
  let(:page) do
78
- WikiPage.create(title: "1")
68
+ WikiPage.create(title: '1')
79
69
  end
80
70
 
81
- context "when saving over the max versions limit" do
82
-
71
+ context 'when saving over the max versions limit' do
83
72
  before do
84
- 10.times { |n| page.update_attribute(:title, "#{n}") }
73
+ 10.times { |n| page.update_attribute(:title, n.to_s) }
85
74
  end
86
75
 
87
- it "returns the number of versions" do
76
+ it 'returns the number of versions' do
88
77
  expect(page.version).to eq(11)
89
78
  end
90
79
  end
91
80
  end
92
81
 
93
- context "when performing versionless saves" do
94
-
82
+ context 'when performing versionless saves' do
95
83
  let(:page) do
96
- WikiPage.create(title: "1")
84
+ WikiPage.create(title: '1')
97
85
  end
98
86
 
99
87
  before do
100
88
  10.times do |n|
101
- page.versionless { |doc| doc.update_attribute(:title, "#{n}") }
89
+ page.versionless { |doc| doc.update_attribute(:title, n.to_s) }
102
90
  end
103
91
  end
104
92
 
105
- it "does not increment the version number" do
93
+ it 'does not increment the version number' do
106
94
  expect(page.version).to eq(1)
107
95
  end
108
96
  end
109
97
  end
110
98
 
111
- context "when there is a default scope" do
112
-
99
+ context 'when there is a default scope' do
113
100
  before :all do
114
101
  class WikiPage
115
- default_scope -> { where(author: "Jim") }
102
+ default_scope -> { where(author: 'Jim') }
116
103
  end
117
104
  end
118
105
 
@@ -120,116 +107,107 @@ describe Mongoid::Versioning do
120
107
  WikiPage.default_scoping = nil
121
108
  end
122
109
 
123
- context "when the document is new" do
124
-
125
- it "returns 1" do
110
+ context 'when the document is new' do
111
+ it 'returns 1' do
126
112
  expect(WikiPage.new.version).to eq(1)
127
113
  end
128
114
  end
129
115
 
130
- context "when the document is persisted once" do
131
-
116
+ context 'when the document is persisted once' do
132
117
  let(:page) do
133
- WikiPage.create(title: "1")
118
+ WikiPage.create(title: '1')
134
119
  end
135
120
 
136
- it "returns 1" do
121
+ it 'returns 1' do
137
122
  expect(page.version).to eq(1)
138
123
  end
139
124
  end
140
125
 
141
- context "when the document is persisted more than once" do
142
-
126
+ context 'when the document is persisted more than once' do
143
127
  let(:page) do
144
- WikiPage.create(title: "1")
128
+ WikiPage.create(title: '1')
145
129
  end
146
130
 
147
131
  before do
148
- 3.times { |n| page.update_attribute(:title, "#{n}") }
132
+ 3.times { |n| page.update_attribute(:title, n.to_s) }
149
133
  end
150
134
 
151
- it "returns the number of versions" do
135
+ it 'returns the number of versions' do
152
136
  expect(page.version).to eq(4)
153
137
  end
154
138
  end
155
139
 
156
- context "when maximum versions is defined" do
157
-
140
+ context 'when maximum versions is defined' do
158
141
  let(:page) do
159
- WikiPage.create(title: "1")
142
+ WikiPage.create(title: '1')
160
143
  end
161
144
 
162
- context "when saving over the max versions limit" do
163
-
145
+ context 'when saving over the max versions limit' do
164
146
  before do
165
- 10.times { |n| page.update_attribute(:title, "#{n}") }
147
+ 10.times { |n| page.update_attribute(:title, n.to_s) }
166
148
  end
167
149
 
168
- it "returns the number of versions" do
150
+ it 'returns the number of versions' do
169
151
  expect(page.version).to eq(11)
170
152
  end
171
153
  end
172
154
  end
173
155
 
174
- context "when performing versionless saves" do
175
-
156
+ context 'when performing versionless saves' do
176
157
  let(:page) do
177
- WikiPage.create(title: "1")
158
+ WikiPage.create(title: '1')
178
159
  end
179
160
 
180
161
  before do
181
162
  10.times do |n|
182
- page.versionless { |doc| doc.update_attribute(:title, "#{n}") }
163
+ page.versionless { |doc| doc.update_attribute(:title, n.to_s) }
183
164
  end
184
165
  end
185
166
 
186
- it "does not increment the version number" do
167
+ it 'does not increment the version number' do
187
168
  expect(page.version).to eq(1)
188
169
  end
189
170
  end
190
171
  end
191
172
 
192
- context "when not using the default database" do
193
-
194
- let(:title) { "my new wiki" }
173
+ context 'when not using the default database' do
174
+ let(:title) { 'my new wiki' }
195
175
 
196
176
  let!(:page) do
197
- WikiPage.with(database: database_id_alt).create!(description: "1",title: title)
177
+ WikiPage.with(database: database_id_alt).create!(description: '1', title: title)
198
178
  end
199
179
 
200
- context "when the document is persisted once" do
201
-
202
- it "returns 1" do
180
+ context 'when the document is persisted once' do
181
+ it 'returns 1' do
203
182
  expect(page.version).to eq(1)
204
183
  end
205
184
 
206
- it "does not persist to default database" do
207
- expect {
185
+ it 'does not persist to default database' do
186
+ expect do
208
187
  WikiPage.find_by(title: title)
209
- }.to raise_error(Mongoid::Errors::DocumentNotFound)
188
+ end.to raise_error(Mongoid::Errors::DocumentNotFound)
210
189
  end
211
190
 
212
- it "persists to specified database" do
191
+ it 'persists to specified database' do
213
192
  expect(WikiPage.with(database: database_id_alt).find_by(title: title)).not_to be_nil
214
193
  end
215
194
  end
216
195
 
217
- context "when the document is persisted more than once" do
218
-
196
+ context 'when the document is persisted more than once' do
219
197
  before do
220
- 3.times { |n| page.with(database: database_id_alt).update_attribute(:description, "#{n}") }
198
+ 3.times { |n| page.with(database: database_id_alt).update_attribute(:description, n.to_s) }
221
199
  end
222
200
 
223
- it "returns the number of versions" do
201
+ it 'returns the number of versions' do
224
202
  expect(page.version).to eq(4)
225
203
  end
226
204
 
227
- it "persists to specified database" do
228
- expect(WikiPage.with(database: database_id_alt).find_by(:title => title)).not_to be_nil
205
+ it 'persists to specified database' do
206
+ expect(WikiPage.with(database: database_id_alt).find_by(title: title)).not_to be_nil
229
207
  end
230
208
 
231
- it "persists the versions to specified database" do
232
- expect(WikiPage.with(database: database_id_alt).find_by(:title => title).version).to eq(4)
209
+ it 'persists the versions to specified database' do
210
+ expect(WikiPage.with(database: database_id_alt).find_by(title: title).version).to eq(4)
233
211
  end
234
212
  end
235
213
 
@@ -239,107 +217,98 @@ describe Mongoid::Versioning do
239
217
  end
240
218
  end
241
219
 
242
- describe "#versionless" do
243
-
220
+ describe '#versionless' do
244
221
  let(:page) do
245
222
  WikiPage.new(created_at: Time.now.utc)
246
223
  end
247
224
 
248
- context "when executing the block" do
249
-
250
- it "sets versionless to true" do
225
+ context 'when executing the block' do
226
+ it 'sets versionless to true' do
251
227
  page.versionless do |doc|
252
228
  expect(doc.send(:versionless?)).to be_truthy
253
229
  end
254
230
  end
255
231
  end
256
232
 
257
- context "when the block finishes" do
258
-
259
- it "sets versionless to false" do
233
+ context 'when the block finishes' do
234
+ it 'sets versionless to false' do
260
235
  page.versionless
261
236
  expect(page.send(:versionless?)).to be_falsy
262
237
  end
263
238
  end
264
239
  end
265
240
 
266
- describe "#versions" do
267
-
241
+ describe '#versions' do
268
242
  let(:page) do
269
- WikiPage.create(title: "1", description: "test") do |wiki|
270
- wiki.author = "woodchuck"
243
+ WikiPage.create(title: '1', description: 'test') do |wiki|
244
+ wiki.author = 'woodchuck'
271
245
  end
272
246
  end
273
247
 
274
- context "when saving the document " do
275
-
276
- context "when the document has changed" do
277
-
248
+ context 'when saving the document ' do
249
+ context 'when the document has changed' do
278
250
  before do
279
- page.update_attribute(:title, "2")
251
+ page.update_attribute(:title, '2')
280
252
  end
281
253
 
282
254
  let(:version) do
283
255
  page.versions.first
284
256
  end
285
257
 
286
- it "creates a new version" do
287
- expect(version.title).to eq("1")
258
+ it 'creates a new version' do
259
+ expect(version.title).to eq('1')
288
260
  end
289
261
 
290
- it "properly versions the localized fields" do
291
- expect(version.description).to eq("test")
262
+ it 'properly versions the localized fields' do
263
+ expect(version.description).to eq('test')
292
264
  end
293
265
 
294
- it "only creates 1 new version" do
266
+ it 'only creates 1 new version' do
295
267
  expect(page.versions.count).to eq(1)
296
268
  end
297
269
 
298
- it "does not version the _id" do
270
+ it 'does not version the _id' do
299
271
  expect(version._id).to be_nil
300
272
  end
301
273
 
302
- it "does version the updated_at timestamp" do
274
+ it 'does version the updated_at timestamp' do
303
275
  expect(version.updated_at).not_to be_nil
304
276
  end
305
277
 
306
- context "when only updated_at was changed" do
307
-
278
+ context 'when only updated_at was changed' do
308
279
  before do
309
280
  page.update_attributes(updated_at: Time.now)
310
281
  end
311
282
 
312
- it "does not generate another version" do
283
+ it 'does not generate another version' do
313
284
  expect(page.versions.count).to eq(1)
314
285
  end
315
286
  end
316
287
 
317
- it "does not embed versions within versions" do
288
+ it 'does not embed versions within versions' do
318
289
  expect(version.versions).to be_empty
319
290
  end
320
291
 
321
- it "versions protected fields" do
322
- expect(version.author).to eq("woodchuck")
292
+ it 'versions protected fields' do
293
+ expect(version.author).to eq('woodchuck')
323
294
  end
324
295
 
325
- context "when saving multiple times" do
326
-
296
+ context 'when saving multiple times' do
327
297
  before do
328
- page.update_attribute(:title, "3")
298
+ page.update_attribute(:title, '3')
329
299
  end
330
300
 
331
- it "does not embed versions within versions" do
301
+ it 'does not embed versions within versions' do
332
302
  expect(version.versions).to be_empty
333
303
  end
334
304
 
335
- it "does not embed versions multiple levels deep" do
305
+ it 'does not embed versions multiple levels deep' do
336
306
  expect(page.versions.last.versions).to be_empty
337
307
  end
338
308
  end
339
309
  end
340
310
 
341
- context "when the document has not changed" do
342
-
311
+ context 'when the document has not changed' do
343
312
  before do
344
313
  page.save
345
314
  end
@@ -348,65 +317,58 @@ describe Mongoid::Versioning do
348
317
  page.versions.first
349
318
  end
350
319
 
351
- it "does not create a new version" do
320
+ it 'does not create a new version' do
352
321
  expect(version).to be_nil
353
322
  end
354
323
  end
355
324
 
356
- context "when saving over the number of maximum versions" do
357
-
358
- context "when the document is paranoid" do
359
-
325
+ context 'when saving over the number of maximum versions' do
326
+ context 'when the document is paranoid' do
360
327
  let!(:post) do
361
- ParanoidPost.create(title: "test")
328
+ ParanoidPost.create(title: 'test')
362
329
  end
363
330
 
364
331
  before do
365
332
  3.times do |n|
366
- post.update_attribute(:title, "#{n}")
333
+ post.update_attribute(:title, n.to_s)
367
334
  end
368
335
  end
369
336
 
370
- it "only versions the maximum amount" do
337
+ it 'only versions the maximum amount' do
371
338
  expect(post.versions.target.size).to eq(2)
372
339
  end
373
340
 
374
- it "persists the changes" do
341
+ it 'persists the changes' do
375
342
  expect(post.reload.versions.target.size).to eq(2)
376
343
  end
377
344
  end
378
345
 
379
- context "when saving in succession" do
380
-
346
+ context 'when saving in succession' do
381
347
  before do
382
348
  10.times do |n|
383
- page.update_attribute(:title, "#{n}")
349
+ page.update_attribute(:title, n.to_s)
384
350
  end
385
351
  end
386
352
 
387
- let(:versions) do
388
- page.versions
389
- end
390
-
391
- it "only versions the maximum amount" do
392
- expect(versions.count).to eq(5)
353
+ it 'only versions the maximum amount' do
354
+ expect(page.reload.versions.count).to eq(5)
393
355
  end
394
356
 
395
- it "shifts the versions in order" do
396
- expect(versions.last.title).to eq("8")
357
+ it 'shifts the versions in order' do
358
+ expect(page.reload.versions.last.title).to eq('8')
397
359
  end
398
360
 
399
- it "persists the version shifts" do
400
- expect(page.reload.versions.last.title).to eq("8")
361
+ it 'persists the version shifts' do
362
+ expect(page.reload.versions.last.title).to eq('8')
363
+ expect(page.reload.versions.first.title).to eq('4')
401
364
  end
402
365
  end
403
366
 
404
- context "when saving in batches" do
405
-
367
+ context 'when saving in batches' do
406
368
  before do
407
369
  2.times do
408
370
  5.times do |n|
409
- WikiPage.find(page.id).update_attributes(title: "#{n}")
371
+ WikiPage.find(page.id).update_attributes(title: n.to_s)
410
372
  end
411
373
  end
412
374
  end
@@ -419,40 +381,37 @@ describe Mongoid::Versioning do
419
381
  from_db.versions
420
382
  end
421
383
 
422
- it "only versions the maximum amount" do
384
+ it 'only versions the maximum amount' do
423
385
  expect(versions.count).to eq(5)
424
386
  end
425
387
  end
426
388
  end
427
389
 
428
- context "when persisting versionless" do
429
-
390
+ context 'when persisting versionless' do
430
391
  before do
431
- page.versionless { |doc| doc.update_attribute(:title, "2") }
392
+ page.versionless { |doc| doc.update_attribute(:title, '2') }
432
393
  end
433
394
 
434
- it "does not version the document" do
395
+ it 'does not version the document' do
435
396
  expect(page.versions.count).to eq(0)
436
397
  end
437
398
  end
438
399
 
439
- context "when deleting versions" do
440
-
400
+ context 'when deleting versions' do
441
401
  let(:comment) do
442
402
  Comment.new(title: "Don't delete me!")
443
403
  end
444
404
 
445
405
  let!(:orphaned) do
446
- Comment.create(title: "Annie")
406
+ Comment.create(title: 'Annie')
447
407
  end
448
408
 
449
409
  before do
450
410
  page.comments << comment
451
- page.update_attribute(:title, "5")
411
+ page.update_attribute(:title, '5')
452
412
  end
453
413
 
454
- context "when the version had a dependent relation" do
455
-
414
+ context 'when the version had a dependent relation' do
456
415
  before do
457
416
  page.versions.delete_all
458
417
  end
@@ -461,34 +420,33 @@ describe Mongoid::Versioning do
461
420
  Comment.find(comment.id)
462
421
  end
463
422
 
464
- it "does not perform dependent cascading" do
423
+ it 'does not perform dependent cascading' do
465
424
  expect(from_db).to eq(comment)
466
425
  end
467
426
 
468
- it "does not delete related orphans" do
427
+ it 'does not delete related orphans' do
469
428
  expect(Comment.find(orphaned.id)).to eq(orphaned)
470
429
  end
471
430
 
472
- it "deletes the version" do
431
+ it 'deletes the version' do
473
432
  expect(page.versions).to be_empty
474
433
  end
475
434
 
476
- it "persists the deletion" do
435
+ it 'persists the deletion' do
477
436
  expect(page.reload.versions).to be_empty
478
437
  end
479
438
 
480
- it "retains the root relation" do
481
- expect(page.reload.comments).to eq([ comment ])
439
+ it 'retains the root relation' do
440
+ expect(page.reload.comments).to eq([comment])
482
441
  end
483
442
  end
484
443
  end
485
444
  end
486
445
  end
487
446
 
488
- context "when appending a self referencing document with versions" do
489
-
447
+ context 'when appending a self referencing document with versions' do
490
448
  let(:page) do
491
- WikiPage.create(title: "1")
449
+ WikiPage.create(title: '1')
492
450
  end
493
451
 
494
452
  let(:child) do
@@ -499,12 +457,12 @@ describe Mongoid::Versioning do
499
457
  page.child_pages << child
500
458
  end
501
459
 
502
- it "allows the document to be added" do
503
- expect(page.child_pages).to eq([ child ])
460
+ it 'allows the document to be added' do
461
+ expect(page.child_pages).to eq([child])
504
462
  end
505
463
 
506
- it "persists the changes" do
507
- expect(page.reload.child_pages).to eq([ child ])
464
+ it 'persists the changes' do
465
+ expect(page.reload.child_pages).to eq([child])
508
466
  end
509
467
  end
510
468
  end