draftsman 0.5.1 → 0.6.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.
@@ -2,270 +2,611 @@ require 'spec_helper'
2
2
 
3
3
  # A Vanilla has a simple call to `has_drafts` without any options specified.
4
4
  describe Vanilla do
5
- let(:vanilla) { Vanilla.new :name => 'Bob' }
5
+ let(:vanilla) { Vanilla.new(name: 'Bob') }
6
6
  it { should be_draftable }
7
7
 
8
- describe 'draft_creation' do
9
- subject do
10
- vanilla.draft_creation
11
- vanilla.reload
12
- end
13
-
14
- it 'is persisted' do
15
- expect(subject).to be_persisted
16
- end
17
-
18
- it 'is a draft' do
19
- expect(subject.draft?).to eql true
20
- end
21
-
22
- it 'has a `draft_id`' do
23
- expect(subject.draft_id).to be_present
24
- end
25
-
26
- it 'has a `draft`' do
27
- expect(subject.draft).to be_present
28
- end
29
-
30
- it 'has a `create` draft' do
31
- expect(subject.draft.create?).to eql true
32
- end
33
-
34
- it 'saves the `name`' do
35
- expect(subject.name).to eql 'Bob'
36
- end
37
- end
38
-
39
- describe 'draft_update' do
40
- subject do
41
- vanilla.draft_update
42
- vanilla.reload
43
- end
44
-
45
- context 'without existing draft' do
46
- before do
47
- vanilla.save!
48
- vanilla.name = 'Sam'
49
- end
50
-
8
+ describe '#save_draft' do
9
+ context 'on create' do
51
10
  it 'is persisted' do
52
- expect(subject).to be_persisted
11
+ vanilla.save_draft
12
+ expect(vanilla).to be_persisted
53
13
  end
54
14
 
55
15
  it 'is a draft' do
56
- expect(subject.draft?).to eql true
16
+ vanilla.save_draft
17
+ expect(vanilla.draft?).to eql true
57
18
  end
58
19
 
59
20
  it 'has a `draft_id`' do
60
- expect(subject.draft_id).to be_present
21
+ vanilla.save_draft
22
+ expect(vanilla.draft_id).to be_present
61
23
  end
62
24
 
63
25
  it 'has a `draft`' do
64
- expect(subject.draft).to be_present
65
- end
66
-
67
- it 'has an `update` draft' do
68
- expect(subject.draft.update?).to eql true
26
+ vanilla.save_draft
27
+ expect(vanilla.draft).to be_present
69
28
  end
70
29
 
71
- it 'has the original `name`' do
72
- expect(subject.name).to eql 'Bob'
73
- end
74
-
75
- it 'creates a new draft' do
76
- expect { subject }.to change(Draftsman::Draft, :count).by(1)
77
- end
78
- end
79
-
80
- describe 'changing back to initial state' do
81
- before do
82
- vanilla.published_at = Time.now
83
- vanilla.save!
84
- vanilla.name = 'Sam'
85
- vanilla.draft_update
86
- vanilla.reload
87
- vanilla.name = 'Bob'
88
- end
89
-
90
- it 'is no longer a draft' do
91
- expect(subject.draft?).to eql false
92
- end
93
-
94
- it 'has the original `name`' do
95
- expect(subject.name).to eql 'Bob'
96
- end
97
-
98
- it 'does not have a `draft_id`' do
99
- expect(subject.draft_id).to be_nil
100
- end
101
-
102
- it 'has no `draft`' do
103
- expect(subject.draft).to be_nil
104
- end
105
-
106
- it 'destroys the draft' do
107
- expect { subject }.to change(Draftsman::Draft.where(:id => vanilla.draft_id), :count).by(-1)
108
- end
109
- end
110
-
111
- context 'with existing `create` draft' do
112
- before { vanilla.draft_creation }
113
-
114
- context 'with changes' do
115
- before { vanilla.name = 'Sam' }
116
-
117
- it 'is persisted' do
118
- expect(subject).to be_persisted
119
- end
120
-
121
- it 'is a draft' do
122
- expect(subject.draft?).to eql true
123
- end
124
-
125
- it 'has a `draft_id`' do
126
- expect(subject.draft_id).to be_present
127
- end
128
-
129
- it 'has a `draft`' do
130
- expect(subject.draft).to be_present
131
- end
132
-
133
- it 'records the new `name`' do
134
- expect(subject.name).to eql 'Sam'
135
- end
136
-
137
- it 'updates the existing draft' do
138
- expect { subject }.to_not change(Draftsman::Draft.where(:id => vanilla.draft_id), :count)
139
- end
140
-
141
- it "updates the draft's `name`" do
142
- expect(subject.draft.reify.name).to eql 'Sam'
143
- end
144
-
145
- it 'has a `create` draft' do
146
- expect(subject.draft.create?).to eql true
147
- end
30
+ it 'has a `create` draft' do
31
+ vanilla.save_draft
32
+ expect(vanilla.draft.create?).to eql true
148
33
  end
149
34
 
150
- context 'with no changes' do
151
- it 'is persisted' do
152
- expect(subject).to be_persisted
153
- end
154
-
155
- it 'is a draft' do
156
- expect(subject.draft?).to eql true
157
- end
158
-
159
- it 'has a `draft_id`' do
160
- expect(subject.draft_id).to be_present
161
- end
162
-
163
- it 'has a `draft`' do
164
- expect(subject.draft).to be_present
165
- end
166
-
167
- it 'has a `create` draft' do
168
- expect(subject.draft.create?).to eql true
169
- end
170
-
171
- it 'has the same `name`' do
172
- expect(subject.name).to eql 'Bob'
173
- end
174
-
175
- it "doesn't change the number of drafts" do
176
- expect { subject }.to_not change(Draftsman::Draft.where(:id => vanilla.draft_id), :count)
177
- end
35
+ it 'saves the `name`' do
36
+ vanilla.save_draft
37
+ expect(vanilla.name).to eql 'Bob'
178
38
  end
179
39
  end
180
40
 
181
- context 'with existing `update` draft' do
182
- before do
183
- vanilla.save!
184
- vanilla.name = 'Sam'
185
- vanilla.draft_update
186
- vanilla.reload
187
- vanilla.attributes = vanilla.draft.reify.attributes
188
- end
189
-
190
- context 'with changes' do
191
- before { vanilla.name = 'Steve' }
192
-
193
- it 'is persisted' do
194
- expect(subject).to be_persisted
41
+ context 'on update' do
42
+ context 'with stashed drafted changes' do
43
+ context 'without existing draft' do
44
+ before do
45
+ vanilla.save!
46
+ vanilla.name = 'Sam'
47
+ end
48
+
49
+ it 'is persisted' do
50
+ vanilla.save_draft
51
+ expect(vanilla).to be_persisted
52
+ end
53
+
54
+ it 'is a draft' do
55
+ vanilla.save_draft
56
+ vanilla.reload
57
+ expect(vanilla.draft?).to eql true
58
+ end
59
+
60
+ it 'has a `draft_id`' do
61
+ vanilla.save_draft
62
+ vanilla.reload
63
+ expect(vanilla.draft_id).to be_present
64
+ end
65
+
66
+ it 'has a `draft`' do
67
+ vanilla.save_draft
68
+ vanilla.reload
69
+ expect(vanilla.draft).to be_present
70
+ end
71
+
72
+ it 'has an `update` draft' do
73
+ vanilla.save_draft
74
+ vanilla.reload
75
+ expect(vanilla.draft.update?).to eql true
76
+ end
77
+
78
+ it 'has the original `name`' do
79
+ vanilla.save_draft
80
+ vanilla.reload
81
+ expect(vanilla.reload.name).to eql 'Bob'
82
+ end
83
+
84
+ it 'creates a new draft' do
85
+ expect { vanilla.save_draft }.to change(Draftsman::Draft, :count).by(1)
86
+ end
195
87
  end
196
88
 
197
- it 'is a draft' do
198
- expect(subject.draft?).to eql true
89
+ describe 'changing back to initial state' do
90
+ before do
91
+ vanilla.published_at = Time.now
92
+ vanilla.save!
93
+ vanilla.name = 'Sam'
94
+ vanilla.save_draft
95
+ vanilla.reload
96
+ vanilla.name = 'Bob'
97
+ end
98
+
99
+ it 'is no longer a draft' do
100
+ vanilla.save_draft
101
+ vanilla.reload
102
+ expect(vanilla.draft?).to eql false
103
+ end
104
+
105
+ it 'has the original `name`' do
106
+ vanilla.save_draft
107
+ vanilla.reload
108
+ expect(vanilla.reload.name).to eql 'Bob'
109
+ end
110
+
111
+ it 'does not have a `draft_id`' do
112
+ vanilla.save_draft
113
+ vanilla.reload
114
+ expect(vanilla.draft_id).to be_nil
115
+ end
116
+
117
+ it 'has no `draft`' do
118
+ vanilla.save_draft
119
+ vanilla.reload
120
+ expect(vanilla.draft).to be_nil
121
+ end
122
+
123
+ it 'destroys the draft' do
124
+ expect { vanilla.save_draft }.to change(Draftsman::Draft.where(id: vanilla.draft_id), :count).by(-1)
125
+ end
199
126
  end
200
127
 
201
- it 'has a `draft_id`' do
202
- expect(subject.draft_id).to be_present
128
+ context 'with existing `create` draft' do
129
+ before { vanilla.save_draft }
130
+
131
+ context 'with changes' do
132
+ before { vanilla.name = 'Sam' }
133
+
134
+ it 'is persisted' do
135
+ vanilla.save_draft
136
+ vanilla.reload
137
+ expect(vanilla).to be_persisted
138
+ end
139
+
140
+ it 'is a draft' do
141
+ vanilla.save_draft
142
+ vanilla.reload
143
+ expect(vanilla.draft?).to eql true
144
+ end
145
+
146
+ it 'has a `draft_id`' do
147
+ vanilla.save_draft
148
+ vanilla.reload
149
+ expect(vanilla.draft_id).to be_present
150
+ end
151
+
152
+ it 'has a `draft`' do
153
+ vanilla.save_draft
154
+ vanilla.reload
155
+ expect(vanilla.draft).to be_present
156
+ end
157
+
158
+ it 'records the new `name`' do
159
+ vanilla.save_draft
160
+ vanilla.reload
161
+ expect(vanilla.reload.name).to eql 'Sam'
162
+ end
163
+
164
+ it 'updates the existing draft' do
165
+ expect { vanilla.save_draft }.to_not change(Draftsman::Draft.where(id: vanilla.draft_id), :count)
166
+ end
167
+
168
+ it "updates the draft's `name`" do
169
+ vanilla.save_draft
170
+ vanilla.reload
171
+ expect(vanilla.draft.reify.name).to eql 'Sam'
172
+ end
173
+
174
+ it 'has a `create` draft' do
175
+ vanilla.save_draft
176
+ vanilla.reload
177
+ expect(vanilla.draft.create?).to eql true
178
+ end
179
+ end # with changes
180
+
181
+ context 'with no changes' do
182
+ it 'is persisted' do
183
+ vanilla.save_draft
184
+ expect(vanilla).to be_persisted
185
+ end
186
+
187
+ it 'is a draft' do
188
+ vanilla.save_draft
189
+ vanilla.reload
190
+ expect(vanilla.draft?).to eql true
191
+ end
192
+
193
+ it 'has a `draft_id`' do
194
+ vanilla.save_draft
195
+ vanilla.reload
196
+ expect(vanilla.draft_id).to be_present
197
+ end
198
+
199
+ it 'has a `draft`' do
200
+ vanilla.save_draft
201
+ vanilla.reload
202
+ expect(vanilla.draft).to be_present
203
+ end
204
+
205
+ it 'has a `create` draft' do
206
+ vanilla.save_draft
207
+ vanilla.reload
208
+ expect(vanilla.draft.create?).to eql true
209
+ end
210
+
211
+ it 'has the same `name`' do
212
+ vanilla.save_draft
213
+ vanilla.reload
214
+ expect(vanilla.reload.name).to eql 'Bob'
215
+ end
216
+
217
+ it "doesn't change the number of drafts" do
218
+ expect { vanilla.save_draft }.to_not change(Draftsman::Draft.where(id: vanilla.draft_id), :count)
219
+ end
220
+ end
221
+ end # with no changes
222
+
223
+ context 'with existing `update` draft' do
224
+ before do
225
+ vanilla.save!
226
+ vanilla.name = 'Sam'
227
+ vanilla.save_draft
228
+ vanilla.reload
229
+ vanilla.attributes = vanilla.draft.reify.attributes
230
+ end
231
+
232
+ context 'with changes' do
233
+ before { vanilla.name = 'Steve' }
234
+
235
+ it 'is persisted' do
236
+ vanilla.save_draft
237
+ expect(vanilla).to be_persisted
238
+ end
239
+
240
+ it 'is a draft' do
241
+ vanilla.save_draft
242
+ vanilla.reload
243
+ expect(vanilla.draft?).to eql true
244
+ end
245
+
246
+ it 'has a `draft_id`' do
247
+ vanilla.save_draft
248
+ vanilla.reload
249
+ expect(vanilla.draft_id).to be_present
250
+ end
251
+
252
+ it 'has a `draft`' do
253
+ vanilla.save_draft
254
+ vanilla.reload
255
+ expect(vanilla.draft).to be_present
256
+ end
257
+
258
+ it 'has the original `name`' do
259
+ vanilla.save_draft
260
+ vanilla.reload
261
+ expect(vanilla.reload.name).to eql 'Bob'
262
+ end
263
+
264
+ it 'updates the existing draft' do
265
+ expect { vanilla.save_draft }.to_not change(Draftsman::Draft.where(id: vanilla.draft_id), :count)
266
+ end
267
+
268
+ it "updates the draft's `name`" do
269
+ vanilla.save_draft
270
+ vanilla.reload
271
+ expect(vanilla.draft.reify.name).to eql 'Steve'
272
+ end
273
+
274
+ it 'has an `update` draft' do
275
+ vanilla.save_draft
276
+ expect(vanilla.draft.update?).to eql true
277
+ end
278
+ end # with changes
279
+
280
+ context 'with no changes' do
281
+ it 'is persisted' do
282
+ vanilla.save_draft
283
+ expect(vanilla).to be_persisted
284
+ end
285
+
286
+ it 'is a draft' do
287
+ vanilla.save_draft
288
+ vanilla.reload
289
+ expect(vanilla.draft?).to eql true
290
+ end
291
+
292
+ it 'has a `draft_id`' do
293
+ vanilla.save_draft
294
+ vanilla.reload
295
+ expect(vanilla.draft_id).to be_present
296
+ end
297
+
298
+ it 'has a `draft`' do
299
+ vanilla.save_draft
300
+ vanilla.reload
301
+ expect(vanilla.draft).to be_present
302
+ end
303
+
304
+ it 'has an `update` draft' do
305
+ vanilla.save_draft
306
+ vanilla.reload
307
+ expect(vanilla.draft.update?).to eql true
308
+ end
309
+
310
+ it 'has the original `name`' do
311
+ vanilla.save_draft
312
+ vanilla.reload
313
+ expect(vanilla.reload.name).to eql 'Bob'
314
+ end
315
+
316
+ it "doesn't change the number of drafts" do
317
+ expect { vanilla.save_draft }.to_not change(Draftsman::Draft.where(id: vanilla.draft_id), :count)
318
+ end
319
+
320
+ it "does not update the draft's `name`" do
321
+ vanilla.save_draft
322
+ vanilla.reload
323
+ expect(vanilla.draft.reify.name).to eql 'Sam'
324
+ end
325
+ end # with no changes
326
+ end # with existing `update` draft
327
+ end # with stashed drafted changes
328
+
329
+ context 'without stashed drafted changes' do
330
+ before { Draftsman.stash_drafted_changes = false }
331
+ after { Draftsman.stash_drafted_changes = true }
332
+
333
+ context 'without existing draft' do
334
+ before do
335
+ vanilla.save!
336
+ vanilla.name = 'Sam'
337
+ end
338
+
339
+ it 'is persisted' do
340
+ vanilla.save_draft
341
+ expect(vanilla).to be_persisted
342
+ end
343
+
344
+ it 'is a draft' do
345
+ vanilla.save_draft
346
+ vanilla.reload
347
+ expect(vanilla.draft?).to eql true
348
+ end
349
+
350
+ it 'has a `draft_id`' do
351
+ vanilla.save_draft
352
+ vanilla.reload
353
+ expect(vanilla.draft_id).to be_present
354
+ end
355
+
356
+ it 'has a `draft`' do
357
+ vanilla.save_draft
358
+ vanilla.reload
359
+ expect(vanilla.draft).to be_present
360
+ end
361
+
362
+ it 'has an `update` draft' do
363
+ vanilla.save_draft
364
+ vanilla.reload
365
+ expect(vanilla.draft.update?).to eql true
366
+ end
367
+
368
+ it 'has the new `name`' do
369
+ vanilla.save_draft
370
+ vanilla.reload
371
+ expect(vanilla.reload.name).to eql 'Sam'
372
+ end
373
+
374
+ it 'creates a new draft' do
375
+ expect { vanilla.save_draft }.to change(Draftsman::Draft, :count).by(1)
376
+ end
203
377
  end
204
378
 
205
- it 'has a `draft`' do
206
- expect(subject.draft).to be_present
379
+ describe 'changing back to initial state' do
380
+ before do
381
+ vanilla.published_at = Time.now
382
+ vanilla.save!
383
+ vanilla.name = 'Sam'
384
+ vanilla.save_draft
385
+ vanilla.reload
386
+ vanilla.name = 'Bob'
387
+ end
388
+
389
+ it 'is no longer a draft' do
390
+ vanilla.save_draft
391
+ vanilla.reload
392
+ expect(vanilla.draft?).to eql false
393
+ end
394
+
395
+ it 'has the original `name`' do
396
+ vanilla.save_draft
397
+ vanilla.reload
398
+ expect(vanilla.reload.name).to eql 'Bob'
399
+ end
400
+
401
+ it 'does not have a `draft_id`' do
402
+ vanilla.save_draft
403
+ vanilla.reload
404
+ expect(vanilla.draft_id).to be_nil
405
+ end
406
+
407
+ it 'has no `draft`' do
408
+ vanilla.save_draft
409
+ vanilla.reload
410
+ expect(vanilla.draft).to be_nil
411
+ end
412
+
413
+ it 'destroys the draft' do
414
+ expect { vanilla.save_draft }.to change(Draftsman::Draft.where(id: vanilla.draft_id), :count).by(-1)
415
+ end
207
416
  end
208
417
 
209
- it 'has the original `name`' do
210
- expect(subject.name).to eql 'Bob'
418
+ context 'with existing `create` draft' do
419
+ before { vanilla.save_draft }
420
+
421
+ context 'with changes' do
422
+ before { vanilla.name = 'Sam' }
423
+
424
+ it 'is persisted' do
425
+ vanilla.save_draft
426
+ expect(vanilla).to be_persisted
427
+ end
428
+
429
+ it 'is a draft' do
430
+ vanilla.save_draft
431
+ expect(vanilla.draft?).to eql true
432
+ end
433
+
434
+ it 'has a `draft_id`' do
435
+ vanilla.save_draft
436
+ expect(vanilla.draft_id).to be_present
437
+ end
438
+
439
+ it 'has a `draft`' do
440
+ vanilla.save_draft
441
+ expect(vanilla.draft).to be_present
442
+ end
443
+
444
+ it 'records the new `name`' do
445
+ vanilla.save_draft
446
+ expect(vanilla.reload.name).to eql 'Sam'
447
+ end
448
+
449
+ it 'updates the existing draft' do
450
+ expect { vanilla.save_draft }.to_not change(Draftsman::Draft.where(id: vanilla.draft_id), :count)
451
+ end
452
+
453
+ it "updates the draft's `name`" do
454
+ vanilla.save_draft
455
+ expect(vanilla.draft.reify.name).to eql 'Sam'
456
+ end
457
+
458
+ it 'has a `create` draft' do
459
+ vanilla.save_draft
460
+ expect(vanilla.draft.create?).to eql true
461
+ end
462
+ end
463
+
464
+ context 'with no changes' do
465
+ it 'is persisted' do
466
+ vanilla.save_draft
467
+ expect(vanilla).to be_persisted
468
+ end
469
+
470
+ it 'is a draft' do
471
+ vanilla.save_draft
472
+ expect(vanilla.draft?).to eql true
473
+ end
474
+
475
+ it 'has a `draft_id`' do
476
+ expect(vanilla.draft_id).to be_present
477
+ end
478
+
479
+ it 'has a `draft`' do
480
+ vanilla.save_draft
481
+ expect(vanilla.draft).to be_present
482
+ end
483
+
484
+ it 'has a `create` draft' do
485
+ vanilla.save_draft
486
+ expect(vanilla.draft.create?).to eql true
487
+ end
488
+
489
+ it 'has the same `name`' do
490
+ vanilla.save_draft
491
+ expect(vanilla.reload.name).to eql 'Bob'
492
+ end
493
+
494
+ it "doesn't change the number of drafts" do
495
+ expect { vanilla.save_draft }.to_not change(Draftsman::Draft.where(id: vanilla.draft_id), :count)
496
+ end
497
+ end
211
498
  end
212
499
 
213
- it 'updates the existing draft' do
214
- expect { subject }.to_not change(Draftsman::Draft.where(:id => vanilla.draft_id), :count)
215
- end
216
-
217
- it "updates the draft's `name`" do
218
- expect(subject.draft.reify.name).to eql 'Steve'
219
- end
220
-
221
- it 'has a `create` draft' do
222
- expect(subject.draft.update?).to eql true
223
- end
224
- end
225
-
226
- context 'with no changes' do
227
- it 'is persisted' do
228
- expect(subject).to be_persisted
229
- end
230
-
231
- it 'is a draft' do
232
- expect(subject.draft?).to eql true
233
- end
234
-
235
- it 'has a `draft_id`' do
236
- expect(subject.draft_id).to be_present
237
- end
238
-
239
- it 'has a `draft`' do
240
- expect(subject.draft).to be_present
241
- end
242
-
243
- it 'has an `update` draft' do
244
- expect(subject.draft.update?).to eql true
245
- end
246
-
247
- it 'has the original `name`' do
248
- expect(subject.name).to eql 'Bob'
249
- end
250
-
251
- it "doesn't change the number of drafts" do
252
- expect { subject }.to_not change(Draftsman::Draft.where(:id => vanilla.draft_id), :count)
253
- end
254
-
255
- it "does not update the draft's `name`" do
256
- expect(subject.draft.reify.name).to eql 'Sam'
257
- end
258
- end
259
- end
500
+ context 'with existing `update` draft' do
501
+ before do
502
+ vanilla.save!
503
+ vanilla.name = 'Sam'
504
+ vanilla.save_draft
505
+ vanilla.reload
506
+ end
507
+
508
+ context 'with changes' do
509
+ before { vanilla.name = 'Steve' }
510
+
511
+ it 'is persisted' do
512
+ vanilla.save_draft
513
+ vanilla.reload
514
+ expect(vanilla).to be_persisted
515
+ end
516
+
517
+ it 'is a draft' do
518
+ vanilla.save_draft
519
+ vanilla.reload
520
+ expect(vanilla.draft?).to eql true
521
+ end
522
+
523
+ it 'has a `draft_id`' do
524
+ vanilla.save_draft
525
+ vanilla.reload
526
+ expect(vanilla.draft_id).to be_present
527
+ end
528
+
529
+ it 'has a `draft`' do
530
+ vanilla.save_draft
531
+ vanilla.reload
532
+ expect(vanilla.draft).to be_present
533
+ end
534
+
535
+ it 'has the new `name`' do
536
+ vanilla.save_draft
537
+ vanilla.reload
538
+ expect(vanilla.reload.name).to eql 'Steve'
539
+ end
540
+
541
+ it 'updates the existing draft' do
542
+ expect { vanilla.save_draft }.to_not change(Draftsman::Draft.where(id: vanilla.draft_id), :count)
543
+ end
544
+
545
+ it "updates the draft's `name`" do
546
+ vanilla.save_draft
547
+ vanilla.reload
548
+ expect(vanilla.draft.reify.name).to eql 'Steve'
549
+ end
550
+
551
+ it 'has an `update` draft' do
552
+ vanilla.save_draft
553
+ vanilla.reload
554
+ expect(vanilla.draft.update?).to eql true
555
+ end
556
+ end # with changes
557
+
558
+ context 'with no changes' do
559
+ it 'is persisted' do
560
+ vanilla.save_draft
561
+ expect(vanilla).to be_persisted
562
+ end
563
+
564
+ it 'is a draft' do
565
+ vanilla.save_draft
566
+ expect(vanilla.draft?).to eql true
567
+ end
568
+
569
+ it 'has a `draft_id`' do
570
+ vanilla.save_draft
571
+ expect(vanilla.draft_id).to be_present
572
+ end
573
+
574
+ it 'has a `draft`' do
575
+ vanilla.save_draft
576
+ expect(vanilla.draft).to be_present
577
+ end
578
+
579
+ it 'has an `update` draft' do
580
+ vanilla.save_draft
581
+ expect(vanilla.draft.update?).to eql true
582
+ end
583
+
584
+ it 'has the original `name`' do
585
+ vanilla.save_draft
586
+ expect(vanilla.reload.name).to eql 'Sam'
587
+ end
588
+
589
+ it "doesn't change the number of drafts" do
590
+ expect { vanilla.save_draft }.to_not change(Draftsman::Draft.where(id: vanilla.draft_id), :count)
591
+ end
592
+
593
+ it "does not update the draft's `name`" do
594
+ vanilla.save_draft
595
+ expect(vanilla.draft.reify.name).to eql 'Sam'
596
+ end
597
+ end # with no changes
598
+ end # with existing `update` draft
599
+ end # without stashed drafted changes
600
+ end # on update
260
601
  end
261
602
 
262
603
  # Not applicable to this customization
263
- describe 'draft_destruction' do
604
+ describe '#draft_destruction' do
264
605
  end
265
606
 
266
607
  describe 'scopes' do
267
- let!(:drafted_vanilla) { vanilla.draft_creation; return vanilla }
268
- let!(:published_vanilla) { Vanilla.create :name => 'Jane', :published_at => Time.now }
608
+ let!(:drafted_vanilla) { vanilla.save_draft; return vanilla }
609
+ let!(:published_vanilla) { Vanilla.create(name: 'Jane', published_at: Time.now) }
269
610
 
270
611
  describe 'drafted' do
271
612
  subject { Vanilla.drafted }