draftsman 0.3.1 → 0.3.2
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +9 -3
- data/README.md +1 -1
- data/bin/bundler +16 -0
- data/bin/erubis +16 -0
- data/bin/htmldiff +16 -0
- data/bin/ldiff +16 -0
- data/bin/nokogiri +16 -0
- data/bin/rackup +16 -0
- data/bin/rails +16 -0
- data/bin/rake +16 -0
- data/bin/rspec +16 -0
- data/bin/thor +16 -0
- data/bin/tilt +16 -0
- data/draftsman.gemspec +2 -4
- data/lib/draftsman/draft.rb +13 -4
- data/lib/draftsman/frameworks/sinatra.rb +11 -6
- data/lib/draftsman/model.rb +12 -6
- data/lib/draftsman/version.rb +1 -1
- data/spec/controllers/informants_controller_spec.rb +28 -10
- data/spec/controllers/users_controller_spec.rb +16 -7
- data/spec/controllers/whodunnits_controller_spec.rb +16 -7
- data/spec/draftsman_spec.rb +12 -6
- data/spec/models/child_spec.rb +81 -39
- data/spec/models/draft_spec.rb +466 -135
- data/spec/models/parent_spec.rb +57 -28
- data/spec/models/skipper_spec.rb +195 -57
- data/spec/models/trashable_spec.rb +149 -50
- data/spec/models/vanilla_spec.rb +186 -59
- data/spec/models/whitelister_spec.rb +269 -90
- data/spec/spec_helper.rb +1 -6
- metadata +31 -38
- data/Gemfile.lock +0 -97
@@ -4,30 +4,63 @@ require 'spec_helper'
|
|
4
4
|
# attribute, which allows deletes to be drafts too.
|
5
5
|
describe Trashable do
|
6
6
|
let(:trashable) { Trashable.new :name => 'Bob' }
|
7
|
-
|
7
|
+
|
8
|
+
it 'is draftable' do
|
9
|
+
expect(subject.class.draftable?).to eql true
|
10
|
+
end
|
8
11
|
|
9
12
|
# Not affected by this customization
|
10
|
-
describe
|
13
|
+
describe 'draft_creation' do
|
11
14
|
end
|
12
15
|
|
13
16
|
# Not affected by this customization
|
14
|
-
describe
|
17
|
+
describe 'draft_update' do
|
15
18
|
end
|
16
19
|
|
17
|
-
describe
|
20
|
+
describe 'draft_destroy' do
|
18
21
|
context 'with `:create` draft' do
|
19
22
|
before { trashable.draft_creation }
|
20
23
|
subject { trashable.draft_destroy; return trashable }
|
21
|
-
|
22
|
-
it
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
24
|
+
|
25
|
+
it 'is persisted' do
|
26
|
+
expect(subject).to be_persisted
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'is not published' do
|
30
|
+
expect(subject.published?).to eql false
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'is a draft' do
|
34
|
+
expect(subject.draft?).to eql true
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'is trashed' do
|
38
|
+
expect(subject.trashed?).to eql true
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'does not have a `published_at` timestamp' do
|
42
|
+
expect(subject.published_at).to be_nil
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'has a `trashed_at` timestamp' do
|
46
|
+
expect(subject.trashed_at).to be_present
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'has a `draft_id`' do
|
50
|
+
expect(subject.draft_id).to be_present
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'has a `draft`' do
|
54
|
+
expect(subject.draft).to be_present
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'has a `destroy` draft' do
|
58
|
+
expect(subject.draft.destroy?).to eql true
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'retains its `name`' do
|
62
|
+
expect(subject.name).to eql 'Bob'
|
63
|
+
end
|
31
64
|
|
32
65
|
it 'keeps the item' do
|
33
66
|
expect { subject }.to_not change(Trashable, :count)
|
@@ -37,8 +70,8 @@ describe Trashable do
|
|
37
70
|
expect { subject }.to_not change(Draftsman::Draft.where(:id => trashable.draft_id), :count)
|
38
71
|
end
|
39
72
|
|
40
|
-
|
41
|
-
subject.draft.reify.name.
|
73
|
+
it 'retains its `name` in the draft' do
|
74
|
+
expect(subject.draft.reify.name).to eql 'Bob'
|
42
75
|
end
|
43
76
|
end
|
44
77
|
|
@@ -52,16 +85,46 @@ describe Trashable do
|
|
52
85
|
end
|
53
86
|
|
54
87
|
subject { trashable.draft_destroy; return trashable.reload }
|
55
|
-
|
56
|
-
it
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
88
|
+
|
89
|
+
it 'is persisted' do
|
90
|
+
expect(subject).to be_persisted
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'is published' do
|
94
|
+
expect(subject.published?).to eql true
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'is a draft' do
|
98
|
+
expect(subject.draft?).to eql true
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'is trashed' do
|
102
|
+
expect(subject.trashed?).to eql true
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'has a `published_at` timestamp' do
|
106
|
+
expect(subject.published_at).to be_present
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'has a `trashed_at` timestamp' do
|
110
|
+
expect(subject.trashed_at).to be_present
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'has a `draft_id`' do
|
114
|
+
expect(subject.draft_id).to be_present
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'has a `draft`' do
|
118
|
+
expect(subject.draft).to be_present
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'has a `destroy` draft' do
|
122
|
+
expect(subject.draft.destroy?).to eql true
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'retains its original `name`' do
|
126
|
+
expect(subject.name).to eql 'Bob'
|
127
|
+
end
|
65
128
|
|
66
129
|
it 'keeps the item' do
|
67
130
|
expect { subject }.to_not change(Trashable, :count)
|
@@ -71,8 +134,8 @@ describe Trashable do
|
|
71
134
|
expect { subject }.to_not change(Draftsman::Draft.where(:id => trashable.draft_id), :count)
|
72
135
|
end
|
73
136
|
|
74
|
-
|
75
|
-
subject.draft.reify.name.
|
137
|
+
it "retains the updated draft's name in the draft" do
|
138
|
+
expect(subject.draft.reify.name).to eql 'Sam'
|
76
139
|
end
|
77
140
|
end
|
78
141
|
|
@@ -83,16 +146,46 @@ describe Trashable do
|
|
83
146
|
end
|
84
147
|
|
85
148
|
subject { trashable.draft_destroy; return trashable.reload }
|
86
|
-
|
87
|
-
it
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
149
|
+
|
150
|
+
it 'is persisted' do
|
151
|
+
expect(subject).to be_persisted
|
152
|
+
end
|
153
|
+
|
154
|
+
it 'is published' do
|
155
|
+
expect(subject.published?).to eql true
|
156
|
+
end
|
157
|
+
|
158
|
+
it 'is a draft' do
|
159
|
+
expect(subject.draft?).to eql true
|
160
|
+
end
|
161
|
+
|
162
|
+
it 'is trashed' do
|
163
|
+
expect(subject.trashed?).to eql true
|
164
|
+
end
|
165
|
+
|
166
|
+
it 'has a `published_at` timestamp' do
|
167
|
+
expect(subject.published_at).to be_present
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'has a `trashed_at` timestamp' do
|
171
|
+
expect(subject.trashed_at).to be_present
|
172
|
+
end
|
173
|
+
|
174
|
+
it 'has a `draft_id`' do
|
175
|
+
expect(subject.draft_id).to be_present
|
176
|
+
end
|
177
|
+
|
178
|
+
it 'has a `draft`' do
|
179
|
+
expect(subject.draft).to be_present
|
180
|
+
end
|
181
|
+
|
182
|
+
it 'has a `destroy` draft' do
|
183
|
+
expect(subject.draft.destroy?).to eql true
|
184
|
+
end
|
185
|
+
|
186
|
+
it 'retains its `name`' do
|
187
|
+
expect(subject.name).to eql 'Bob'
|
188
|
+
end
|
96
189
|
|
97
190
|
it 'keeps the item' do
|
98
191
|
expect { subject }.to_not change(Trashable, :count)
|
@@ -110,54 +203,60 @@ describe Trashable do
|
|
110
203
|
let!(:trashed_trashable) { Trashable.create :name => 'Ralph' }
|
111
204
|
|
112
205
|
# Not affected by this customization
|
113
|
-
describe
|
206
|
+
describe 'drafted' do
|
114
207
|
end
|
115
208
|
|
116
|
-
describe
|
209
|
+
describe 'live' do
|
117
210
|
before { trashed_trashable.draft_destroy }
|
118
211
|
subject { Trashable.live }
|
119
|
-
|
212
|
+
|
213
|
+
it 'returns 2 records' do
|
214
|
+
expect(subject.count).to eql 2
|
215
|
+
end
|
120
216
|
|
121
217
|
it 'does not raise an exception' do
|
122
218
|
expect { subject }.to_not raise_exception
|
123
219
|
end
|
124
220
|
|
125
221
|
it 'includes the drafted item' do
|
126
|
-
subject.
|
222
|
+
expect(subject).to include drafted_trashable
|
127
223
|
end
|
128
224
|
|
129
225
|
it 'includes the published item' do
|
130
|
-
subject.
|
226
|
+
expect(subject).to include published_trashable
|
131
227
|
end
|
132
228
|
|
133
229
|
it 'does not include the trashed item' do
|
134
|
-
subject.
|
230
|
+
expect(subject).to_not include trashed_trashable
|
135
231
|
end
|
136
232
|
end
|
137
233
|
|
138
234
|
# Not affected by this customization
|
139
|
-
describe
|
235
|
+
describe 'published' do
|
140
236
|
end
|
141
237
|
|
142
|
-
describe
|
238
|
+
describe 'trashed' do
|
143
239
|
before { trashed_trashable.draft_destroy }
|
144
240
|
subject { Trashable.trashed }
|
145
|
-
|
241
|
+
|
242
|
+
it 'returns 1 record' do
|
243
|
+
expect(subject.count).to eql 1
|
244
|
+
end
|
146
245
|
|
147
246
|
it 'does not raise an exception' do
|
148
247
|
expect { subject.load }.to_not raise_exception
|
149
248
|
end
|
150
249
|
|
151
250
|
it 'does not include the drafted item' do
|
152
|
-
subject.
|
251
|
+
expect(subject).to_not include drafted_trashable
|
153
252
|
end
|
154
253
|
|
155
254
|
it 'does not include the published item' do
|
156
|
-
subject.
|
255
|
+
expect(subject).to_not include published_trashable
|
157
256
|
end
|
158
257
|
|
159
258
|
it 'includes the trashed item' do
|
160
|
-
subject.
|
259
|
+
expect(subject).to include trashed_trashable
|
161
260
|
end
|
162
261
|
end
|
163
262
|
end
|
data/spec/models/vanilla_spec.rb
CHANGED
@@ -5,21 +5,38 @@ describe Vanilla do
|
|
5
5
|
let(:vanilla) { Vanilla.new :name => 'Bob' }
|
6
6
|
it { should be_draftable }
|
7
7
|
|
8
|
-
describe
|
8
|
+
describe 'draft_creation' do
|
9
9
|
subject do
|
10
10
|
vanilla.draft_creation
|
11
11
|
vanilla.reload
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
20
37
|
end
|
21
38
|
|
22
|
-
describe
|
39
|
+
describe 'draft_update' do
|
23
40
|
subject do
|
24
41
|
vanilla.draft_update
|
25
42
|
vanilla.reload
|
@@ -31,12 +48,29 @@ describe Vanilla do
|
|
31
48
|
vanilla.name = 'Sam'
|
32
49
|
end
|
33
50
|
|
34
|
-
it
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
51
|
+
it 'is persisted' do
|
52
|
+
expect(subject).to be_persisted
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'is a draft' do
|
56
|
+
expect(subject.draft?).to eql true
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'has a `draft_id`' do
|
60
|
+
expect(subject.draft_id).to be_present
|
61
|
+
end
|
62
|
+
|
63
|
+
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
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'has the original `name`' do
|
72
|
+
expect(subject.name).to eql 'Bob'
|
73
|
+
end
|
40
74
|
|
41
75
|
it 'creates a new draft' do
|
42
76
|
expect { subject }.to change(Draftsman::Draft, :count).by(1)
|
@@ -53,10 +87,21 @@ describe Vanilla do
|
|
53
87
|
vanilla.name = 'Bob'
|
54
88
|
end
|
55
89
|
|
56
|
-
it
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
60
105
|
|
61
106
|
it 'destroys the draft' do
|
62
107
|
expect { subject }.to change(Draftsman::Draft.where(:id => vanilla.draft_id), :count).by(-1)
|
@@ -68,32 +113,64 @@ describe Vanilla do
|
|
68
113
|
|
69
114
|
context 'with changes' do
|
70
115
|
before { vanilla.name = 'Sam' }
|
71
|
-
|
72
|
-
it
|
73
|
-
|
74
|
-
|
75
|
-
|
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
|
76
136
|
|
77
137
|
it 'updates the existing draft' do
|
78
138
|
expect { subject }.to_not change(Draftsman::Draft.where(:id => vanilla.draft_id), :count)
|
79
139
|
end
|
80
140
|
|
81
|
-
|
82
|
-
subject.draft.reify.name.
|
141
|
+
it "updates the draft's `name`" do
|
142
|
+
expect(subject.draft.reify.name).to eql 'Sam'
|
83
143
|
end
|
84
144
|
|
85
145
|
it 'has a `create` draft' do
|
86
|
-
subject.draft.
|
146
|
+
expect(subject.draft.create?).to eql true
|
87
147
|
end
|
88
148
|
end
|
89
149
|
|
90
150
|
context 'with no changes' do
|
91
|
-
it
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
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
|
97
174
|
|
98
175
|
it "doesn't change the number of drafts" do
|
99
176
|
expect { subject }.to_not change(Draftsman::Draft.where(:id => vanilla.draft_id), :count)
|
@@ -112,60 +189,101 @@ describe Vanilla do
|
|
112
189
|
|
113
190
|
context 'with changes' do
|
114
191
|
before { vanilla.name = 'Steve' }
|
115
|
-
|
116
|
-
it
|
117
|
-
|
118
|
-
|
119
|
-
|
192
|
+
|
193
|
+
it 'is persisted' do
|
194
|
+
expect(subject).to be_persisted
|
195
|
+
end
|
196
|
+
|
197
|
+
it 'is a draft' do
|
198
|
+
expect(subject.draft?).to eql true
|
199
|
+
end
|
200
|
+
|
201
|
+
it 'has a `draft_id`' do
|
202
|
+
expect(subject.draft_id).to be_present
|
203
|
+
end
|
204
|
+
|
205
|
+
it 'has a `draft`' do
|
206
|
+
expect(subject.draft).to be_present
|
207
|
+
end
|
208
|
+
|
209
|
+
it 'has the original `name`' do
|
210
|
+
expect(subject.name).to eql 'Bob'
|
211
|
+
end
|
120
212
|
|
121
213
|
it 'updates the existing draft' do
|
122
214
|
expect { subject }.to_not change(Draftsman::Draft.where(:id => vanilla.draft_id), :count)
|
123
215
|
end
|
124
216
|
|
125
|
-
|
126
|
-
subject.draft.reify.name.
|
217
|
+
it "updates the draft's `name`" do
|
218
|
+
expect(subject.draft.reify.name).to eql 'Steve'
|
127
219
|
end
|
128
220
|
|
129
221
|
it 'has a `create` draft' do
|
130
|
-
subject.draft.update
|
222
|
+
expect(subject.draft.update?).to eql true
|
131
223
|
end
|
132
224
|
end
|
133
225
|
|
134
226
|
context 'with no changes' do
|
135
|
-
it
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
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
|
141
250
|
|
142
251
|
it "doesn't change the number of drafts" do
|
143
252
|
expect { subject }.to_not change(Draftsman::Draft.where(:id => vanilla.draft_id), :count)
|
144
253
|
end
|
145
254
|
|
146
|
-
|
147
|
-
subject.draft.reify.name.
|
255
|
+
it "does not update the draft's `name`" do
|
256
|
+
expect(subject.draft.reify.name).to eql 'Sam'
|
148
257
|
end
|
149
258
|
end
|
150
259
|
end
|
151
260
|
end
|
152
261
|
|
153
262
|
# Not applicable to this customization
|
154
|
-
describe
|
263
|
+
describe 'draft_destroy' do
|
155
264
|
end
|
156
265
|
|
157
266
|
describe 'scopes' do
|
158
267
|
let!(:drafted_vanilla) { vanilla.draft_creation; return vanilla }
|
159
268
|
let!(:published_vanilla) { Vanilla.create :name => 'Jane', :published_at => Time.now }
|
160
269
|
|
161
|
-
describe
|
270
|
+
describe 'drafted' do
|
162
271
|
subject { Vanilla.drafted }
|
163
|
-
|
164
|
-
it
|
165
|
-
|
272
|
+
|
273
|
+
it 'returns 1 record' do
|
274
|
+
expect(subject.count).to eql 1
|
275
|
+
end
|
276
|
+
|
277
|
+
it 'includes the drafted record' do
|
278
|
+
expect(subject).to include drafted_vanilla
|
279
|
+
end
|
280
|
+
|
281
|
+
it 'does not include the published record' do
|
282
|
+
expect(subject).to_not include published_vanilla
|
283
|
+
end
|
166
284
|
end
|
167
285
|
|
168
|
-
describe
|
286
|
+
describe 'live' do
|
169
287
|
subject { Vanilla.live }
|
170
288
|
|
171
289
|
it 'raises an exception' do
|
@@ -173,14 +291,23 @@ describe Vanilla do
|
|
173
291
|
end
|
174
292
|
end
|
175
293
|
|
176
|
-
describe
|
294
|
+
describe 'published' do
|
177
295
|
subject { Vanilla.published }
|
178
|
-
|
179
|
-
it
|
180
|
-
|
296
|
+
|
297
|
+
it 'returns 1 record' do
|
298
|
+
expect(subject.count).to eql 1
|
299
|
+
end
|
300
|
+
|
301
|
+
it 'does not include the drafted record' do
|
302
|
+
expect(subject).to_not include drafted_vanilla
|
303
|
+
end
|
304
|
+
|
305
|
+
it 'includes the published record' do
|
306
|
+
expect(subject).to include published_vanilla
|
307
|
+
end
|
181
308
|
end
|
182
309
|
|
183
|
-
describe
|
310
|
+
describe 'trashed' do
|
184
311
|
subject { Vanilla.trashed }
|
185
312
|
|
186
313
|
it 'raises an exception' do
|