mongoid-versioning 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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