couchrest_model 2.1.0.rc1 → 2.2.0.beta1
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 -1
- data/.travis.yml +15 -4
- data/Gemfile.activesupport-4.x +4 -0
- data/Gemfile.activesupport-5.x +4 -0
- data/README.md +2 -0
- data/VERSION +1 -1
- data/couchrest_model.gemspec +3 -2
- data/history.md +14 -1
- data/lib/couchrest/model/associations.rb +3 -8
- data/lib/couchrest/model/base.rb +15 -7
- data/lib/couchrest/model/casted_array.rb +22 -34
- data/lib/couchrest/model/configuration.rb +2 -0
- data/lib/couchrest/model/design.rb +4 -3
- data/lib/couchrest/model/designs/view.rb +37 -32
- data/lib/couchrest/model/dirty.rb +93 -19
- data/lib/couchrest/model/embeddable.rb +2 -14
- data/lib/couchrest/model/extended_attachments.rb +2 -4
- data/lib/couchrest/model/persistence.rb +14 -17
- data/lib/couchrest/model/properties.rb +46 -54
- data/lib/couchrest/model/property.rb +0 -3
- data/lib/couchrest/model/proxyable.rb +20 -4
- data/lib/couchrest/model/validations/uniqueness.rb +4 -1
- data/lib/couchrest_model.rb +2 -2
- data/spec/fixtures/models/article.rb +1 -1
- data/spec/fixtures/models/card.rb +2 -1
- data/spec/fixtures/models/person.rb +1 -0
- data/spec/fixtures/models/project.rb +3 -0
- data/spec/unit/assocations_spec.rb +73 -73
- data/spec/unit/attachment_spec.rb +34 -34
- data/spec/unit/base_spec.rb +102 -102
- data/spec/unit/casted_array_spec.rb +7 -7
- data/spec/unit/casted_spec.rb +7 -7
- data/spec/unit/configuration_spec.rb +11 -11
- data/spec/unit/connection_spec.rb +30 -30
- data/spec/unit/core_extensions/{time_parsing.rb → time_parsing_spec.rb} +21 -21
- data/spec/unit/design_spec.rb +38 -38
- data/spec/unit/designs/design_mapper_spec.rb +26 -26
- data/spec/unit/designs/migrations_spec.rb +13 -13
- data/spec/unit/designs/view_spec.rb +319 -274
- data/spec/unit/designs_spec.rb +39 -39
- data/spec/unit/dirty_spec.rb +188 -103
- data/spec/unit/embeddable_spec.rb +119 -117
- data/spec/unit/inherited_spec.rb +4 -4
- data/spec/unit/persistence_spec.rb +122 -122
- data/spec/unit/properties_spec.rb +466 -16
- data/spec/unit/property_protection_spec.rb +32 -32
- data/spec/unit/property_spec.rb +45 -436
- data/spec/unit/proxyable_spec.rb +140 -82
- data/spec/unit/subclass_spec.rb +14 -14
- data/spec/unit/translations_spec.rb +5 -5
- data/spec/unit/typecast_spec.rb +131 -131
- data/spec/unit/utils/migrate_spec.rb +2 -2
- data/spec/unit/validations_spec.rb +31 -31
- metadata +27 -12
- data/lib/couchrest/model/casted_hash.rb +0 -84
data/spec/unit/inherited_spec.rb
CHANGED
@@ -18,15 +18,15 @@ end
|
|
18
18
|
|
19
19
|
describe "Using chained inheritance without CouchRest::Model::Base" do
|
20
20
|
it "should preserve inheritable attributes" do
|
21
|
-
PlainParent.foo.
|
22
|
-
PlainChild.foo.
|
21
|
+
expect(PlainParent.foo).to eq(:bar)
|
22
|
+
expect(PlainChild.foo).to eq(:bar)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "Using chained inheritance with CouchRest::Model::Base" do
|
27
27
|
it "should preserve inheritable attributes" do
|
28
|
-
ExtendedParent.foo.
|
29
|
-
ExtendedChild.foo.
|
28
|
+
expect(ExtendedParent.foo).to eq(:bar)
|
29
|
+
expect(ExtendedChild.foo).to eq(:bar)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -11,17 +11,17 @@ describe CouchRest::Model::Persistence do
|
|
11
11
|
|
12
12
|
it "should instantialize" do
|
13
13
|
doc = Article.build_from_database({'_id' => 'testitem1', '_rev' => 123, 'couchrest-type' => 'Article', 'name' => 'my test'})
|
14
|
-
doc.class.
|
14
|
+
expect(doc.class).to eql(Article)
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should instantialize of same class if no couchrest-type included from DB" do
|
18
18
|
doc = Article.build_from_database({'_id' => 'testitem1', '_rev' => 123, 'name' => 'my test'})
|
19
|
-
doc.class.
|
19
|
+
expect(doc.class).to eql(Article)
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should instantiate document of different type" do
|
23
23
|
doc = Article.build_from_database({'_id' => 'testitem2', '_rev' => 123, Article.model_type_key => 'WithTemplateAndUniqueID', 'name' => 'my test'})
|
24
|
-
doc.class.
|
24
|
+
expect(doc.class).to eql(WithTemplateAndUniqueID)
|
25
25
|
end
|
26
26
|
|
27
27
|
end
|
@@ -32,16 +32,16 @@ describe CouchRest::Model::Persistence do
|
|
32
32
|
@obj.name = "should be easily saved and retrieved"
|
33
33
|
@obj.save!
|
34
34
|
saved_obj = WithDefaultValues.get!(@obj.id)
|
35
|
-
saved_obj.
|
35
|
+
expect(saved_obj).not_to be_nil
|
36
36
|
end
|
37
37
|
|
38
38
|
it "should parse the Time attributes automatically" do
|
39
39
|
@obj.name = "should parse the Time attributes automatically"
|
40
|
-
@obj.set_by_proc.
|
40
|
+
expect(@obj.set_by_proc).to be_an_instance_of(Time)
|
41
41
|
@obj.save
|
42
|
-
@obj.set_by_proc.
|
42
|
+
expect(@obj.set_by_proc).to be_an_instance_of(Time)
|
43
43
|
saved_obj = WithDefaultValues.get(@obj.id)
|
44
|
-
saved_obj.set_by_proc.
|
44
|
+
expect(saved_obj.set_by_proc).to be_an_instance_of(Time)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -52,49 +52,49 @@ describe CouchRest::Model::Persistence do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
it "should accept true or false on save for validation" do
|
55
|
-
@sobj.
|
55
|
+
expect(@sobj).to receive(:valid?)
|
56
56
|
@sobj.save(true)
|
57
57
|
end
|
58
58
|
|
59
59
|
it "should accept hash with validation option" do
|
60
|
-
@sobj.
|
60
|
+
expect(@sobj).to receive(:valid?)
|
61
61
|
@sobj.save(:validate => true)
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should not call validation when option is false" do
|
65
|
-
@sobj.
|
65
|
+
expect(@sobj).not_to receive(:valid?)
|
66
66
|
@sobj.save(false)
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should not call validation when option :validate is false" do
|
70
|
-
@sobj.
|
70
|
+
expect(@sobj).not_to receive(:valid?)
|
71
71
|
@sobj.save(:validate => false)
|
72
72
|
end
|
73
73
|
|
74
74
|
it "should instantialize and save a document" do
|
75
75
|
article = Article.create(:title => 'my test')
|
76
|
-
article.title.
|
77
|
-
article.
|
76
|
+
expect(article.title).to eq('my test')
|
77
|
+
expect(article).not_to be_new
|
78
78
|
end
|
79
79
|
|
80
80
|
it "yields new instance to block before saving (#create)" do
|
81
81
|
article = Article.create{|a| a.title = 'my create init block test'}
|
82
|
-
article.title.
|
83
|
-
article.
|
82
|
+
expect(article.title).to eq('my create init block test')
|
83
|
+
expect(article).not_to be_new
|
84
84
|
end
|
85
85
|
|
86
86
|
it "yields new instance to block before saving (#create!)" do
|
87
87
|
article = Article.create{|a| a.title = 'my create bang init block test'}
|
88
|
-
article.title.
|
89
|
-
article.
|
88
|
+
expect(article.title).to eq('my create bang init block test')
|
89
|
+
expect(article).not_to be_new
|
90
90
|
end
|
91
91
|
|
92
92
|
it "should trigger the create callbacks" do
|
93
93
|
doc = WithCallBacks.create(:name => 'my other test')
|
94
|
-
doc.run_before_create.
|
95
|
-
doc.run_after_create.
|
96
|
-
doc.run_before_save.
|
97
|
-
doc.run_after_save.
|
94
|
+
expect(doc.run_before_create).to be_truthy
|
95
|
+
expect(doc.run_after_create).to be_truthy
|
96
|
+
expect(doc.run_before_save).to be_truthy
|
97
|
+
expect(doc.run_after_save).to be_truthy
|
98
98
|
end
|
99
99
|
|
100
100
|
end
|
@@ -102,46 +102,46 @@ describe CouchRest::Model::Persistence do
|
|
102
102
|
describe "saving a model" do
|
103
103
|
before(:all) do
|
104
104
|
@sobj = Basic.new
|
105
|
-
@sobj.save.
|
105
|
+
expect(@sobj.save).to be_truthy
|
106
106
|
end
|
107
107
|
|
108
108
|
it "should save the doc" do
|
109
109
|
doc = Basic.get(@sobj.id)
|
110
|
-
doc['_id'].
|
110
|
+
expect(doc['_id']).to eq(@sobj.id)
|
111
111
|
end
|
112
112
|
|
113
113
|
it "should be set for resaving" do
|
114
114
|
rev = @obj.rev
|
115
115
|
@sobj['another-key'] = "some value"
|
116
116
|
@sobj.save
|
117
|
-
@sobj.rev.
|
117
|
+
expect(@sobj.rev).not_to eq(rev)
|
118
118
|
end
|
119
119
|
|
120
120
|
it "should set the id" do
|
121
|
-
@sobj.id.
|
121
|
+
expect(@sobj.id).to be_an_instance_of(String)
|
122
122
|
end
|
123
123
|
|
124
124
|
it "should set the type" do
|
125
|
-
@sobj[@sobj.model_type_key].
|
125
|
+
expect(@sobj[@sobj.model_type_key]).to eq('Basic')
|
126
126
|
end
|
127
127
|
|
128
128
|
it "should accept true or false on save for validation" do
|
129
|
-
@sobj.
|
129
|
+
expect(@sobj).to receive(:valid?)
|
130
130
|
@sobj.save(true)
|
131
131
|
end
|
132
132
|
|
133
133
|
it "should accept hash with validation option" do
|
134
|
-
@sobj.
|
134
|
+
expect(@sobj).to receive(:valid?)
|
135
135
|
@sobj.save(:validate => true)
|
136
136
|
end
|
137
137
|
|
138
138
|
it "should not call validation when option is false" do
|
139
|
-
@sobj.
|
139
|
+
expect(@sobj).not_to receive(:valid?)
|
140
140
|
@sobj.save(false)
|
141
141
|
end
|
142
142
|
|
143
143
|
it "should not call validation when option :validate is false" do
|
144
|
-
@sobj.
|
144
|
+
expect(@sobj).not_to receive(:valid?)
|
145
145
|
@sobj.save(:validate => false)
|
146
146
|
end
|
147
147
|
|
@@ -152,12 +152,12 @@ describe CouchRest::Model::Persistence do
|
|
152
152
|
end
|
153
153
|
|
154
154
|
it "should return true if save the document" do
|
155
|
-
@sobj.save
|
155
|
+
expect(@sobj.save!).to be_truthy
|
156
156
|
end
|
157
157
|
|
158
158
|
it "should raise error if don't save the document" do
|
159
159
|
@sobj.first_name = nil
|
160
|
-
|
160
|
+
expect { @sobj.save! }.to raise_error(CouchRest::Model::Errors::Validations)
|
161
161
|
end
|
162
162
|
|
163
163
|
end
|
@@ -171,41 +171,41 @@ describe CouchRest::Model::Persistence do
|
|
171
171
|
end
|
172
172
|
|
173
173
|
it "should be a new document" do
|
174
|
-
@art.
|
175
|
-
@art.title.
|
174
|
+
expect(@art).to be_new
|
175
|
+
expect(@art.title).to be_nil
|
176
176
|
end
|
177
177
|
|
178
178
|
it "should require the title" do
|
179
|
-
|
179
|
+
expect{@art.save}.to raise_error(/unique_id cannot be nil/)
|
180
180
|
@art.title = 'This is the title'
|
181
|
-
@art.save.
|
181
|
+
expect(@art.save).to be_truthy
|
182
182
|
end
|
183
183
|
|
184
184
|
it "should not change the slug on update" do
|
185
185
|
@art.title = 'This is the title'
|
186
|
-
@art.save.
|
186
|
+
expect(@art.save).to be_truthy
|
187
187
|
@art.title = 'new title'
|
188
|
-
@art.save.
|
189
|
-
@art.slug.
|
188
|
+
expect(@art.save).to be_truthy
|
189
|
+
expect(@art.slug).to eq('this-is-the-title')
|
190
190
|
end
|
191
191
|
|
192
192
|
it "should raise an error when the slug is taken" do
|
193
193
|
@art.title = 'This is the title'
|
194
|
-
@art.save.
|
194
|
+
expect(@art.save).to be_truthy
|
195
195
|
@art2 = Article.new(:title => 'This is the title!')
|
196
|
-
|
196
|
+
expect{@art2.save}.to raise_error(/409 Conflict/)
|
197
197
|
end
|
198
198
|
|
199
199
|
it "should set the slug" do
|
200
200
|
@art.title = 'This is the title'
|
201
|
-
@art.save.
|
202
|
-
@art.slug.
|
201
|
+
expect(@art.save).to be_truthy
|
202
|
+
expect(@art.slug).to eq('this-is-the-title')
|
203
203
|
end
|
204
204
|
|
205
205
|
it "should set the id" do
|
206
206
|
@art.title = 'This is the title'
|
207
|
-
@art.save.
|
208
|
-
@art.id.
|
207
|
+
expect(@art.save).to be_truthy
|
208
|
+
expect(@art.id).to eq('this-is-the-title')
|
209
209
|
end
|
210
210
|
end
|
211
211
|
|
@@ -217,48 +217,48 @@ describe CouchRest::Model::Persistence do
|
|
217
217
|
end
|
218
218
|
|
219
219
|
it "should require the field" do
|
220
|
-
|
220
|
+
expect{@templated.save}.to raise_error(/unique_id cannot be nil/)
|
221
221
|
@templated['slug'] = 'very-important'
|
222
|
-
@templated.save.
|
222
|
+
expect(@templated.save).to be_truthy
|
223
223
|
end
|
224
224
|
|
225
225
|
it "should save with the id" do
|
226
226
|
@templated['slug'] = 'very-important'
|
227
|
-
@templated.save.
|
227
|
+
expect(@templated.save).to be_truthy
|
228
228
|
t = WithTemplateAndUniqueID.get('very-important')
|
229
|
-
t.
|
229
|
+
expect(t).to eq(@templated)
|
230
230
|
end
|
231
231
|
|
232
232
|
it "should not change the id on update" do
|
233
233
|
@templated['slug'] = 'very-important'
|
234
|
-
@templated.save.
|
234
|
+
expect(@templated.save).to be_truthy
|
235
235
|
@templated['slug'] = 'not-important'
|
236
|
-
@templated.save.
|
236
|
+
expect(@templated.save).to be_truthy
|
237
237
|
t = WithTemplateAndUniqueID.get('very-important')
|
238
|
-
t.id.
|
238
|
+
expect(t.id).to eq(@templated.id)
|
239
239
|
end
|
240
240
|
|
241
241
|
it "should raise an error when the id is taken" do
|
242
242
|
@templated['slug'] = 'very-important'
|
243
|
-
@templated.save.
|
244
|
-
|
243
|
+
expect(@templated.save).to be_truthy
|
244
|
+
expect{WithTemplateAndUniqueID.new('slug' => 'very-important').save}.to raise_error(/409 Conflict/)
|
245
245
|
end
|
246
246
|
|
247
247
|
it "should set the id" do
|
248
248
|
@templated['slug'] = 'very-important'
|
249
|
-
@templated.save.
|
250
|
-
@templated.id.
|
249
|
+
expect(@templated.save).to be_truthy
|
250
|
+
expect(@templated.id).to eq('very-important')
|
251
251
|
end
|
252
252
|
end
|
253
253
|
|
254
254
|
describe "destroying an instance" do
|
255
255
|
before(:each) do
|
256
256
|
@dobj = Event.new
|
257
|
-
@dobj.save.
|
257
|
+
expect(@dobj.save).to be_truthy
|
258
258
|
end
|
259
259
|
it "should return true" do
|
260
260
|
result = @dobj.destroy
|
261
|
-
result.
|
261
|
+
expect(result).to be_truthy
|
262
262
|
end
|
263
263
|
it "should make it go away" do
|
264
264
|
@dobj.destroy
|
@@ -267,17 +267,17 @@ describe CouchRest::Model::Persistence do
|
|
267
267
|
it "should freeze the object" do
|
268
268
|
@dobj.destroy
|
269
269
|
# In Ruby 1.9.2 this raises RuntimeError, in 1.8.7 TypeError, D'OH!
|
270
|
-
|
270
|
+
expect { @dobj.subject = "Test" }.to raise_error(StandardError)
|
271
271
|
end
|
272
272
|
it "trying to save after should fail" do
|
273
273
|
@dobj.destroy
|
274
|
-
|
274
|
+
expect { @dobj.save }.to raise_error(StandardError)
|
275
275
|
expect(Basic.get(@dobj.id)).to be_nil
|
276
276
|
end
|
277
277
|
it "should make destroyed? true" do
|
278
|
-
@dobj.destroyed
|
278
|
+
expect(@dobj.destroyed?).to be_falsey
|
279
279
|
@dobj.destroy
|
280
|
-
@dobj.destroyed
|
280
|
+
expect(@dobj.destroyed?).to be_truthy
|
281
281
|
end
|
282
282
|
end
|
283
283
|
|
@@ -289,18 +289,18 @@ describe CouchRest::Model::Persistence do
|
|
289
289
|
end
|
290
290
|
it "should load and instantiate it" do
|
291
291
|
foundart = Article.get @art.id
|
292
|
-
foundart.title.
|
292
|
+
expect(foundart.title).to eq("All About Getting")
|
293
293
|
end
|
294
294
|
it "should load and instantiate with find" do
|
295
295
|
foundart = Article.find @art.id
|
296
|
-
foundart.title.
|
296
|
+
expect(foundart.title).to eq("All About Getting")
|
297
297
|
end
|
298
298
|
it "should return nil if `get` is used and the document doesn't exist" do
|
299
299
|
foundart = Article.get 'matt aimonetti'
|
300
|
-
foundart.
|
300
|
+
expect(foundart).to be_nil
|
301
301
|
end
|
302
302
|
it "should return nil if a blank id is requested" do
|
303
|
-
Article.get("").
|
303
|
+
expect(Article.get("")).to be_nil
|
304
304
|
end
|
305
305
|
it "should raise an error if `get!` is used and the document doesn't exist" do
|
306
306
|
expect{ Article.get!('matt aimonetti') }.to raise_error(CouchRest::Model::DocumentNotFound)
|
@@ -313,7 +313,7 @@ describe CouchRest::Model::Persistence do
|
|
313
313
|
end
|
314
314
|
context "without a database" do
|
315
315
|
it "should cause #get to raise an error" do
|
316
|
-
Article.
|
316
|
+
allow(Article).to receive(:database).and_return(nil)
|
317
317
|
expect{ Article.get('foo') }.to raise_error(CouchRest::Model::DatabaseNotDefined)
|
318
318
|
expect{ Article.get!('foo') }.to raise_error(CouchRest::Model::DatabaseNotDefined)
|
319
319
|
end
|
@@ -339,10 +339,10 @@ describe CouchRest::Model::Persistence do
|
|
339
339
|
@course = Course.get r['id']
|
340
340
|
end
|
341
341
|
it "should load the course" do
|
342
|
-
@course.title.
|
342
|
+
expect(@course.title).to eq("Metaphysics 200")
|
343
343
|
end
|
344
344
|
it "should instantiate them as such" do
|
345
|
-
@course["questions"][0].a[0].
|
345
|
+
expect(@course["questions"][0].a[0]).to eq("beast")
|
346
346
|
end
|
347
347
|
end
|
348
348
|
|
@@ -354,83 +354,83 @@ describe CouchRest::Model::Persistence do
|
|
354
354
|
|
355
355
|
describe "validation" do
|
356
356
|
it "should run before_validation before validating" do
|
357
|
-
@doc.run_before_validation.
|
358
|
-
@doc.
|
359
|
-
@doc.run_before_validation.
|
357
|
+
expect(@doc.run_before_validation).to be_nil
|
358
|
+
expect(@doc).to be_valid
|
359
|
+
expect(@doc.run_before_validation).to be_truthy
|
360
360
|
end
|
361
361
|
it "should run after_validation after validating" do
|
362
|
-
@doc.run_after_validation.
|
363
|
-
@doc.
|
364
|
-
@doc.run_after_validation.
|
362
|
+
expect(@doc.run_after_validation).to be_nil
|
363
|
+
expect(@doc).to be_valid
|
364
|
+
expect(@doc.run_after_validation).to be_truthy
|
365
365
|
end
|
366
366
|
end
|
367
367
|
|
368
368
|
describe "with contextual validation on ”create”" do
|
369
369
|
it "should validate only within ”create” context" do
|
370
370
|
doc = WithContextualValidationOnCreate.new
|
371
|
-
doc.save.
|
371
|
+
expect(doc.save).to be_falsey
|
372
372
|
doc.name = "Alice"
|
373
|
-
doc.save.
|
373
|
+
expect(doc.save).to be_truthy
|
374
374
|
|
375
|
-
doc.update_attributes(:name => nil).
|
375
|
+
expect(doc.update_attributes(:name => nil)).to be_truthy
|
376
376
|
end
|
377
377
|
end
|
378
378
|
|
379
379
|
describe "with contextual validation on ”update”" do
|
380
380
|
it "should validate only within ”update” context" do
|
381
381
|
doc = WithContextualValidationOnUpdate.new
|
382
|
-
doc.save.
|
382
|
+
expect(doc.save).to be_truthy
|
383
383
|
|
384
|
-
doc.update_attributes(:name => nil).
|
385
|
-
doc.update_attributes(:name => "Bob").
|
384
|
+
expect(doc.update_attributes(:name => nil)).to be_falsey
|
385
|
+
expect(doc.update_attributes(:name => "Bob")).to be_truthy
|
386
386
|
end
|
387
387
|
end
|
388
388
|
|
389
389
|
describe "save" do
|
390
390
|
it "should run the after filter after saving" do
|
391
|
-
@doc.run_after_save.
|
392
|
-
@doc.save.
|
393
|
-
@doc.run_after_save.
|
391
|
+
expect(@doc.run_after_save).to be_nil
|
392
|
+
expect(@doc.save).to be_truthy
|
393
|
+
expect(@doc.run_after_save).to be_truthy
|
394
394
|
end
|
395
395
|
it "should run the grouped callbacks before saving" do
|
396
|
-
@doc.run_one.
|
397
|
-
@doc.run_two.
|
398
|
-
@doc.run_three.
|
399
|
-
@doc.save.
|
400
|
-
@doc.run_one.
|
401
|
-
@doc.run_two.
|
402
|
-
@doc.run_three.
|
396
|
+
expect(@doc.run_one).to be_nil
|
397
|
+
expect(@doc.run_two).to be_nil
|
398
|
+
expect(@doc.run_three).to be_nil
|
399
|
+
expect(@doc.save).to be_truthy
|
400
|
+
expect(@doc.run_one).to be_truthy
|
401
|
+
expect(@doc.run_two).to be_truthy
|
402
|
+
expect(@doc.run_three).to be_truthy
|
403
403
|
end
|
404
404
|
it "should not run conditional callbacks" do
|
405
405
|
@doc.run_it = false
|
406
|
-
@doc.save.
|
407
|
-
@doc.conditional_one.
|
408
|
-
@doc.conditional_two.
|
406
|
+
expect(@doc.save).to be_truthy
|
407
|
+
expect(@doc.conditional_one).to be_nil
|
408
|
+
expect(@doc.conditional_two).to be_nil
|
409
409
|
end
|
410
410
|
it "should run conditional callbacks" do
|
411
411
|
@doc.run_it = true
|
412
|
-
@doc.save.
|
413
|
-
@doc.conditional_one.
|
414
|
-
@doc.conditional_two.
|
412
|
+
expect(@doc.save).to be_truthy
|
413
|
+
expect(@doc.conditional_one).to be_truthy
|
414
|
+
expect(@doc.conditional_two).to be_truthy
|
415
415
|
end
|
416
416
|
end
|
417
417
|
describe "create" do
|
418
418
|
it "should run the before save filter when creating" do
|
419
|
-
@doc.run_before_save.
|
420
|
-
@doc.create.
|
421
|
-
@doc.run_before_save.
|
419
|
+
expect(@doc.run_before_save).to be_nil
|
420
|
+
expect(@doc.create).not_to be_nil
|
421
|
+
expect(@doc.run_before_save).to be_truthy
|
422
422
|
end
|
423
423
|
it "should run the before create filter" do
|
424
|
-
@doc.run_before_create.
|
425
|
-
@doc.create.
|
424
|
+
expect(@doc.run_before_create).to be_nil
|
425
|
+
expect(@doc.create).not_to be_nil
|
426
426
|
@doc.create
|
427
|
-
@doc.run_before_create.
|
427
|
+
expect(@doc.run_before_create).to be_truthy
|
428
428
|
end
|
429
429
|
it "should run the after create filter" do
|
430
|
-
@doc.run_after_create.
|
431
|
-
@doc.create.
|
430
|
+
expect(@doc.run_after_create).to be_nil
|
431
|
+
expect(@doc.create).not_to be_nil
|
432
432
|
@doc.create
|
433
|
-
@doc.run_after_create.
|
433
|
+
expect(@doc.run_after_create).to be_truthy
|
434
434
|
end
|
435
435
|
end
|
436
436
|
describe "update" do
|
@@ -439,19 +439,19 @@ describe CouchRest::Model::Persistence do
|
|
439
439
|
@doc.save
|
440
440
|
end
|
441
441
|
it "should run the before update filter when updating an existing document" do
|
442
|
-
@doc.run_before_update.
|
442
|
+
expect(@doc.run_before_update).to be_nil
|
443
443
|
@doc.update
|
444
|
-
@doc.run_before_update.
|
444
|
+
expect(@doc.run_before_update).to be_truthy
|
445
445
|
end
|
446
446
|
it "should run the after update filter when updating an existing document" do
|
447
|
-
@doc.run_after_update.
|
447
|
+
expect(@doc.run_after_update).to be_nil
|
448
448
|
@doc.update
|
449
|
-
@doc.run_after_update.
|
449
|
+
expect(@doc.run_after_update).to be_truthy
|
450
450
|
end
|
451
451
|
it "should run the before update filter when saving an existing document" do
|
452
|
-
@doc.run_before_update.
|
452
|
+
expect(@doc.run_before_update).to be_nil
|
453
453
|
@doc.save
|
454
|
-
@doc.run_before_update.
|
454
|
+
expect(@doc.run_before_update).to be_truthy
|
455
455
|
end
|
456
456
|
|
457
457
|
end
|
@@ -461,35 +461,35 @@ describe CouchRest::Model::Persistence do
|
|
461
461
|
describe "#reload" do
|
462
462
|
it "reloads defined attributes" do
|
463
463
|
i = Article.create!(:title => "Reload when changed")
|
464
|
-
i.title.
|
464
|
+
expect(i.title).to eq("Reload when changed")
|
465
465
|
|
466
466
|
i.title = "..."
|
467
|
-
i.title.
|
467
|
+
expect(i.title).to eq("...")
|
468
468
|
|
469
469
|
i.reload
|
470
|
-
i.title.
|
470
|
+
expect(i.title).to eq("Reload when changed")
|
471
471
|
end
|
472
472
|
|
473
473
|
it "reloads defined attributes set to nil" do
|
474
474
|
i = Article.create!(:title => "Reload when nil")
|
475
|
-
i.title.
|
475
|
+
expect(i.title).to eq("Reload when nil")
|
476
476
|
|
477
477
|
i.title = nil
|
478
|
-
i.title.
|
478
|
+
expect(i.title).to be_nil
|
479
479
|
|
480
480
|
i.reload
|
481
|
-
i.title.
|
481
|
+
expect(i.title).to eq("Reload when nil")
|
482
482
|
end
|
483
483
|
|
484
484
|
it "returns self" do
|
485
485
|
i = Article.create!(:title => "Reload return self")
|
486
|
-
i.reload.
|
486
|
+
expect(i.reload).to be(i)
|
487
487
|
end
|
488
488
|
end
|
489
489
|
|
490
490
|
describe ".model_type_value" do
|
491
491
|
it "should always return string value of class" do
|
492
|
-
Article.model_type_value.
|
492
|
+
expect(Article.model_type_value).to eql('Article')
|
493
493
|
end
|
494
494
|
|
495
495
|
describe "usage" do
|
@@ -505,8 +505,8 @@ describe CouchRest::Model::Persistence do
|
|
505
505
|
obj = klass.build_from_database(
|
506
506
|
'_id' => '1234', 'type' => 'something_else', 'name' => 'Test'
|
507
507
|
)
|
508
|
-
obj['type'].
|
509
|
-
obj.name.
|
508
|
+
expect(obj['type']).to eql('something_else')
|
509
|
+
expect(obj.name).to eql('Test')
|
510
510
|
end
|
511
511
|
it "should fail if different model type value provided" do
|
512
512
|
expect {
|